Arduino LCD-termometer med Temp Sensor LM35 (2 / 2 steg)
Steg 2: (codeTime);
Jag har också tagit skissen i en nedladdning. När koden är coppied och klistras in och vänners kompatibla tenderar att scatter runt saker.
Jag har kommenterat koden bästa jag vet hur, men om somethings inte korrigera eller kan rengöras upp lämna gärna en kommentar.
/*
Oktober 25 2012
Baserade bort av ett projekt av DJ Mentzik.
Utökad och uppdaterad av WWC.
Styrkande handlingar finns på
Använda och ändra efter behov.
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
Dessutom en 10K pott till + 5V och jord, med det är torkare (output) till LCD skärmar VO pin (pin3).
*/
#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) * 100,0) / 1024.0; omvandling matematik av LM35 provet till läsbar temperatur och butiker resultat till prov matris.
5V är utbudet volt av LM35. Ändra appropriatelly att ha korrekt mätning. Mitt fall är 4.4Volts.
Om ström från USB Använd värdet 4.4v till 4.6v. Om strömmen 7v < till Arduino och använd sedan 4.9v till 5.1v
Spänningen är avgörande för noggranna avläsningar
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
}