Реле не работает

я проверил 6 тестов, и ни один из них не сработал.

#include "Wire.h"
#include "LCD.h"
#include "LiquidCrystal_I2C.h"
#include <Keypad.h>
#define A0    A0
#define A1    A1
#define A2    A2
#define A3    A3
#define A4    A4
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7);


const long interval = 1000; 
const long interval2 = 2000;
const long interval654321 = 1000;
unsigned long previousMillis = 0;


const byte ROWS = 5;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','u'},
  {'F','G','#','*'},
  {'4','5','6','d'},
  {'l','0','r','n'},
  {'7','8','9','s'}
};
byte rowPins[ROWS] = {33, 31, 35, 39, 37};
byte colPins[COLS] = {47, 45, 43, 41};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);


byte hour;
byte minute;
byte second;


byte selected = 0;
byte selected2 = 0;


byte screen = 0;


byte minuteDelay;


void setup() {
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  pinMode(A4, INPUT);
  pinMode(7, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  Serial.begin(9600);
  
  //setting up lcd and write made by: ZiemniakZPatelni
  lcd.begin (20,4);
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.setCursor(0,0);
  lcd.write("--------------------");
  lcd.setCursor(0,1);
  lcd.write("|     Made by:     |");
  lcd.setCursor(0,2);
  lcd.write("| ZiemniakZPatelni |");
  lcd.setCursor(0,3);
  lcd.write("--------------------");
  Serial.println("Turned on succesievly");
  delay (3000);


  //настройка часов на 12:00:00 и сброс экрана
  hour = 12;
  minute = 0;
  second = 0;
  lcd.setCursor(0,0);
  lcd.write("                            ");
  lcd.setCursor(0,1);
  lcd.write("                            ");
  lcd.setCursor(0,2);
  lcd.write("                            ");
  lcd.setCursor(0,3);
  lcd.write("                            ");
  Serial.println("Clock setted up succesievly");


  minuteDelay = 90;    //установка minuteDelay на 90
  Serial.println("minute delay setted to 90");


  byte customChar[] = {
    B11111,
    B00000,
    B00000,
    B00000,
    B00000,
    B00000,
    B00000,
    B00000
  };
  lcd.createChar(0, customChar);
  mainScreen();
}



void mainScreen() {  
  lcd.setCursor(0,2);
  lcd.write("general  time  delay");
}



void delayScreen() {
  lcd.setCursor(9,0);
  lcd.print(minuteDelay);
  lcd.setCursor(9,1);
  lcd.write((byte)0);
  lcd.setCursor(10,1);
  lcd.write((byte)0);
  char customKey = customKeypad.getKey();
  if(customKey == 's') {
    mainScreen();
    screen = 0;
  } else if(customKey == 'u') {
    minuteDelay = minuteDelay + 5;
    if(minuteDelay > 99) {
      lcd.setCursor(11,1);
      lcd.write((byte)0);
    }
  } else if(customKey == 'd') {
    minuteDelay = minuteDelay - 5;
    if(minuteDelay + 5 == 100) {
      lcd.setCursor(11,1);
      lcd.write(" ");
      lcd.setCursor(11,0);
      lcd.write(" ");
    }
  }
}


unsigned long previousMillis0 = 0;
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
unsigned long previousMillis3 = 0;
unsigned long previousMillis4 = 0;
boolean isReady0 = false;
boolean isReady1 = false;
boolean isReady2 = false;
boolean isReady3 = false;
boolean isReady4 = false;
void mainFunction0() {
  if(1023 - analogRead(A0) < 700) {
    digitalWrite(3, HIGH);
    unsigned long currentMillis5 = millis();
    if (currentMillis5 - previousMillis0 >= interval2) {
    previousMillis0 = currentMillis5;
    digitalWrite(3, LOW);
    isReady0 = false;
  }
}
}
void mainFunction1() {
  if(1023 - analogRead(A1) < 700) {
    digitalWrite(4, HIGH);
    unsigned long currentMillis4 = millis();
    if (currentMillis4 - previousMillis1 >= interval2) {
    previousMillis1 = currentMillis4;
    digitalWrite(4, LOW);
    isReady1 = false;
  }
}
}
void mainFunction2() {
  if(1023 - analogRead(A2) < 700) {
    digitalWrite(5, HIGH);
    unsigned long currentMillis3 = millis();
    if (currentMillis3 - previousMillis2 >= interval2) {
    previousMillis2 = currentMillis3;
    digitalWrite(5, LOW);
    isReady2 = false;
  }
}
}
void mainFunction3() {
  if(1023 - analogRead(A3) < 700) {
    digitalWrite(6, HIGH);
    unsigned long currentMillis2 = millis();
    if (currentMillis2 - previousMillis3 >= interval2) {
    previousMillis3 = currentMillis2;
    digitalWrite(6, LOW);
    isReady3 = false;
  }
}
}
void mainFunction4() {
  if(1023 - analogRead(A4) < 700) {
    digitalWrite(7, HIGH);
    unsigned long currentMillis1 = millis();
    if (currentMillis1 - previousMillis4 >= interval2) {
    previousMillis4 = currentMillis1;
    digitalWrite(7, LOW);
    isReady4 = false;
  }
}
}


void mainScreenSelector() {
  if(selected == 0) {
    lcd.setCursor(0,3);
    lcd.write("                    ");
    lcd.setCursor(0,3);
    lcd.write((byte)0);
    lcd.setCursor(1,3);
    lcd.write((byte)0);
    lcd.setCursor(2,3);
    lcd.write((byte)0);
    lcd.setCursor(3,3);
    lcd.write((byte)0);
    lcd.setCursor(4,3);
    lcd.write((byte)0);
    lcd.setCursor(5,3);
    lcd.write((byte)0);
    lcd.setCursor(6,3);
    lcd.write((byte)0);
  } else if(selected == 1) {
    lcd.setCursor(0,3);
    lcd.write("                    ");
    lcd.setCursor(9,3);
    lcd.write((byte)0);
    lcd.setCursor(10,3);
    lcd.write((byte)0);
    lcd.setCursor(11,3);
    lcd.write((byte)0);
    lcd.setCursor(12,3);
    lcd.write((byte)0);
  } else if(selected == 2) {
    lcd.setCursor(0,3);
    lcd.write("                    ");
    lcd.setCursor(15,3);
    lcd.write((byte)0);
    lcd.setCursor(16,3);
    lcd.write((byte)0);
    lcd.setCursor(17,3);
    lcd.write((byte)0);
    lcd.setCursor(18,3);
    lcd.write((byte)0);
    lcd.setCursor(19,3);
    lcd.write((byte)0);
  }
  char customKey = customKeypad.getKey();
  if(customKey == 'r') {
    if(selected != 2) {
      selected ++;
    }
  } else if(customKey == 'l') {
    if(selected != 0) {
      selected --;
    }
  } else if(customKey == 's') {
    mainScreen();
    screen = 0;
  }  
  if(selected == 1 && customKey == 'n') {
    lcd.setCursor(0,0);
    lcd.write("                    ");
    lcd.setCursor(0,1);
    lcd.write("                    ");
    lcd.setCursor(0,2);
    lcd.write("                    ");
    lcd.setCursor(0,3);
    lcd.write("                    ");
    screen = 1;
  }
  if(selected == 2 && customKey == 'n') {
    lcd.setCursor(0,0);
    lcd.write("                    ");
    lcd.setCursor(0,1);
    lcd.write("                    ");
    lcd.setCursor(0,2);
    lcd.write("                    ");
    lcd.setCursor(0,3);
    lcd.write("                    ");
    screen = 2;
  }
}
void timeScreenSelector() {
  if(selected2 == 0) {
    lcd.setCursor(0,1);
    lcd.write("                    ");
    lcd.setCursor(6,1);
    lcd.write((byte)0);
    lcd.setCursor(7,1);
    lcd.write((byte)0);
  } else if(selected2 == 1) {
    lcd.setCursor(0,1);
    lcd.write("                    ");
    lcd.setCursor(9,1);
    lcd.write((byte)0);
    lcd.setCursor(10,1);
    lcd.write((byte)0);
  } else if(selected2 == 2) {
    lcd.setCursor(0,1);
    lcd.write("                    ");
    lcd.setCursor(12,1);
    lcd.write((byte)0);
    lcd.setCursor(13,1);
    lcd.write((byte)0);
  }
  char customKey = customKeypad.getKey();
  if(customKey == 'r') {
    if(selected2 != 2) {
      selected2 ++;
    }
  } else if(customKey == 'l') {
    if(selected2 != 0) {
      selected2 --;
    }
  } else if(customKey == 'u') {
    if(selected2 == 0) {
      hour ++;
    } else if(selected2 == 1) {
      minute ++;
    } else if(selected2 == 2) {
      second ++;
    }
  } else if(customKey == 'd') {
    if(selected2 == 0) {
      hour --;
    } else if(selected2 == 1) {
      minute --;
    } else if(selected2 == 2) {
      second --;
    } 
  } else if(customKey == 's') {
    mainScreen();
    screen = 0;
  }  
}

unsigned long previousMillis36 = 0;
void loop() {
  const long interval3902 = 1;
  const long interval3 = interval3902 * 60000 * minuteDelay;
  unsigned long currentMillis36 = millis();
  if (currentMillis36 - previousMillis36 >= interval3) {
    previousMillis36 = currentMillis36;
    isReady0 = true;
    isReady1 = true;
    isReady2 = true;
    isReady3 = true;
    isReady4 = true;
  }
  //Serial.println(interval3);
  Serial.println(1023 - analogRead(A4));
  if(isReady0) {
    mainFunction0();
  }
  if(isReady1) {
    mainFunction1();
  }
  if(isReady2) {
    mainFunction2();
  }
  if(isReady3) {
    mainFunction3();
  }
  if(isReady4) {
    mainFunction4();
  }
  if(screen == 0) {
    clockUpdate1();
    minuteDelayLoop();
    mainScreenSelector();
  } else if(screen == 1) {
    clockUpdate2();
    timeScreenSelector();
  } else if(screen == 2) {
    delayScreen();
  }
  Clock();
}
void Clock() {
  unsigned long currentMillis3682 = millis();
  if (currentMillis3682 - previousMillis >= interval654321) {
    previousMillis = currentMillis3682;
    second ++;
  }
  if(second == 60) {
    second = 0;
    minute ++;
  } else if(second == -1) {
    second = 59;
    minute --;
  }
  if(minute == 60) {
    minute = 0;
    hour ++;
  } else if(minute == -1) {
    minute = 59;
    hour --;
  }
  if(hour == 24) {
    hour = 0;
  } else if(hour == -1) {
    hour = 23;
  }
}
void clockUpdate2() {
  lcd.setCursor(0,0);
  if(hour < 10) {
    lcd.setCursor(6,0);
    lcd.print(0);
    lcd.setCursor(7,0);
    lcd.print(hour);
    lcd.setCursor(8,0);
    lcd.write(":");
  } else {
    lcd.setCursor(6,0);
    lcd.print(hour);
    lcd.setCursor(8,0);
    lcd.write(":");
  }
  if(minute < 10) {
      lcd.setCursor(9,0);
      lcd.print(0);
      lcd.setCursor(10,0);
      lcd.print(minute);
      lcd.setCursor(11,0);
      lcd.write(":");
    } else {
      lcd.setCursor(9,0);
      lcd.print(minute);
      lcd.setCursor(11,0);
      lcd.write(":");
    }
    if(second < 10) {
      lcd.setCursor(12,0);
      lcd.print(0);
      lcd.setCursor(13,0);
      lcd.print(second);
    } else {
      lcd.setCursor(12,0);
      lcd.print(second);
    }
}



void minuteDelayLoop() {
  lcd.setCursor(2,0);
  lcd.print(minuteDelay);
  lcd.setCursor(6,0);
  lcd.write("minute delay");
}


void clockUpdate1() {
  lcd.setCursor(0,1);
  if(hour < 10) {
    lcd.setCursor(6,1);
    lcd.print(0);
    lcd.setCursor(7,1);
    lcd.print(hour);
    lcd.setCursor(8,1);
    lcd.write(":");
  } else {
    lcd.setCursor(6,1);
    lcd.print(hour);
    lcd.setCursor(8,1);
    lcd.write(":");
  }
  if(minute < 10) {
      lcd.setCursor(9,1);
      lcd.print(0);
      lcd.setCursor(10,1);
      lcd.print(minute);
      lcd.setCursor(11,1);
      lcd.write(":");
    } else {
      lcd.setCursor(9,1);
      lcd.print(minute);
      lcd.setCursor(11,1);
      lcd.write(":");
    }
    if(second < 10) {
      lcd.setCursor(12,1);
      lcd.print(0);
      lcd.setCursor(13,1);
      lcd.print(second);
    } else {
      lcd.setCursor(12,1);
      lcd.print(second);
    }
  }

плис помоги мне

, 👍0

Обсуждение

Что вы имеете в виду, говоря, что они "не работают"? Загрузите скетч примера "Blink.ino" и подключите его к контакту 13. Посмотрим, сработает ли это. Если это так, то ваш код не делает то, что вы думаете, - что бы это ни значило., @Majenko

Также.... *какая* эстафета?, @Majenko

он щелкает, но не работает с этим кодом, @ZiemniakZPatelni

Тогда ретрансляция в порядке, и это ваш код, который неверен., @Majenko

Это ваш собственный код? К какому контакту подключено ваше реле?, @StarCat

ваш код " clockUpdate` излишне сложен ... вам не нужно "Устанавливать источник" для последовательных мест печати, поэтому блоки "остальное" не требуются, @jsotola

Пожалуйста, уточните, что именно не работает, что вы пробовали и что произошло. Возможно, упростите свой код, чтобы было легче устранять неполадки., @StarCat

Разместите схему, не такую запутанную, как у вас на проводе, включите все соединения, питание и заземление. Включите ссылки для каждой части оборудования. Есть некоторые несоответствия, которые сбивают меня с толку., @Gil