Kul med PIC församling - episod 21 (3 / 5 steg)
Steg 3: Data vågform
Data vågform tidpunkten är Visa ovan. Till skillnad från IR-detektorn där allt vi gjorde var monitor för inkommande data pulser, kräver DHT sensorerna en trigger puls från PIC innan de skickar data. Som liknar ultraljud sensorn som vi används i Episode 3 Förutom att DHT använder bara en PIN-kod för både utlösaren och svar. Eftersom det är ett 1-wire gränssnitt behöver PIC programvara ändra definitionen av den externa avbryta pin i farten så att den kan fungera både indata och utdata under kommunikation sekvensen. Varje gång en uppdatering önskas PIC kommer att definiera PIN-koden som en I/O utgång och sedan ändra tillbaka till den externa avbryta input för att ta emot data från DHT. Allt detta återspeglas i vågformen. Inledningsvis skickar PIC ut en låg puls på minst 18 ms i längd. Efter att det växlar stiftet tillbaka till indata och 4.7 k pull-up resistor beskrivs i maskinvaruavsnittet säkerställer att DHT nu ser nivån krävs hög logik innan kommer den att svara. Liknar IR-sensorn i Episode 2, DHT skickar en start av meddelande puls (80 US låg följt av 80 US hög). De efterföljande data pulserna börjar alltid med en 50 USA låg följt av antingen en 26 oss hög puls (databit = 0) eller av en 70 oss hög puls (databit = 1).
Komplett dataströmmen från DHT består av 40 bitar. De första 16 bitarna är luftfuktighetsdata, de andra 16 bitarna är temperaturdata och de sista 8 bitarna är en meddelande kontrollsumma. I DHT-11, de första 8 bitarna är ett heltalsvärde för fuktigheten och de andra 8 bitarna är nollor. De tredje 8 bitarna är ett heltalsvärde för temperaturen och de fjärde 8 bitarna är noll. Som gör livet ganska lätt i programvaran. Eftersom DHT22/AM2302 är mer exakt och har ett bredare utbud för temperatur och fuktighet, definieras dataformatet som annorlunda. För luftfuktigheten representera de 16 databitarna både ett heltal och en fraktionerad värde (med en decimal). Till exempel, representerar 652 mottagna decimalvärdet en fuktighet på 65,2 procent. De 16 bitarna för temperaturen formateras på samma sätt förutom att den mest signifikanta biten representerar tecknet av data. Uppgifterna är inte i 2: s komplettera format så en positiv temperatur har samma numeriska värde som motsvarande negativa temperaturen.