Доработка фонтана для кошек

Тема в разделе "Arduino & Shields", создана пользователем Сергей Есенин, 4 май 2016.

  1. Здравствуйте.
    Хочу оснастить фонтанчик(поилка) для кошек тремя светодиодами и чтобы при нажатии кнопки загорался зеленый, ровно через сутки желтый и еще через сутки красный. Питание предполагается брать с БП (12V 350mA) врезкой. Есть "Полный набор Z", наполовину прямые руки, желание, скилл минус 1000, паяльник. Подойдет ли такое питание для Ардуино или нужно что-то еще включать в схему? Какой код нужен? Прошу помощи.
     
  2. Airbus

    Airbus Радиохулиган Модератор

    Питание подойдёт.Больше ничего включать не надо (кроме светодиодов)Код пишите-выкладывайте если будут проблемы поможем.Кошки цвета не различают-так что зря Вы для них так стараетесь.
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    управлять поилкой не нужно, она автономная?
    Тогда вообще просто :
    • при нажатии кнопки сбрасываем счетчик (переменная типа unsigned long), включаем зеленый
    • проверяем, прошло ли 86400000 мсек (первые сутки), если да,то гасим зеленый и включаем желтый
    • проверяем, прошло ли 172800000 мсек (вторые сутки), если да,то гасим желтый и включаем красный
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Не проще в "рукопашную" включать светодиоды для Кисок?Более странного применения Ардуино ещё не видел.тогда уж проще (и дешевле) сделать на тини-13
     
  5. Светодиоды не для кисок, а для меня, чтобы не забывать менять воду. Большое спасибо что не оставили без внимания. На днях попробую написать код.
     
  6. Airbus

    Airbus Радиохулиган Модератор

    А воду то всё равно менять придётся вам вручную.У меня так кот сам пьёёт только из крана свежую воду :)
     
  7. Benny_Ray

    Benny_Ray Нерд

    Попробуйте вот как то так, реально писал и не коленке и на пальцах, не факт что будет работать правильно.

    Код (C++):
    #define BUTTON_PIN 9
    #define GREEN_PIN 10
    #define YELLOW_PIN 11
    #define RED_PIN 12

    long prevMillis = 0;
    long onedayMillis = 86400000;
    long twodayMillis = 172800000;
    boolean clickButton = true;
    boolean greenledon = false;
    boolean yellowledon = false;
    boolean redledon = false;

    void setup() {
        pinMode(BUTTON_PIN, INPUT_PULLUP);
        pinMode(GREEN_PIN, OUTPUT);
        pinMode(YELLOW_PIN, OUTPUT);
        pinMode(RED_PIN, OUTPUT);
    }

    void loop() {

        unsigned long currMillis = millis();
        boolean clickButtonUP = digitalRead(BUTTON_PIN);

        if (clickButton && !clickButtonUP) {
            delay(10);
            clickButtonUp = digitalRead(BUTTON_PIN);

            if (!clickButtonUP) {
                prevMillis = currMillis;
            }
        }

        if (currMillis - prevMillis > twodayMillis) {
            if(redledon == false) {
                digitalWrite(YELLOW_PIN, LOW);
                digitalWrite(RED_PIN, HIGH);
                redledon = true;
                yellowledon = false;
            }
        }

        else if (currMillis - prevMillis > onedayMillis) {
            if(yellowledon == false) {
                digitalWrite(GREEN_PIN, LOW);
                digitalWrite(YELLOW_PIN, HIGH);
                yellowledon = true;
                greenledon = false;
            }
        }

        else {
            if(greenledon == false) {
                digitalWrite(YELLOW_PIN, LOW);
                digitalWrite(RED_PIN, LOW);
                digitalWrite(GREEN_PIN, HIGH);
                redledon = false;
                yellowledon = false;
                greenledon = true;
            }
        }
    }
     
    Последнее редактирование: 5 май 2016