Hi guys,
I am completly new to programming in general. I am pretty sure that a lot of the code can be written more elegant way, but we all need to start with something
.
Anyway, I have problem, that no matter what I do, I always have voltage on pin 1, which mess with my display. The problem must be software, since I have written another program that just shows sequnce 0-9 and it works okay.
Can someone tells me why? Thanks a lot.
#include <DHT.h>;
//Pin Assignments
#define DHTPIN1 11 // dht 22 sensor 1
#define DHTPIN2 12 // dht 22 sensor 2
//Declarations
#define DHTTYPE1 DHT22 // DHT 22
#define DHTTYPE2 DHT22 // DHT 22
DHT dht1(DHTPIN1, DHTTYPE1); // DHT1 = vnitřní
DHT dht2(DHTPIN2, DHTTYPE2); // DHT2 = vnější
//Variables
double h1, t1;
double h2, t2;
double t;
double hum;
double ha;
int pocitadlo;
int fanPin = 13; //ledka na portu 13
int scenar;
// Digital
#define ON HIGH // Jestli máme CA (společná katoda) displej
const int a = 1; // a číslo pinu segmentu "a"
const int b = 2; // a číslo pinu segmentu "b"
const int c = 3; // a číslo pinu segmentu "c"
const int d = 4; // a číslo pinu segmentu "d"
const int e = 5; // a číslo pinu segmentu "e"
const int f = 6; // a číslo pinu segmentu "f"
const int g = 7; // a číslo pinu segmentu "g"
const int h = 8; // a číslo pinu segmentu "
const int i = 9; // a číslo pinu segmentu "
const int j = 10; // a číslo pinu segmentu
void setup()
{
delay(500); // Please do not alter these. these delays will make sure your arduino will run properly
Serial.begin(9600);
delay(500);
dht1.begin();
dht2.begin();
pinMode(fanPin, OUTPUT);
for(int thisPin = 0; thisPin <= 10; thisPin++) { // nastavení pinu každého segmentu jako výstupu
pinMode(thisPin,OUTPUT);
}
}
void loop()
{
h1 = dht1.readHumidity();
t1 = dht1.readTemperature();
h2 = dht2.readHumidity();
t2 = dht2.readTemperature();
t = t1-t2;
ha = h1-7-h2; // upravená hodnota - srovnana nepresnost
clear();
digital_l(); // zobrazit pomlčku na displeji
delay(1000); // počkat 1000 ms (1s
digital_l(); // zobrazit pomlčku na displeji
delay(1000); // počkat 1000 ms (1s
if (isnan(h1) || isnan(h2)) {
Serial.println("Failed to read from DHT sensor!");
digital_f(); // zobrazit 1 na displeji
delay(10000); // počkat 1000 ms (1s)
return;
}
if ((pocitadlo <= 5) && (ha >= 10) && (h1 >= 60) ) {
scenar = 1;
Serial.print("DHT1: ");
Serial.print(h1);
Serial.print("% , ");
Serial.print(t1);
Serial.print("°C DHT2: ");
Serial.print(h2);
Serial.print("% , ");
Serial.print(t2);
Serial.println("°C , ");
Serial.print(ha);
Serial.println(" rozdíl , ");
Serial.print(pocitadlo);
Serial.println(" pocitadlo , ");
Serial.print(scenar);
Serial.println(" scenar , ");
delay(100);
if ((h1 >=0) && (h1<10)){
digital_0(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=10) && (h1<20)){
digital_1(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=20) && (h1<30)){
digital_2(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=30) && (h1<40)){
digital_3(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=40) && (h1<50)){
digital_4(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=50) && (h1<60)){
digital_5(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=60) && (h1<70)){
digital_6(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=70) && (h1<80)){
digital_7(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=80) && (h1<90)){
digital_8(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=90) && (h1<100)){
digital_9(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
digitalWrite(fanPin, HIGH); // zapnout vetrak
delay(900000); // pockat 15 min
digitalWrite(fanPin, LOW); // vypnout vetrak
delay(1000); // wait for a second
pocitadlo = pocitadlo+1;
}
if (pocitadlo > 5) { // reset počítadla, pokud udělá 6 cyklů
scenar = 2;
Serial.print("DHT1: ");
Serial.print(h1);
Serial.print("% , ");
Serial.print(t1);
Serial.print("°C DHT2: ");
Serial.print(h2);
Serial.print("% , ");
Serial.print(t2);
Serial.println("°C , ");
Serial.print(ha);
Serial.println(" rozdíl , ");
Serial.print(pocitadlo);
Serial.println(" pocitadlo , ");
Serial.print(scenar);
Serial.println(" scenar , ");
delay(100);
if ((h1 >=0) && (h1<10)){
digital_0(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=10) && (h1<20)){
digital_1(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=20) && (h1<30)){
digital_2(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=30) && (h1<40)){
digital_3(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=40) && (h1<50)){
digital_4(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=50) && (h1<60)){
digital_5(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=60) && (h1<70)){
digital_6(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=70) && (h1<80)){
digital_7(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=80) && (h1<90)){
digital_8(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=90) && (h1<100)){
digital_9(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
delay(10800000); // pockat 180 min
pocitadlo = 0;
}
else {
scenar = 3;
Serial.print("DHT1: ");
Serial.print(h1);
Serial.print("% , ");
Serial.print(t1);
Serial.print("°C DHT2: ");
Serial.print(h2);
Serial.print("% , ");
Serial.print(t2);
Serial.println("°C , ");
Serial.print(ha);
Serial.println(" rozdíl , ");
Serial.print(pocitadlo);
Serial.println(" pocitadlo , ");
Serial.print(scenar);
Serial.println(" scenar , ");
delay(100);
if ((h1 >=0) && (h1<10)){
digital_0(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=10) && (h1<20)){
digital_1(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=20) && (h1<30)){
digital_2(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=30) && (h1<40)){
digital_3(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=40) && (h1<50)){
digital_4(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=50) && (h1<60)){
digital_5(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=60) && (h1<70)){
digital_6(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=70) && (h1<80)){
digital_7(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=80) && (h1<90)){
digital_8(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
if ((h1 >=90) && (h1<100)){
digital_9(); // zobrazit 1 na displeji
delay(1000); // počkat 1000 ms (1s)
}
delay(900000); // pockat 15 min
pocitadlo = 0;
}
//Print temp and humidity values to serial monitor.
// Serial.print("DHT1: ");
// Serial.print(h1);
// Serial.print("% , ");
// Serial.print(t1);
// Serial.print("°C DHT2: ");
// Serial.print(h2);
// Serial.print("% , ");
// Serial.print(t2);
// Serial.println("°C , ");
// Serial.print(ha);
// Serial.println(" rozdíl , ");
// delay(1000); // Delay 1 second.
}
void digital_1() { // zobrazit 1 na displeji
// vypnout všechny segmenty
clear();
digitalWrite(a, ON);
digitalWrite(c, ON);
}
void digital_2() { // zobrazit 2 na displeji
// vypnout všechny segmenty
clear();
digitalWrite(a, ON);
digitalWrite(b, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
digitalWrite(j, ON);
}
void digital_3() { // zobrazit 3 na displeji
clear();
digitalWrite(a, ON);
digitalWrite(b, ON);
digitalWrite(c, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
}
void digital_4() { // zobrazit 4 na displeji
clear();
digitalWrite(a, ON);
digitalWrite(b, ON);
digitalWrite(c, ON);
digitalWrite(h, ON);
}
void digital_5() { // zobrazit 5 na displeji
clear();
digitalWrite(b, ON);
digitalWrite(c, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
digitalWrite(h, ON);
}
void digital_6() { // zobrazit 6 na displeji
clear();
digitalWrite(b, ON);
digitalWrite(c, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
digitalWrite(h, ON);
digitalWrite(j, ON);
}
void digital_7() { // zobrazit 7 na displeji
clear();
digitalWrite(a, ON);
digitalWrite(c, ON);
digitalWrite(g, ON);
}
void digital_8() { // zobrazit 8 na displeji
clear();
digitalWrite(a, ON);
digitalWrite(b, ON);
digitalWrite(c, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
digitalWrite(h, ON);
digitalWrite(j, ON);
}
void digital_9() { // zobrazit 9 na displeji
clear();
digitalWrite(a, ON);
digitalWrite(b, ON);
digitalWrite(c, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
digitalWrite(h, ON);
}
void digital_0() { // zobrazit 0 na displeji
clear();
digitalWrite(a, ON);
digitalWrite(c, ON);
digitalWrite(e, ON);
digitalWrite(g, ON);
digitalWrite(h, ON);
digitalWrite(j, ON);
}
void digital_f() { // zobrazit 0 na displeji
clear();
digitalWrite(b, ON);
digitalWrite(g, ON);
digitalWrite(h, ON);
digitalWrite(j, ON);
}
void digital_l() { // zobrazit 0 na displeji
clear();
digitalWrite(b, ON);
}
void clear () { // vypnout všechny segmenty
for(int thisPin = 0; thisPin <= 10; thisPin++) {
digitalWrite(thisPin, !ON);
}
}