Looking for a silly mistake

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 :wink: .

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);
 }
}

Welcome to the forum

If you are using a Uno, Nano, Mega or any 328P based Arduino then pins 0 and 1 are used by the Serial interface so avoid using them for anything else unless you really, know what you are doing and won't be using the Serial interface

No.
There is a pull up resistor on pin1 so it is a hardware issue.
But as this is needed to provide a default HIGH for the RX pin, which of course an input.
You can override this if that pin is made an output, or if the external device can pull this down. But that means you would have to remove this external device before you could upload any code.

Hi, @shizzu
Welcome to the forum.

Thanks for using code tags. :+1:

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?
Hand drawn and photographed is perfectly acceptable.
Please include ALL hardware, component names and pin labels.

How are you powering your project?

Thanks.. Tom... :smiley: :+1: :coffee: :australia:

Hi,
I start with agreeing with Grumpy Mike: never use the RX/TX pins (0,1) and avoid using the "delay" function - which you are using a lot. I am interested to know what you want to accomplish? Can you give a circuit description of it?

Hi, Tom you were a second before me.