Thermohygrometer met klok en LCD-scherm van Arduino UNO (4 / 7 stap)

Stap 4: Combinatie van DS3231 en DHT22


Oke, is het tijd om het combineren van de twee apparaten eerder gezien!

Deze procedure bestaat uit het maken van een 'lappendeken' tussen de twee codes eerder gezien.

Open zowel de codes als de kopie & langs de gedragscode DHT22 in één van de DS3231 (ds3231_bis.ino).

Bibliotheken, variabelen en constanten

In de ds3231_bis.ino-code toevoegen van de bibliotheek die nodig zijn voor de dht22, bepaalt welke pin it's gonna gebruiken en stelt u de variabele gebruikt om te lezen en schrijven van de waarden van temperatuur en vochtigheid gedetecteerd. Hier is hoe het begin van de code zou moeten uitzien:

 #include "Wire.h" #include <dht.h> #define DHT22_PIN 9 #define DS3231_I2C_ADDRESS 0x68 dht DHT; 

Functies

Net na de twee belangrijkste functies (void loop en void setup) gaan we de "secundaire" zijn:

  • bcdToDec---zoals eerder gezegd, het is nodig om binaire getallen naar decimalen converteren
  • readDS3231time---vereist om gegevens te lezen van DS3231
  • displayTime---vereist voor het afdrukken van de gegevens en tijd op de seriële monitor

Om niet verknoeien iets, hebben we een andere functie met de naam dht22. Het bevat alle regels in de setup -functie van onze dht22.ino. Dankzij dit zijn onze lus en setup gonna be schoon en netjes.

 // Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val) { return( (val/16*10) + (val%16) ); } void readDS3231time(byte *second, byte *minute, byte *hour, byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) { Wire.beginTransmission(DS3231_I2C_ADDRESS); Wire.write(0); // set DS3231 register pointer to 00h Wire.endTransmission(); Wire.requestFrom(DS3231_I2C_ADDRESS, 7); // request seven bytes of data from DS3231 starting from register 00h *second = bcdToDec(Wire.read() & 0x7f); *minute = bcdToDec(Wire.read()); *hour = bcdToDec(Wire.read() & 0x3f); *dayOfWeek = bcdToDec(Wire.read()); *dayOfMonth = bcdToDec(Wire.read()); *month = bcdToDec(Wire.read()); *year = bcdToDec(Wire.read()); } // READ DATA void dht22 () { // READ DATA Serial.print("DHT22, \t"); int chk = DHT.read22(DHT22_PIN); switch (chk) { case DHTLIB_OK: Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: Serial.print("Time out error,\t"); break; default: Serial.print("Unknown error,\t"); break; } Serial.print(DHT.humidity, 1); Serial.print(",\t"); Serial.println(DHT.temperature, 1); } void displayTime() { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; // retrieve data from DS3231 readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); // send it to the serial monitor Serial.print(hour, DEC); // convert the byte variable to a decimal number when displayed Serial.print(":"); if (minute<10) { Serial.print("0"); } Serial.print(minute, DEC); Serial.print(":"); if (second<10) { Serial.print("0"); } Serial.print(second, DEC); Serial.print(" "); Serial.print(dayOfMonth, DEC); Serial.print("/"); Serial.print(month, DEC); Serial.print("/"); Serial.print(year, DEC); Serial.print(" Day of week: "); switch(dayOfWeek){ case 1: Serial.println("Sunday"); break; case 2: Serial.println("Monday"); break; case 3: Serial.println("Tuesday"); break; case 4: Serial.println("Wednesday"); break; case 5: Serial.println("Thursday"); break; case 6: Serial.println("Friday"); break; case 7: Serial.println("Saturday"); break; } } 

Setup functie

De belangrijkste functies zijn Wire.begin() en Serial.begin(). Het initialiseren van de DS3231 en de seriële monitor, respectievelijk. De overige regels afdrukken niet strikt vereist informatie over DHT22.

 void setup() { Wire.begin(); Serial.begin(115200); Serial.println("DHT TEST PROGRAM "); Serial.print("LIBRARY VERSION: "); Serial.println(DHT_LIB_VERSION); Serial.println(); Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); } 

Lus functie

De lus functie is vrij eenvoudig: het roept slechts twee functies vertragen van de werking van 2 seconden. Waarom twee seconden? Omdat DHT22s moet twee seconden om te doen een detectie.

 #include "Wire.h" void loop() { displayTime(); // display the real-time clock data on the Serial Monitor, dht22 (); // display the value of humidity and temperature detected delay(2000); } 

Zoals gewoonlijk we gehecht de code klaar voor gebruik.

Gerelateerde Artikelen

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

Ultrasone afstandsmeter met LCD-scherm van Arduino UNO

In deze tutorial gaan we zien een ander gebruik van de HC-SR04 ultrasone module. In deze module wordt vaak gebruikt op robots en speelgoedauto's te vinden van belemmeringen, maar het kan worden gebruikt voor het meten van afstanden ook.Afstanden geme
LCD-scherm van Arduino UNO

LCD-scherm van Arduino UNO

lijst van hardware:1 arduinio2 brood bord3 LCD display 16 * 24-10 k registerStap 1: Pinconfiguration De pin volgens de picturre, instellenoverwegen dat object eruitziet als 10k registreren.Dit programma is beschikbaar op de Arduino LCDLibrary.Program
LCD-scherm van Arduino

