Stap 3: programmeren
Dit is waar het wordt leuk.De UTFT bibliotheek bleek te zijn vrij eenvoudig te gebruiken, en ik vond ook een makkelijk te gebruiken bibliotheek voor de DHT-22. Zelfs met deze mooie bibliotheken waren er enkele uitdagingen.
De Arduino als een i2c-slave lijkt alleen gedragen als u uw gebruik aan SBCS-operaties beperken, en dit verzenden flexibele complexe structuren bemoeilijkt. Ik wil zitten kundig voor scherm tekenopdrachten van de BeagleBone verzenden met de Arduino. Mijn opties moesten een systeem waarbij een byte wordt verzonden als een "opdrachttype" code dan tak Lees meer bytes Voltooi de structuur of werken op een manier te vatten van een tekenreeks met scheidingstekens en te verwerken. Methode 1 zou betekenen ik optionele parameters niet kan hebben, en als het verzenden van de byte synchroon krijgt het zal moeilijk zijn om re-sync-aangaande. Dus gebruikte ik methode 2 door gebruik van enkele buffer variabelen en een 0-byte te verzenden als een null-terminator, zoals C toepassingen voor tekenreeksen. Zelfs als een byte wordt verbroken, de 0-byte zal eindigen de structuur op een bepaald punt en dan is het gewoon een kwestie van omgaan met rare gegevens wanneer ik parseren.
De volgende uitdaging was dat de DHT22 traag is. leuk, echt traag. Dat met behulp van een "huidige waarde" opgelost variabele en een vertraging. Ik hoef niet super snelle reactie wanneer de waarden veranderen, maar ik wil het moet snel reageren wanneer ik voor de waarden vragen. De hoofdlus opiniepeilingen een functie elke keer, die vervolgens controles functioneren wanneer de waarde het laatst werd bijgewerkt, en bijgewerkt als er meer dan 3 seconden ingedrukt. Ik zal waarschijnlijk eindigen dit omzetten in een timer of iets dergelijks.
Ik ook geprogrammeerd in een "dev modus" dus ik kan loskoppelen van het LCD-scherm en wat informatie over de seriële krijgen. Het heeft tot dusver handig geweest, maar nu dat de grondbeginselen zijn uitgewerkt ik waarschijnlijk niet zal het opnieuw gebruiken.
Op de Beaglebone gebruik ik PyBBIO nu. het is arduino, zoals opdrachten en methoden me houden uit super steeds verward bij het omgaan met dergelijke talen als C en Python zijn. Het is vrij eenvoudig te installeren, en heeft een paar leuke klassen bouwen. Het is mijn bedoeling te proberen en krijgen een soort i2c klasse erin, als Haim niet eerst!
Hier vindt u een zip-bestand dat is verbonden met mijn code, een ino bestand voor de arduino en een python-bestand voor de beaglebone. Momenteel is er alleen ondersteuning voor de DHT22 temperaturen en de vochtigheid lezingen. Het werkt het display op de arduino zelfs als het python script is niet uitgevoerd. De python script gewoon haalt de waarden en geeft hen naar de terminal. Zoals ik al zei aan het begin, heb ik nog een heleboel werk te doen!
De gecompileerde schets gebruikt 29.5K van de maximale 32.2-K, en ik moet nog touch ondersteuning en diegenen die functies toe te voegen! Ik denk dat er een heleboel code in de utft die ik kan knippen uit, en misschien kan ik trek de DTH bibliotheek spullen in en maak het ook meer mager. Of, misschien zal ik net genoeg, we zullen zien!