Работа с реле по времени
- Войдите на сайт для отправки комментариев
Втр, 16/10/2018 - 21:02
Здравствуйте.
Задумал сделать установку используя реле и Ардуино. Суть такова: есть LCD табло (16x2) и одно реле, но оно должно включаться и выключаться в разное время (3 сек работает, 5 нет, 6 работает, 20 нет). Эти данные я могу менять с кнопок.... Подскажите как лучше реализировать такую задачу?
Спасибо.
еще раз обращаю внимание обществености на дату регистрации, ник, и суть вопроса.
Лучше - реализовать путём написания кода. Если интервалы всегда одни и те же - проще. Если нужна привязка ко времени - нужна микросхема часов реального времени.
Начинать - надо с простого: подключить экран, научиться выводить туда информацию. Подключить кнопку - научиться работать с ней. Подключить часы - научиться работать с ними. Потом - всё это объединить, дописать логику включения/выключения - и всё, готово.
еще раз обращаю внимание обществености на дату регистрации, ник, и суть вопроса.
Ааааа.... Это у нас сегодня день троллинга, что ли? Спс, не приметил сходу.
Так а в чем дело?
Так а в чем дело?
Да ни в чём, всё норм.
Так а в чем дело?
В том, что мужики тебя сильно уважают.
Человек, который интересуется ардуиной пять лет и при этом ТАК задаёт ТАКИЕ вопросы - это либо тролль,желающий подшутить над сообществом, либо идиот.
Заметь, второго никто даже не подумал - все подумали первое - уважают!
вот налетели аки коршуны.
может чел зарегистрировался и отвалил от темы.
а сейчас опять решил вернуться,
ЗЛЫЕ ВЫ.
ас сегодня день троллинга, что ли? Спс, не приметил сходу.
Зацени, что сказал САМ ещё год назад по поводу ТС - #11
МУЖИКИ!
А мы сегодня в соседней теме не с клономли ТС беседовали? Смотрите какая у ТС знакомая тема была - http://arduino.ru/forum/programmirovanie/podklyuchenie-50-svetodiodov
Вот, ... гадом буду!
ас сегодня день троллинга, что ли? Спс, не приметил сходу.
Зацени, что сказал САМ ещё год назад по поводу ТС - #11
О, спс, раз САМ сказал - всё ясно :)
И снова всем привет)
Помогите оптимизировать...
#include <LiquidCrystal.h> LiquidCrystal lcd(7, 6, 5, 4, 3, 2); #include <EEPROM.h> #define interval 1000 int Relay = 12; unsigned int state = 0; unsigned int t1, t11, t2, t22, t3, t33, t4, t44; const int nextb = 8, start = 11; const int upb = 9; int pupb = 0; const int downb = 10; int pdownb = 0; unsigned int buttonState1 = 0; unsigned int buttonState2 = 0; unsigned int buttonState3 = 0; unsigned int buttonStateSart = 0; void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.print("Start > > >"); pinMode(nextb, INPUT_PULLUP); pinMode(upb, INPUT_PULLUP); pinMode(downb, INPUT_PULLUP); pinMode(start, INPUT_PULLUP); pinMode(Relay, OUTPUT); t1 = EEPROM.read(0); t11 = EEPROM.read(1); t2 = EEPROM.read(2); t22 = EEPROM.read(3); t3 = EEPROM.read(4); t33 = EEPROM.read(5); t4 = EEPROM.read(6); t44 = EEPROM.read(7); delay(500); lcd.clear(); } void homeScreen() { lcd.setCursor(0, 0); lcd.print("T1"); lcd.setCursor(0, 1); lcd.print(t1); lcd.setCursor(3, 0); lcd.print("T2"); lcd.setCursor(3, 1); lcd.print(t2); lcd.setCursor(6, 0); lcd.print("T3"); lcd.setCursor(6, 1); lcd.print(t3); lcd.setCursor(9, 0); lcd.print("T4"); lcd.setCursor(9, 1); lcd.print(t4); lcd.setCursor(13, 1); lcd.print(">>>"); delay(100); } void chooseT1() { t1 = changeValue(t1); if (pupb != t1) { lcd.clear(); pupb = t1; } lcd.setCursor(0, 0); EEPROM.write(0, t1); lcd.print("T1= " + (String)t1); } void chooseT2() { t2 = changeValue(t2); if (pupb != t2) { lcd.clear(); pupb = t2; } lcd.setCursor(3, 0); EEPROM.write(2, t2); lcd.print("T2= " + (String)t2); } void chooseT3() { t3 = changeValue(t3); if (pupb != t3) { lcd.clear(); pupb = t3; } lcd.setCursor(6, 0); EEPROM.write(4, t3); lcd.print("T3= " + (String)t3); } void chooseT4() { t4 = changeValue(t4); if (pupb != t4) { lcd.clear(); pupb = t4; } lcd.setCursor(9, 0); EEPROM.write(6, t4); lcd.print("T4= " + (String)t4); } void chooseT11() { t11 = changeValue(t11); if (pupb != t11) { lcd.clear(); pupb = t11; } lcd.setCursor(0, 1); EEPROM.write(1, t11); lcd.print("t1= " + (String)t11); } void chooseT22() { t22 = changeValue(t22); if (pupb != t22) { lcd.clear(); pupb = t22; } lcd.setCursor(3, 1); EEPROM.write(3, t22); lcd.print("t2= " + (String)t22); } void chooseT33() { t33 = changeValue(t33); if (pupb != t33) { lcd.clear(); pupb = t33; } lcd.setCursor(6, 1); EEPROM.write(5, t33); lcd.print("t3= " + (String)t33 ); } void chooseT44() { t44 = changeValue(t44); if (pupb != t44) { lcd.clear(); pupb = t44; } lcd.setCursor(9, 1); EEPROM.write(7, t44); lcd.print("t4= " + (String)t44); } int changeValue(int currentValue) { if (buttonState2 == HIGH) { delay(100); currentValue += 1; } if (buttonState3 == HIGH) { if (currentValue - 1 >= 0) { delay(100); currentValue -= 1; } else { currentValue = 0; } } return currentValue; } void loop() { buttonState1 = !digitalRead(nextb); buttonState2 = !digitalRead(upb); buttonState3 = !digitalRead(downb); buttonStateSart = !digitalRead(start); if (buttonState1 == HIGH) { state = state + 1; delay(250); if (state > 8) state = 0; lcd.clear(); } if (buttonState2 == HIGH) { delay(150); } if (buttonState3 == HIGH) { delay(150); } switch (state) { case 0: homeScreen(); break; case 1: chooseT1(); break; case 2: chooseT2(); break; case 3: chooseT3(); break; case 4: chooseT4(); break; case 5: chooseT11(); break; case 6: chooseT22(); break; case 7: chooseT33(); break; case 8: chooseT44(); break; } if (buttonStateSart == HIGH) { digitalWrite(13, HIGH); digitalWrite(Relay, HIGH); for ( int tim = t1; tim >= 0; tim--) { delay(interval); lcd.setCursor(0, 1); lcd.print(tim); } digitalWrite(13, LOW); digitalWrite(Relay, LOW); for ( int tim = t11; tim >= 0; tim--) { delay(interval); lcd.setCursor(0, 1); lcd.print(tim); } digitalWrite(13, HIGH);//yes digitalWrite(Relay, HIGH); for ( int tim = t2 ; tim >= 0; tim--) { delay(interval); lcd.setCursor(3, 1); lcd.print(tim); } digitalWrite(13, LOW);//no digitalWrite(Relay, LOW); for ( int tim = t22; tim >= 0; tim--) { delay(interval); lcd.setCursor(3, 1); lcd.print(tim); } digitalWrite(13, HIGH); digitalWrite(Relay, HIGH); for ( int tim = t3; tim >= 0; tim--) { delay(interval); lcd.setCursor(6, 1); lcd.print(tim); } digitalWrite(13, LOW);//no digitalWrite(Relay, LOW); for ( int tim = t33; tim >= 0; tim--) { delay(interval); lcd.setCursor(6, 1); lcd.print(tim); } digitalWrite(13, HIGH);//yes digitalWrite(Relay, HIGH); for ( int tim = t4; tim >= 0; tim--) { delay(interval); lcd.setCursor(9, 1); lcd.print(tim); } digitalWrite(13, LOW);//no digitalWrite(Relay, LOW); for ( int tim = t44; tim >= 0; tim--) { delay(interval); lcd.setCursor(9, 1); lcd.print(tim); } } }Что именно оптимизировать?
С какой целью?
По какому критерию?
Я понимаю, что код написан не совсем правильно, то есть можно использовать циклы для перебора как на пример... Меня интересует уменьшение памяти на плате. Если есть нужно что то поменять в коде говорите)
Уменьшить память на плате можно вжикнув разок болгаркой по чипу...
Я понимаю, что код написан не совсем правильно, то есть можно использовать циклы для перебора как на пример... Меня интересует уменьшение памяти на плате. Если есть нужно что то поменять в коде говорите)
как же ты за 5 лет после регистрации цыклы перебирать не научился.
понимаешь не имеет значения когда я зарегистрировался, я не сижу постоянно на сайте в поиске циклов, переменных и т.д. я самоучку и когда мне нужно что то написать тогда я и пишу и по ходу разбираюсь с проблемами
не имеет значения
Для тебя не имеет, а для кого-то имеет. Ты ведь не возражаешь, что люди могут иметь своё мнение, отличное от твоего? нет?