Thermohygrometer med klocka och LCD-display på Arduino UNO (4 / 7 steg)

Steg 4: Kombinera DS3231 och DHT22



Okej, är det dags att kombinera de två enheterna tidigare sett!

Detta förfarande består av att göra ett "lapptäcke" mellan de två koderna tidigare sett.

Öppna både koder och kopiera & förbi koden för DHT22 i ett av DS3231 (ds3231_bis.ino).

Bibliotek, variabler och konstanter

I den ds3231_bis.ino koden lägger du till biblioteket behövs av dht22, definiera vilka stift det kommer att använda och ställa in variabeln för att läsa och skriva värden för temperatur och luftfuktighet upptäcks. Här är hur i början av koden ska se ut:

#include "Wire.h"
#include < dht.h >

#define DHT22_PIN 9
#define DS3231_I2C_ADDRESS 0x68

DHT DHT;

Funktioner

Bara efter två huvudfunktioner (ogiltig loop och ogiltiga inställningar) ska vi sätta "sekundär" de:

  • bcdToDec---som sagt tidigare, det som krävs för att konvertera binära tal till decimaler
  • readDS3231time---krävs för att läsa data från DS3231
  • displayTime---krävs för att skriva ut uppgifter och tid på den seriella monitorn

För att inte röra upp något, gjorde vi en annan funktion som heter dht22. Den innehåller alla rader i setup -funktionen av våra dht22.ino. Tack vare detta ska våra loop och installationen vara rent och snyggt.

