Здравствуйте. Хочу оснастить фонтанчик(поилка) для кошек тремя светодиодами и чтобы при нажатии кнопки загорался зеленый, ровно через сутки желтый и еще через сутки красный. Питание предполагается брать с БП (12V 350mA) врезкой. Есть "Полный набор Z", наполовину прямые руки, желание, скилл минус 1000, паяльник. Подойдет ли такое питание для Ардуино или нужно что-то еще включать в схему? Какой код нужен? Прошу помощи.
Питание подойдёт.Больше ничего включать не надо (кроме светодиодов)Код пишите-выкладывайте если будут проблемы поможем.Кошки цвета не различают-так что зря Вы для них так стараетесь.
управлять поилкой не нужно, она автономная? Тогда вообще просто : при нажатии кнопки сбрасываем счетчик (переменная типа unsigned long), включаем зеленый проверяем, прошло ли 86400000 мсек (первые сутки), если да,то гасим зеленый и включаем желтый проверяем, прошло ли 172800000 мсек (вторые сутки), если да,то гасим желтый и включаем красный
Не проще в "рукопашную" включать светодиоды для Кисок?Более странного применения Ардуино ещё не видел.тогда уж проще (и дешевле) сделать на тини-13
Светодиоды не для кисок, а для меня, чтобы не забывать менять воду. Большое спасибо что не оставили без внимания. На днях попробую написать код.
Попробуйте вот как то так, реально писал и не коленке и на пальцах, не факт что будет работать правильно. Код (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; } } }