LCD-scherm van Arduino

Het type van de LCD display worden veel gebruikt om statusinformatie van een machine weer te geven. In de afbeelding wordt alleen het typische aspect van deze interface weergegeven.Stap 1:Er zijn verschillende typen display, zoals 2 x 20, dat 2 rijen
Vervangen van een gebroken LCD-scherm van uw camera

Vervangen van een gebroken LCD-scherm van uw camera

Alvorens een nieuwe camera te kopen omdat u een gebroken LCD-scherm heeft, geef het een kans en probeer te laten werken!Het proces is eenvoudig, en u hoeft alleen een schroevendraaier en het scherm vervanging!U kunt vervangende schermen vinden op eBa
Hoe te uploaden codes naar Lilypad Arduino zonder FTDI met behulp van Arduino Uno

Hoe te uploaden codes naar Lilypad Arduino zonder FTDI met behulp van Arduino Uno

Vandaag, ga ik te laten zien waarmee ik had een probleem met mijn FTDI module terwijl ik probeer te uploaden - op de Arduino IDE ontworpen - codes van mijn computer aan Lilypad Arduino Atmega328 bestuur.Eigenlijk moet u uw FTDI modules zoals gebruike
Schets naar Atmega328P-PU branden op een Breadboard met behulp van Arduino Uno als programmeur

Schets naar Atmega328P-PU branden op een Breadboard met behulp van Arduino Uno als programmeur

Er zijn al verschillende instructables op hoe te branden van de Arduino schets naar Atmega328P-PU op een breadboard met behulp van verschillende USB - UART modules. Echter, zoals de meeste van deze modules zijn gemaakt in China, ze zijn slecht gedocu
LCD-scherm van de temperatuur in C of F door het kiezen van het type met een IR-remote

LCD-scherm van de temperatuur in C of F door het kiezen van het type met een IR-remote

Franse versie hierIn dit programma ziet w how to capture van een temperatuur, weer te geven op een LCD-scherm en kies als we willen weergeven in C of F met een infrarood afstandsbediening.In deze tutorial die ik gebruik:-A Sainsmart kaart (zoals de A
Berging van een LCD-scherm van een faxapparaat

Berging van een LCD-scherm van een faxapparaat

Ik heb verworven een oude faxmachine die eruit zag als een rijpe bron van onderdelen, zoals dingen, steppers, IR-sensoren en microschakelaars.  Zoals later bleek, was.  Het had ook een leuk uitziende 2 x 16 karakter LCD.  Nochtans, na het nemen van a
Hoe te hergebruiken van de oude LCD-scherm van uw kapotte Laptop

Hoe te hergebruiken van de oude LCD-scherm van uw kapotte Laptop

Dit is een super eenvoudige maar ook zeer ontzagwekkend project. U kunt een moderne laptop scherm omzetten in een monitor met de juiste driver board. Aansluiten van die twee is ook eenvoudig. Gewoon aansluiten in de kabel en gedaan. Maar ik nam het e
Het wijzigen van het LCD-scherm van uw mobiele telefoon van Nokia.

Het wijzigen van het LCD-scherm van uw mobiele telefoon van Nokia.

Dit instructable zal u tonen hoe te veranderen van een gebroken LCD op uw Nokia. De afbeeldingen hierboven tonen een Nokia 6300-klassieker, maar het willl worden dezelfde of bijna het zelfde met vele andere modellen van Nokia.Waarom zou u moeten vera
Wijzigen van de omvormer in LCD scherm van de desktop

Wijzigen van de omvormer in LCD scherm van de desktop

dus, u uw computer hebt aangezet, en toen zag het opstarten zoals gewoonlijk, maar toen ging het plotseling leeg. Dus u wilt opnieuw voor sommige vreemde reden, maar vervolgens erachter te komen dat er een probleem is.Uw probleem is: de omvormer (ver
Lossen van de HP Pavilion DV5000 15,4-Inch LCD scherm van uw Laptop

Lossen van de HP Pavilion DV5000 15,4-Inch LCD scherm van uw Laptop

Brand New HP Pavilion DV5000 ZV5000 serie 15,4-inch WXGA-GLANZENDE LCD-schermBeschrijving:Model: LP154WX4Fabrikant: LG-PhilipsGrootte: 15,4-inch inchsResolutie: 1280 x 800 pixelsHoogte-breedteverhouding: WXGA, breedbeeldData Connector: 30 pinSchermty
Branden van de Bootloader op de ATMega328 met behulp van Arduino UNO als ISP

Branden van de Bootloader op de ATMega328 met behulp van Arduino UNO als ISP

UPDATE: deze tutorial zal werken op de Arduino IDE 1.0.1, de recente 1.0.5 brengt enkele wijzigingen op de schets van de ISP, dus ik ben niet zeker of het zal werken (ik kocht 2 ATMega328 en verbrand, zowel op 1.0.1).Gebruik 1.0.1 om eventuele proble
Met behulp van Arduino UNO als hoge resolutie 3-CH DAC's

Met behulp van Arduino UNO als hoge resolutie 3-CH DAC's

In deze toepassing geven we een demo over het bouwen van een hoge precisie-voeding met behulp van de DAC-3000 en een hoge precisie referentiebron REF4096.Step1:List van materiaaleBay winkel adres:BUONO UNO R3REF-4096 + DAC-3000UM-UNO (Unsoldered) of