Konvertera binary coded decimal till normala decimaltal
byte bcdToDec(byte val)
{
tillbaka ((val/16 * 10) + (val % 16));
}
void readDS3231time (byte * andra,
byte * minut,
byte * timme,
byte * dayOfWeek,
byte * dayOfMonth,
byte * månad,
byte * år)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0); Ange DS3231 register pekaren till 00h
Wire.endTransmission();
Wire.requestFrom (DS3231_I2C_ADDRESS, 7);
begära sju byte data från DS3231 start från registret 00h
* andra = bcdToDec(Wire.read() & 0x7f);
* minut = bcdToDec(Wire.read());
* timme = bcdToDec(Wire.read() & 0x3f);
* dayOfWeek = bcdToDec(Wire.read());
* dayOfMonth = bcdToDec(Wire.read());
* månad = bcdToDec(Wire.read());
* år = bcdToDec(Wire.read());
}
LÄSA DATA
void dht22)
{
LÄSA DATA
Serial.Print (DHT22, \t");
int chk = DHT.read22(DHT22_PIN);
Switch (chk)
{
fall DHTLIB_OK:
Serial.Print("OK,\t");
bryta;
fall DHTLIB_ERROR_CHECKSUM:
Serial.Print (Checksum error, \t");
bryta;
fall DHTLIB_ERROR_TIMEOUT:
Serial.Print ("Time out fel, \t");
bryta;
standard:
Serial.Print ("okänt fel, \t");
bryta;
}
Serial.Print (DHT.humidity, 1);
Serial.Print(",\t");
Serial.println (DHT.temperature, 1);
}

void displayTime()
{
byte sekund, minut, timme, dayOfWeek, dayOfMonth, månad, år.
Hämta data från DS3231
readDS3231time (& sekund, minut, timme, & dayOfWeek, & dayOfMonth, & månad,
& år);
Skicka den till den seriella monitorn
Serial.Print (timme, DEC).
konvertera variabeln byte till ett decimaltal när visas
Serial.Print(":");
om (minut < 10)
{
Serial.Print("0");
}
Serial.Print (minut, DEC).
Serial.Print(":");
om (andra < 10)
{
Serial.Print("0");
}
Serial.Print (andra, DEC);
Serial.Print("");
Serial.Print (dayOfMonth, DEC);
Serial.Print("/");
Serial.Print (månad, DEC).
Serial.Print("/");
Serial.Print (år, DEC).
Serial.Print ("dag i veckan:");
Switch(DAYOFWEEK) {
fall 1:
Serial.println("Sunday");
bryta;
fall 2:
Serial.println("Monday");
bryta;
fall 3:
Serial.println("Tuesday");
bryta;
fall 4:
Serial.println("Wednesday");
bryta;
fall 5:
Serial.println("Thursday");
bryta;
fall 6:
Serial.println("Friday");
bryta;
fall 7:
Serial.println("Saturday");
bryta;
}
}

Setup-funktionen

De viktigaste funktionerna är Wire.begin() och Serial.begin(). Initiering av DS3231 och seriell bildskärm, respektive. De övriga raderna skriva ut inte strikt krävs information om DHT22.

void setup()
{
Wire.BEGIN();
Serial.BEGIN(115200);
Serial.println ("DHT TESTPROGRAMMET");
Serial.Print ("bibliotek VERSION:");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println ("typ, \tstatus, \tHumidity (%),\tTemperature (C)");
}

Loop funktion

Loop funktion är ganska enkelt: det kräver bara två funktioner att fördröja operationen 2 sekunder. Varför två sekunder? Eftersom DHT22s måste två sekunder att göra en upptäckt.

#include "Wire.h"
void loop()
{
displayTime(); Visa realtidsklocka uppgifter på seriell övervaka,
dht22 (); Visa värdet av luftfuktighet och temperatur upptäcks

Delay(2000);
}

Som vanligt fäst vi koden klar för användning.

Se Steg
Relaterade Ämnen

Ultrasonic avståndsmätare med LCD-display på Arduino UNO

I denna tutorial kommer vi att se en annan användning av modulen HC-SR04 ultraljud. Denna modul används ofta på robotar och leksaksbilar för att hitta hinder men det kan användas för att mäta avstånd också.Avstånd som mäts av HC-SR04 visas på vår äls...

LCD-display på Arduino UNO

lista över maskinvara:1 arduinio2 bröd styrelse3 LCD-skärm 16 * 24 10 k registerSteg 1: Pinconfiguration Ställa in PIN-koden enligt picturre,anser att andra objekt som 10k registrerar.Detta program finns på Arduino LCDLibrary.Programmet:/*LiquidCryst...

Med Visual Basic 2010 till kontroll Arduino Uno

jag vet att detta har skett tidigare några gånger så här är en mer. Detta är ett skelett Visual Basic 2010 och Arduino skiss som jag blandade ihop prov PC till Arduino Uno anslutning via följetong. Det visar helt enkelt LED 13 på eller av.Visual Basi...

Fläkt RPM med inre hall effekt sensor och Arduino (Intro till hårdvara avbryta och LCD display)

För mitt andra projekt för arbete, jag var tvungen att mäta rotationshastigheten av rotoren i varv Per minut (RPM) av en modifierad dator fläkt. Den hade tre kablarna kommer ut och som kryssat mig som kanske har något sätt att kontrollera sin hastigh...

Inomhus Security System med RFID och Status Display av LCD med hjälp av Arduino Micrcontroller

Det är en Inomhus Security System som automatiserar dörren öppna/stäng rörelse. Användarautentiseringen är gjort med hjälp av smarta RFID -kort som kommer att autentisera och auktorisera användaren att skriva in in i lokalerna genom att öppna och stä...

DIY världen klocka och väder bot (Arduino + ESP8266)

Heji denna instuctable kommer du lära dig hur man gör världen klocka väder bot använda Arduino Mega och ESP8266 (på-läge).Funktioner:• personlig bot med LCD-skärm som mun, potentiometer som näsa och gröna lysdioderna som ögon• att välja ville stad/la...

LCD-Display på Arduino

Bildskärmstyp LCD ofta används för att visa statusinformation från en maskin. I figuren visas bara den typiska aspekten av detta gränssnitt.Steg 1:Det finns flera typer av display, till exempel 2 x 20, som innebär 2 rader av 20 kolonner, 4 x 20, 4 x...

Räkna med IR och LCD-

Hej alla!Idag har jag ska presentera en min gamla projekt, mellan januari och februari för 2015. Det är en enkel räknare, baserat på Atmega328p och IR-sensor vassa 2Y0A21.Arbeta med små automatiska maskiner, i ett skede av tester, behövde jag räkna b...

LEDaliveshow.com ger flexibel led skärm med mobila och portabla display design

P6 flexibla LED-skärm med mobile design är en ny uppfinning som bryter igenom olika flaskhalsen jämfört med traditionella LED display, det förtjänar det uppfinning patent och Utility modell patent internationellt.6mm pitch LED flex skärmar är sammans...

Hur du ansluter en seriell LCD till en Arduino UNO

I detta instructable jag kommer att visa dig hur jag ihop en seriell LCD 16 X 2 med en Arduino UNO.Det finns massor av instructables och flashmanualer som visar dig hur du ansluter en vanlig LCD till en Arduino men inte många visar en seriell LCD och...

Arduino temperatur och luftfuktighet logger med DHT11 och I2C Display

För en tid sedan har jag hittat en intressant instructable om temperatur dataloggning. Som jag hade några av de delar runt mitt skrivbord och med med anledning av att göra den Universella sköld, jag sa till mig själv varför inte göra en Arduino klock...

Arduino Real Time klocka med Alarm och miljö-sensorer

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, fuktighet, tryck, LCD utgång, knappsats ingång, viloläge, LED LCD-belysning (4 X) vit med dimmer kontrollSteg 1: ReservdelslistaArduino Real Time klocka med Alarm och...

Arduino Nano med DHT11, RTC DS1307 och LCD 16 x 2

Hej. Detta är min första Instructable, så jag hoppas det är OK.Detta är mitt Arduino Nano projekt med LCD med I2C board, RTC DS1307 och DHT11 sensor.För detta projekt jag använde Arduino Nano, RTC DS1307 klockan styrelsen, DHT11 givarkort, 16 x 2 LCD...

Arduino Nano: Visa GPS-position på I2C 2 X 16 LCD-Display med Visuino

För några dagar sedan bad någon mig att göra Instructable om hur du visar GPS latitud och longitud på en LCD-Display. Jag lovade att göra en, och här är det.I detta Instructable kommer jag visa dig hur du kan ansluta seriell GPS-moduloch I2C LCD-Disp...

Hookup en LCD till en Arduino i 6 sekunder med 3, inte 6 stift

att lägga till en LCD-display till Arduino projekt kan lägga till verkligt värde men kostnaden för att göra så kan vara betydande. Inte en ekonomisk kostnad - du kan plocka upp 16 (tecken) x 2 (rader) LCD för så lite som £3.50. Kostnaden är pin räkna...

DIY I2C LCD-Display med ingångar

Den typiska parallella LCD används med en Arduino (16 x 2 eller 20 x 4) har 16 stift. Endast 6 I/O pins krävs på Arduino, men tänk om du kunde få det ner till två I/O stift, och har fortfarande de stift som är tillgänglig för andra enheter?I2C gränss...

2-spelare Pong spel med Arduino Uno och 8 x 8 ledde matrisen

klassiska Pong spelet genomförs på en Arduino Uno och 8 x 8 mono-färg ledde matrisen.Spelare pinnar styrs av en potentiometer för varje spelare. Vill du pinnen att gå till vänster, bara slå potentiometern kvar.Hastigheten på spelet ökar med tiden. Ef...

Styra en motor med en tablett och en Arduino Uno

Kontrollera dina uppfinningar med Android tabletter! Denna ska tutorial går igenom en demo för att få en Android tablett att skicka seriella kommandon till en Arduino ombord och har styrelsen vända en motor på och av.Steg 1: Saker du behöverAndroid (...

Ansluta Arduino Uno till Crystalfontz 16 x 2 OLED med bara 4 trådar!

Dessa moduler är ganska trevligt. De är i samma storlek som våra CFAH1602C serien 16 x 2 tecken LCD-moduler, och tunnare som en bonus. Den OLED kontrasten är fantastiska, och de har en skarp blick som är svårslagen. En annan trevlig sak är att de har...