Свет для аквариума, нужна помощь.

Тема в разделе "Arduino & Shields", создана пользователем Nitro77rus, 3 апр 2015.

  1. Nitro77rus

    Nitro77rus Гик

    Купили аквариум, и появилась необходимость управлять светом. Режим работы такой: 5 часов горит, 4 часа -темно, 7 часов опять горит и опять темно, до следующего утра.
    Вот только опыта у меня мало. Подскажите, пожалуйста, как лучше устанавливать периоды работы лампы? Моих познаний хватило только на "delay(18000000)".
     
  2. только часы реального времени
     
  3. Lagvin

    Lagvin Нерд

    Тут Вам пригодится и такая вещь
     
  4. Lagvin

    Lagvin Нерд

    кстати тут темка для Вас интересная
     
  5. X-Dron

    X-Dron Гик

  6. Nitro77rus

    Nitro77rus Гик

    ... так, с часами вроде разобрался, всё работает.
    Но ни как не могу показания вывести на четырёхразрядный индикатор (Troyka-модуль)...

    Код (Text):
    // Подключаем библиотеку
    #include <QuadDisplay.h>

    #define LIGHT 13

    #define PIN 8


    #include <Wire.h>
    #include "DS1307.h"

    DS1307 clock;//define a object of DS1307 class
    void setup()
    {
      Serial.begin(9600);
      clock.begin();
      //clock.fillByYMD(2015,4,14);//Jan 19,2013
      //clock.fillByHMS(14,21,10);//15:28 30"
      //clock.fillDayOfWeek(TUE);//Saturday
      //clock.setTime();//write time to the RTC chip
      pinMode(LIGHT, OUTPUT);
    }
    void loop()
    {

      printTime();

      if (clock.hour >= 7 && clock.hour >= 12)
      {
        digitalWrite(LIGHT, HIGH);
      }
      else if (clock.hour >= 16 && clock.hour >= 23)
      {
        digitalWrite(LIGHT, HIGH);
      }

      else
      {
        digitalWrite(LIGHT, LOW);
      }
    }
    /*Function: Display time on the serial monitor*/
    void printTime()
    {
      clock.getTime();
      Serial.print(clock.hour, DEC);
      Serial.print(":");
      Serial.print(clock.minute, DEC);
      Serial.print(":");
      Serial.print(clock.second, DEC);
      Serial.print("    ");
      Serial.print(clock.month, DEC);
      Serial.print("/");
      Serial.print(clock.dayOfMonth, DEC);
      Serial.print("/");
      Serial.print(clock.year+2000, DEC);
      Serial.print(" ");
      Serial.print(clock.dayOfMonth);
      Serial.print("*");
      switch (clock.dayOfWeek)// Friendly printout the weekday
      {
      case MON:
        Serial.print("MON");
        break;
      case TUE:
        Serial.print("TUE");
        break;
      case WED:
        Serial.print("WED");
        break;
      case THU:
        Serial.print("THU");
        break;
      case FRI:
        Serial.print("FRI");
        break;
      case SAT:
        Serial.print("SAT");
        break;
      case SUN:
        Serial.print("SUN");
        break;
      }
      Serial.println(" ");

    displayFloat(PIN, (clock.hour), 2);

    }
     
    ...могу вывести либо часы, либо минуты, а всё вместе ни как :(
     
  7. iglooshtosser

    iglooshtosser Гик

    Простите великодушно, а в чем смысл проверки:
    if (clock.hour >= 7 && clock.hour >= 12)

    ведь это значит: если час больше 7 И больше 12...
    но если час больше 12, он и подавно больше 7!
    то же и с:
    if (clock.hour >= 16 && clock.hour >= 23)...
     
    X-Dron нравится это.
  8. geher

    geher Гуру

    Код (Text):

    const static uint8_t qadNumerals[] = {QD_0, QD_1, QD_2, QD_3, QD_4, QD_5, QD_6, QD_7, QD_8, QD_9};
    void displayTime(int hour,int minute){
      displayDigits(QUAD_DATA,qadNumerals[hour/10],qadNumerals[hour%10],qadNumerals[minute/10]&QD_DOT,qadNumerals[minute%10]);
    }
     
     
    Nitro77rus нравится это.
  9. Nitro77rus

    Nitro77rus Гик

    Ой, точно... проверял на минутах, видать пока правил на часы знаки перепутал :)
    Должно быть так: if (clock.hour >= 7 && clock.hour <= 12) и т.д.

    Спасибо, что заметили :)
     
  10. Nitro77rus

    Nitro77rus Гик

    А можно чуть подробнее? Просто копи/паст не помогло :(

    Всё!!! Разобрался, спасибо! :)
     
    Последнее редактирование: 14 апр 2015