Реле не работает
я проверил 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
Смотрите также:
- Как инициализировать цифровой выходной контакт как LOW
- Разница между массивом char и массивом unsigned char
- Несколько кнопок для управления реле
- Смешанная структура с int и string
- Как отправить информацию с сайта на ардуино?
- Выходное напряжение цифрового вывода падает при управлении реле
- Ищу ссылку на двухполюсное однопозиционное реле (DPST) для Arduino.
- Вопрос новичка - Biltong Box Project
Что вы имеете в виду, говоря, что они "не работают"? Загрузите скетч примера "Blink.ino" и подключите его к контакту 13. Посмотрим, сработает ли это. Если это так, то ваш код не делает то, что вы думаете, - что бы это ни значило., @Majenko
Также.... *какая* эстафета?, @Majenko
он щелкает, но не работает с этим кодом, @ZiemniakZPatelni
Тогда ретрансляция в порядке, и это ваш код, который неверен., @Majenko
Это ваш собственный код? К какому контакту подключено ваше реле?, @StarCat
ваш код " clockUpdate` излишне сложен ... вам не нужно "Устанавливать источник" для последовательных мест печати, поэтому блоки "остальное" не требуются, @jsotola
Пожалуйста, уточните, что именно не работает, что вы пробовали и что произошло. Возможно, упростите свой код, чтобы было легче устранять неполадки., @StarCat
Разместите схему, не такую запутанную, как у вас на проводе, включите все соединения, питание и заземление. Включите ссылки для каждой части оборудования. Есть некоторые несоответствия, которые сбивают меня с толку., @Gil