Помогите пожалуйста со скетчем!

Тема в разделе "Флудилка", создана пользователем zzzkrestzzz, 20 мар 2016.

  1. zzzkrestzzz

    zzzkrestzzz Нуб

    Здравствуйте!
    Нужна помощь в написании скетча, а именно - срабатывание реле в заданное время. Имеется: Uno, часы ds1307, 2-х канальное реле.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Помощь в написании - это написать вам скетч?
     
    ИгорьК нравится это.
  3. ИгорьК

    ИгорьК Гуру

    Мир упростился... ;)
     
  4. zzzkrestzzz

    zzzkrestzzz Нуб

    Я только начинаю, прошу сильно не пинать за тупость, и некорректные вопросы. Из примеров я нашел как запустить часы, а вот как из низ взять минуты часы хз.


    // Date and time functions using a DS1307 RTC connected via I2C and Wire lib
    #include <Wire.h>
    #include "RTClib.h"

    #if defined(ARDUINO_ARCH_SAMD)
    // for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
    #define Serial SerialUSB
    #endif

    RTC_DS1307 rtc;

    char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

    void setup () {

    #ifndef ESP8266
    while (!Serial); // for Leonardo/Micro/Zero
    #endif

    Serial.begin(9600);
    if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
    }

    if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    //rtc.adjust(DateTime(2016, 03, 20, 16, 42, 00));
    }
    }

    void loop () {
    DateTime now = rtc.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    delay(3000);
    }
     
  5. Megakoteyka

    Megakoteyka Оракул Модератор

    1. В Aduino IDE нажмите Ctrl+T для автоматического форматирования кода.
    2. В редакторе поста на форуме нажмите кнопку "<>" и в окошко вставьте то, что получилось в первом пункте.
     
  6. zzzkrestzzz

    zzzkrestzzz Нуб

    Код (C++):
    ds1307:53: error: lvalue required as left operand of assignment

       if (now.minute() = 10);

                        ^

    exit status 1
    lvalue required as left operand of assignment
     
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    А зачем вы пытаетесь присвоить константе, которую возвращает вызов функции, значение константы 10?
    Операция сравнения выглядит вот так: ==.
    Прочитайте еще вот это.
     
  8. zzzkrestzzz

    zzzkrestzzz Нуб

    я просто пытался сделать чтобы когда на "часах" 10 минут в серийный монитор шло сообщение "LED". я вообще деревянный в программировании, пытаюсь чему-то научиться
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    Вы пытались сравнить значение, которое возвращает метод minute() объекта now со значением 10, но вместо операции сравнения (==) написали операцию присваивания (=).
     
  10. zzzkrestzzz

    zzzkrestzzz Нуб

    Я исправил, в мониторе порта не то что я ожидал
     
  11. Megakoteyka

    Megakoteyka Оракул Модератор

    Потому что у вас задержка стоит 3 секунды. Возьмите за правило комментировать каждую строку кода, будете лучше понимать, что пишете.
     
  12. zzzkrestzzz

    zzzkrestzzz Нуб

    В мониторе порта LED пишется постоянно, Подскажите как сделать чтобы прописывалось на заданное время?
     
  13. Megakoteyka

    Megakoteyka Оракул Модератор

    Я вообще не вижу строку, которая должна писать "LED". Приведите код в порядок и выложите то, что есть на данный момент.
     
  14. zzzkrestzzz

    zzzkrestzzz Нуб

     
  15. Megakoteyka

    Megakoteyka Оракул Модератор

    Не нужно вставлять код в цитату. Нужно:
    Кнопка вставки кода девятая слева.

    Можете объяснить, что должна делать вот эта строка?
    Код (C++):
    if (now.minute(), DEC == 1);
    Попробуйте расписать посимвольно - что и зачем.
     
  16. zzzkrestzzz

    zzzkrestzzz Нуб

    я хотел написать, что если значение минуты имеет значение 1, в мониторе порта прописывается LED.
     
  17. Megakoteyka

    Megakoteyka Оракул Модератор

    Я понимаю, что вы хотели написать, но речь не о том, чего вы хотели, а том, что получилось.
    1. if(now.minute(), DEC ==1); - зачем тут подчеркнутый фрагмент? Что он должен сделать?
    2. if(now.minute(), DEC ==1); - зачем тут точка с запятой? как она влияет на выполнение этой строки?
     
  18. zzzkrestzzz

    zzzkrestzzz Нуб

    Я только начинаю изучать ардуино и программирование, не судите строго. подскажите как можно подключить реле или светодиод к часам. (включение по времени)
     
  19. Megakoteyka

    Megakoteyka Оракул Модератор

    Я вам и пытаюсь объяснить вашу ошибку. Но если вы не хотите разбираться, то просто напишите так:
    Код (C++):
    if (now.minute() == 1)
    {
        Serial.println("LED");
    }
     
  20. zzzkrestzzz

    zzzkrestzzz Нуб

    Большое спасибо. Я хочу разобраться, для меня это тяжело, но интересно.