Ventilator_mit_Regelung_und_Display.ino


1
#include <LiquidCrystal.h>
2
LiquidCrystal lcd(12,13,8,4,7,2);
3
const int tempsenso=A0;
4
int temp;
5
const int motor=6; 
6
int endwert;
7
float Wert1;
8
const int LED=3;
9
const int LED2=5;
10
const int LED1=9;
11
float TempDisplay;
12
13
14
void setup() {
15
  pinMode(tempsenso,INPUT); //misst temperatur (bekommt Signal)
16
  Serial.begin(9600);
17
  pinMode(motor, OUTPUT); //dreht sich (gibt Signal)
18
  pinMode(LED, OUTPUT); //LED aus
19
  pinMode(LED1, OUTPUT); // leuchtet blau (gibt Signal)
20
  pinMode(LED2, OUTPUT); //LED aus
21
  lcd.begin(16,2); //16,2 ist die Bezeichnung der Zeilen und Spalten (16=Spalten, 2=Zeilen)
22
  lcd.setCursor(0,0); //bestimmt die Position vom Cursor (in der ersten Spalte auf die erste Zeile (ursprung)
23
  lcd.print("Ventilator"); //Display gibt in der ertsen Zeile das Wort "Ventilator" aus 
24
  lcd.setCursor(0,1); //Cursor wird auf eine andere Position gestezt (in der zweiten Spalte auf die erste Zeile
25
  lcd.print("Temp: "); // Display gibt in der zweiten Zeile das Wort "Temp: " aus 
26
delay(100);
27
}
28
29
void loop() {
30
 
31
 
32
 
33
  temp = analogRead(tempsenso); 
34
   
35
  float voltage = (temp/1024.0) * 5.0; //Wandelt Wert in Spannung um
36
  float temperature = (voltage - 0.5) * 100; //Wandelt Spannung in Temperatur um
37
  
38
 Serial.println(temperature); //gibt im Seriellen Monitor Temperatur Wert aus
39
 
40
  int TempDisplay = (int)temperature;
41
 
42
  
43
 
44
45
  float steigung = (255/30.0); //berechnet mit höchstem Wert und höchster Temperatur die steigung
46
  float Wert = (steigung*temperature); //berechnet den jeweiligen Wert der jeweiligen Temperatur anhand der steigung
47
  unsigned int Wertint=(float)Wert; //wandelt float Zahl (Kommazahl) in int Zahl (ganze Zahl) um
48
  
49
  Serial.println(Wertint); // gibt in Seriellem Monitor die int Werte aus
50
51
52
  
53
54
   if (temperature <0.0) { //Wenn Temperatur kleiner als 0°C ist,
55
    //analogWrite(motor, 0); // läuft der Motor nicht,
56
    analogWrite(LED, 0); // leuchtet die LED nicht,
57
    digitalWrite(LED1, LOW); //LED aus,
58
    digitalWrite(LED2, LOW); //LED aus
59
  }
60
  
61
  if (temperature >=0.0 && temperature <=30.0) { //Wenn Temperatur größer oder gleich 0°C und kleiner oder gleich 30°C ist,
62
    //analogWrite(motor, Wertint); //fängt der Motor langsam an zu drehen und wird immer schneller (je nach Wert und Temperatur),
63
    analogWrite(LED, Wertint); //leuchtet die Led erst leicht und dan stärker (je nach Wert und Temperatur),
64
    digitalWrite(LED1, LOW); //LED aus,
65
    digitalWrite(LED2, LOW); //LED aus
66
  }
67
68
  if (temperature >30.0) { //Wenn Temperatur größer als 30°C ist, 
69
    //analogWrite(motor, 255); //läuft Motor mit höchster Geschwindigkeit,
70
    analogWrite(LED, 255); //leuchtet LED in voller Helligkeit,
71
    digitalWrite(LED1, LOW); //LED aus,
72
    digitalWrite(LED2, LOW); //LED aus
73
    
74
  }
75
76
  
77
lcd.clear();  //löscht das komplette Display
78
lcd.setCursor(0,0);  //Cursor wird auf den Urspung gestetzt
79
lcd.print("Ventilator"); //Display in der ersten Zeile das Wort "Ventilator" aus 
80
lcd.setCursor(0,1); //Cursor wird auf eine andere Position gestezt (in der zweiten Spalte auf die erste Zeile
81
lcd.print("Temp: "); //Display gibt in der zweiten Zeile das Wort "Temp: " aus
82
lcd.print(temperature);// gibt den Wert der Temperatur von oben aus
83
lcd.setCursor(0,0); //Cursor wird wieder auf den Ursprung gesetzt
84
85
delay(1000);
86
 
87
88
}