1 | #include <LiquidCrystal.h>
|
2 | LiquidCrystal lcd(12,11,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 | }
|