/* Showing number 0-9 on a Common Cathode 7-segment LED display
Displays the numbers 0-9 on the display, with one second inbetween.
A
---
F | | B
| G |
---
E | | C
| |
---
D
*/
#include "DHT.h" //DHT Bibliothek laden
#define DHTTYPE DHT22 // Arduino HW DHT11
int DHTPIN = A0;
DHT DhtSensor (DHTPIN, DHTTYPE); //Der Sensor wird ab jetzt DhtSensor genannt
#define HIGH 1
#define LOW 0
int on = 0, off = 1;
// Pin 2-8 is connected to the 7 segments of the display.
int TimeDisplay = 500; // in microseconds
int pinA = 2;//red
int pinB = 3;//grey
int pinC = 4;//brown
int pinD = 5;//purple
int pinE = 6;//pink
int pinF = 7;//yellow
int pinG = 8;// brown
int D1 = 9; //blue
int D2 = 10; // green
int D3 = 11;//orange
int D4 = 12;//black
int dpPIN = 13;
int Option = 1, Zahl;
bool Komma = true;
void setup() {
// initialize the digital pins as outputs.
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(dpPIN, OUTPUT);
pinMode(D1, OUTPUT);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(D4, OUTPUT);
Serial.begin(9600);
DhtSensor.begin();
}
void loop() {
int Temperatur = DhtSensor.readTemperature()*10;
int Luftfeuchtigkeit = DhtSensor.readHumidity ()*10;
if (Option == 1) {
Zahl = Temperatur;
Komma = true;
}
//else if () {
// }
else {Zahl = Luftfeuchtigkeit; }
Serial.print("Temperatur: ");
Serial.print(Zahl);
Serial.println("° Celsius");
if (Zahl>=0){
digitalWrite(D1, on);
digitalWrite(D2, off);
digitalWrite(D3, off);
digitalWrite(D4, off);
digitalWrite(dpPIN, LOW);
choice(Zahl/100);
delay (800);
digitalWrite(D1, off);
digitalWrite(D2, on);
digitalWrite(D3, off);
digitalWrite(D4, off);
if (Komma){digitalWrite(dpPIN, HIGH);}
else {digitalWrite(dpPIN, LOW);}
choice ((Zahl%100)/10);
delay (800);
digitalWrite(D1, off);
digitalWrite(D2, off);
digitalWrite(D3, on);
digitalWrite(D4, off);
digitalWrite(dpPIN, LOW);
choice (Zahl%10);
delay (800);
digitalWrite(D1, off);
digitalWrite(D2, off);
digitalWrite(D3, off);
digitalWrite(D4, on);
digitalWrite(dpPIN, LOW);
choice (Option + 9); // 10 for C , 11 for F , 12 for P
delay (800);
}
// Aufgabe 1 (8 Punkte). Die Aufgabe besteht darin, die Funktion loop ab diesem Punkt so zu ändern, dass auch eine negative Temperatur korrekt dargestellt wird.
// Die Funktion für negative Werte heißt Minus() und wurde bereits geschrieben.
// ******************************
// Aufgabe 2 (4 Punkte). Diese Software wird auf einem Thermometer installiert, das in den USA verkauft wird.
// Benutze die schon existierende Variable Option:
// Wenn Option = 1 oder Option = 3, bleibt die Variable Zahl unverändert.
// Wenn Option = 2, wird die Variable Zahl zuerst durch 10 dividiert und anschließend mit der Formel (Temp in Fahrenheit = Temp * 1.8 + 32) umgerechnet.
// Für die Benotung wird überprüft, ob die Umrechnung korrekt durchgeführt wurde und ob die Anzeige auf dem Display richtig ist.
// Zur Kontrolle: 20 °C entsprechen 68 °F, und –40 °C entsprechen –40 °F.
// Du kannst das Ergebnis der Zeile Serial.print(Zahl); im Serial Monitor überprüfen.
else if (Zahl <= -100){
}
else {
}
}
void zero () {
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
}
void one (){
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
}
void two () {
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
}
void three () {
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
}
void four (){
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void five (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void six (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void seven (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
}
void eight (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void nine (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void LetterC (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
}
void LetterF (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void LetterP (){
digitalWrite(pinA, HIGH);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
}
void Minus (){
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
}
void choice (int Zahl){
switch (Zahl) {
case 0:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9:
nine();
break;
case 10:
LetterC();
break;
case 11:
LetterF();
break;
case 12:
LetterP();
break;
case 13:
Minus();
break;
}
}