Stap 4: Software
Hieronder staan de links van de software. Terwijl het wordt gericht voor de 12F683, is het eenvoudig geport naar grotere versies van de PIC. Meestal vereist het te wijzigen in namen, zoals TRISIO TRISA, en GPIO naar PORTA. U zult ook moeten veranderen de regel waarmee de PIC-versie (lijst =) en het INCLUDE-bestand, maar die zijn intuïtieve veranderingen. De __CONFIG lijn wellicht ook tweaken alleen maar omdat een of twee van de gebruikte etiketten zijn anders gespeld in sommige van de INCLUDE-bestanden. Zorg enkel ervoor dat de foto die u een PIN-code waarmee een externe Interrupt invoer heeft (meestal aangeduid als EXT). Zoals we hebben gezien voordat, de 16F688 (14-pins PIC) kan worden gebruikt met de dezelfde fysieke pin-verbindingen als de 12F683 als u meer I/O pinnen wilt.
Er zijn eigenlijk drie versies van de software die geleverd. Alle drie dezelfde code gebruiken in de interrupt handler te vangen van de bit-stream van welke versie van de sensor we gebruiken. De verschillen in het grootste deel van de software zijn in welke gegevens bits worden gevangen en gebruikt. De DHT-11 versie gewoon vangt de eerste 8 bits en de derde 8 bits en vervolgens ontleedt ze in andere integerwaarden voor de vochtigheid en temperatuur weergave. Het parseren kan eenvoudig worden gedaan door herhaald aftrekken om de tien cijfers. De rest vertegenwoordigt dan de cijfers van de eenheid.
De tweede en derde versies zijn zowel voor de DHT-22/AM2302. Het verschil zit in hoe de databits zijn geparseerd. Deze module is een beetje lastiger om met te werken omdat het fractionele deel van de waarden de sensor vereist voor de uitvoer van 10 significante bits in plaats van enkel de 8 bits gebruikt door de DHT-11 voor elke waarde. Gezien het feit dat de PIC-instructies alleen voor 8-bit data werken, betekent het dat de complexiteit van de code vergroten moet om alle 10 bits juiste wijze kan verwerken. In de 'Table' versie van de software vereenvoudigen wij de code door alleen het vastleggen van de 8 meest significante bits en vervolgens met behulp van die waarde naar index in opzoektabellen voor de cijfers weergeven. Deze methode betekent dat we twee bits voor fractionele data (0.3) verliest in onze resolutie. Voor dit soort projecten is dat een redelijke afweging. De andere versie van de software behoudt de volledige 10-bits precisie maar ten koste van meer complexe logica voor het vastleggen van gegevens en het ontleden. Beide versies zijn beschikbaar als voorbeelden van de verschillende methoden die u in uw projecten gebruiken kunt.
Bent u bezorgd over de mogelijkheid van een occasionele slechte gegevensoverdracht, dan wil u programmacode opnemen om te controleren of de 8 bits van checksum aan het einde van elke bit-stream. Om te doen dat u elke byte van de gegevens afzonderlijk vangen zou, de eerste vier bytes bij elkaar optelt (het negeren van de carry-bit), en controleer vervolgens of dat het resultaat overeenkomt met de vijfde byte.
De waarden die worden weergegeven voor de vochtigheid en de temperatuur kunnen niet veel verandering, terwijl u ze bekijkt dus het is leuk om iets waarmee je weet dat de metingen worden gezet zoals gepland. Om dat te doen mits ik een variabele met de naam "Heartbeat" die tussen een ASCII-spatie (leeg) en een ster van een knevel wordt gevoorzid.