Arduino LCD-termometer / temperaturkontroll med TMP36GZ Temp sensor lagt 2 chanel relay, lagt till RTC ds1307, lagt till en case.based på WWC Guide. (6 / 36 steg)
Steg 6:
/*
September 12 2013
Oktober 25 2012
Baserade bort av ett projekt av DJ Mentzik.
Utökad och uppdaterad av WWC och citin.
Styrkande handlingar finns på
Användning och modife som behövs.
Visar aktuell, 8 SEK medelvärde, Max och Min temperatur.
För att koppla din LCD-skärm till din Arduino, ansluta följande stift:
LCD-stift 6 till digital stift 12
LCD-stift 4 till digital stift 11
LCD-Pin 11 till digital stift 5
LCD-Pin 12 till digital stift 4
LCD-Pin 13 till digital stift 3
LCD-Pin 14 till digital stift 2
LCD-stift 15 till POS
LCD-PIN 16 till GND
*/
#include < LiquidCrystal.h > / / include LCD förare biblioteket
deklarera variabler
flyta tempC = 0; Variabel för att hålla Celcius temp (flytande decimalpunkter precision)
flyta tempf = 0; variabel för att hålla Fareghneit temp
int tempPin = 0; Om att den analoga ingången vara 0 (A0) av Arduino ombord.
float prover [8]. Matrisen att hålla 8 prover för genomsnittlig temp beräkning
float maxi = 0, mini = 100; Max/Min temperatur variabler med ursprungliga värden. LM35 i enkel installation bara mäter Temp över 0.
int i;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2); initiera bibliotek med numrerar av gränssnittet stiften
void setup()
{
Serial.BEGIN(9600); Öppnar serieport, anger datahastigheten till 9600 bps
LCD.BEGIN (16, 2); Ange den LCD antal kolumner och rader:
lcd.setCursor (2, 0); Ställa in LCD markörens position (kolumn, rad)
LCD.Print ("Waynes World"); Skriva ut text till LCD
lcd.setCursor (3, 1); Ställa in LCD markörens position (kolumn, rad)
LCD.Print("thermometer"); Skriva ut text till LCD
Delay(5000); vänta 500ms / / fördröjning för att läsa text
LCD.Clear(); tydlig LCD-display / / rensa displayen
lcd.setCursor (2, 0); Ställa in LCD markörens position (kolumn, rad)
LCD.Print ("LCD visas"); Skriva ut text till LCD
lcd.setCursor (1, 1); Ställa in LCD markörens position (kolumn, rad)
LCD.Print ("Averaged Temp"); Skriva ut text till LCD
Delay(5000); Dröjsmål att läsa text
LCD.Clear(); Clear LCD
}
void loop()
{
Serial.println(""); Tom rad för mellanrum i följetong monitor
Serial.println ("du tittar på ett projekt som byggdes av WWC."); Skriva ut text till Serial monitor
Serial.Print ("Feal fritt att använda och modife som behövs.");
Serial.println(""); Tom rad för mellanrum i följetong monitor
Serial.Print ("LM35 rådata:"); Skriva ut text till Serial monitor
Serial.println(analogRead(tempPin)); Visar på serial monitor som ingick i urvalet värdet före konvertering till verkliga temperatur läsning
Start av beräkningarna för loop.
för (jag = 0; jag < = 7; i ++) {/ / blir 8 prover av temperatur
prover [i] = (4,4 * analogRead(tempPin) * 26) / 1024.0; omvandling matematik av tmp36GZ prov till läsbar temperatur och butiker resultat till prov matris.
Serial.println(samples[i]); Skriva ut prover [i] till sertiual bildskärm
(LCD Obs: linje 1 är den andra raden, sedan räknar börjar med 0):
lcd.setCursor (0, 0); Ställa in LCD markörens position (kolumn 0, raden 0)
LCD.Print ("aktuell Temp är:"); Skriva ut text till LCD
lcd.setCursor (1, 1); Ställa in LCD markörens position (kolumn 1, rad 1)
LCD.Print ("Celcius"); Skriva ut text till LCD
lcd.setCursor (12, 1); Ställa in LCD markörens position (kolumn 12, rad 1)
LCD.Print(samples[i]); Temp-aktuella utskriften till LCD
tempC = tempC + prover [i]; göra tillägg för medeltemperatur
Delay(800); vänta 800ms
} / / END av FOR-loop
Serial.println(""); Tom rad för mellanrum i följetong monitor
Serial.println(""); Tom rad för mellanrum i följetong monitor
tempC = tempC/8.0; beräknad averare för 8 samples i Celcius
tempf = (tempC * 9) / 5 + 32; konverterar till fahrenheit
IF(tempC > Maxi) {maxi = tempC;} / / set max temperatur
IF(tempC < mini) {mini = tempC;} / / set min temperatur
Skicka resultaten till Serial Monitor
Serial.println ("ny mätning:");
Serial.Print ("genomsnittliga temperaturen i Celsius"); Skriva ut text till Serial monitor
Serial.println (tempC), //send data till datorn / / skicka data till datorn
Serial.Print ("genomsnittliga temperaturen på Farenait"); Skriva ut text till Serial monitor
Serial.println (tempf), //send data till datorn / / skicka data till datorn
Serial.Print ("MAX temperaturen i Celsius är"); Skriva ut text till Serial monitor
Serial.println (maxi); //send data till datorn / / skicka data till datorn
Serial.Print ("MIN temperaturen i Celsius är"); Skriva ut text till Serial monitor
Serial.println (mini), //send data till datorn / / skicka data till datorn
Skicka resultaten till LCD.
lcd.setCursor (0, 1); Ställa in LCD markörens position (kolumn 0, linje 1)
LCD.Print ("Fahrenheit"); Skriva ut text till LCD
lcd.setCursor (12, 1); Ställa in LCD markörens position (kolumn 12, linje 1)
LCD.Print(tempf); Skicka data till LCD-skärmen
Delay(6000); Vänta 3 sekunder för att Visa Fahrenheit temp och 3 sekunder att visa resultat till LCD skärmen innan de börjar loopen igen = 6 sekunder.
tempC = 0; Satt tempC till 0 så beräkningar kan göras igen
}