не могли бы вы проверить мой код, в чем проблема?
#include <Arduino.h>
#include <Wire.h>
#include <RTClib.h>
int hour1 = 2;
int min1 = 40;
int sec1 = 0;
int hour2 = 2;
int min2 = 39 ;
int sec2 = 10;
const int light = 13;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
RTC_DS1307 rtc;
void setup()
{
Serial.begin(9600);
Wire.begin();
rtc.begin();
pinMode(light, OUTPUT);
pinMode(2, INPUT_PULLUP);
pinMode(3,INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
}
void loop()
{
DateTime now = rtc.now();
buttonState1 = digitalRead(2);
buttonState2 = digitalRead(3);
buttonState3 = digitalRead(4);
if( buttonState1 == LOW)
{ if(now.hour() == hour1 && now.minute()== min1 && now.second() == sec1)
{
digitalWrite(light, HIGH);
}
if(now.hour() == hour2 && now.minute()== min2 && now.second() == sec2)
{
digitalWrite(light, LOW);
}
}
if(buttonState2 == LOW)
{ int x1 = now.hour();
int x2 = now.minute();
if (now.hour() == x1 && now.minute()== x2)
{
digitalWrite(light, HIGH);
}
if(now.hour() == hour2 && now.minute()== min2 && now.second() == sec2)
{
digitalWrite(light, LOW);
}
}
if(buttonState3 == LOW)
{ int y1 = now.hour();
int y2 = now.minute();
{ if (now.hour() == y1 && now.minute()== y2)
{
digitalWrite(light, LOW);
}
if(now.hour() == hour1 && now.minute()== min1 && now.second() == sec1)
{
digitalWrite(light, HIGH);
}
} }
}
- контакт 2 для кнопки 1
- контакт 3 для кнопки 2
- контакт 4 для кнопки 3
мое требование:-
- контакт 2 для кнопки 1: свет должен включаться и выключаться в соответствии с заданным временем, т. е. час1, мин1, сек1 и час2, мин23 и сек2 соответственно....
- контакт 3 для кнопки 2: индикатор должен загореться после нажатия кнопки, и это время должно быть сохранено в x1, он должен быть выключен в час2, мин2 и сек2... и в следующий раз снова должен загореться в x1. ..
- pin 4 для кнопки 3: свет должен быть выключен после нажатия кнопки, и это время должно быть сохранено в y1, оно должно быть включено в hour1, min1 и sec1... и в следующий раз снова должно быть выключено в y1. ..
работа программы:
- контакт 2 для кнопки 1: работает правильно
- контакт 3 для кнопки 2: свет включается сразу после того, как он выключен... не в течение времени, сохраненного x1 и x2
- Контакт 4 для кнопки 3 гаснет сразу после того, как он находится в состоянии... не во время сохранения y1 и y2
@pranav, 👍-7
Обсуждение1 ответ
▲ 6
Ваша проблема в этих строках:
if(digitalRead(2 == HIGH)) ...
if(digitalRead(3 == HIGH)) ...
if(digitalRead(4 == HIGH)) ...
Все скобки неправильные! Правильный синтаксис:
if(digitalRead(2) == HIGH) ...
if(digitalRead(3) == HIGH) ...
if(digitalRead(4) == HIGH) ...
Что вы сравнивали 2
, 3
и 4
со значением HIGH
, а также потому, что они t равно, результат был 0
. Затем код выполнял digitalRead(0)
и, если результат был не 0
, выполнял содержимое фигурных скобок.
,
@John Burger
Обратите внимание, что исходный вопрос был изменен после этого ответа. Ответ отражает проблему того времени., @John Burger
Смотрите также:
- Преобразование в Unix Timestamp и обратно
- Разница между «time_t» и «DateTime»
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- DS1307RTC Выводит загадочную дату 165/165/2165. Какие возможны исправления?
- RtcDateTime' не называет тип
- Библиотека времени Arduino и библиотеки RTC
- Не удалось выделить SSD1306 при добавлении константы
- Как получить текущую дату
этот код предназначен для включения и выключения света в соответствии с rtc при нажатии кнопки, но работает только первая кнопка, а две другие не могут считывать и сохранять время. предложить исправления, @pranav
Не могли бы вы сделать минимальные усилия, чтобы прояснить ваш вопрос, т.е. написать правильный английский, правильно отформатировать код, описать ошибки, возвращаемые компилятором..., @jfpoilpret