тактовая кнопка, таймер, смена полярности... типа...
- Войдите на сайт для отправки комментариев
Ср, 26/07/2017 - 22:03
напишет может ктонить, а то я так мудренно не умею)))?
\pin1 - нажать кнопку\отпустить кнопку
\pin3 - включить реле 1 на 0.7сек. pin5 - стать землей на 0.7сек. - (вкл\выкл одновременно)
\пауза 0.4сек
\pin5 - включить реле 2 на 0.7сек. pin6 - стать землей на 0.7сек. - (вкл\выкл одновременно)
\пауза 1сек.
\по новой, при повторном нажатии.
п.с. я вообще не бум-бум....
200р. на тел
:(
нуууу... когда научитесь внятно ставить ТЗ, тогда и грустить не придёца.
woodenloony, а сама схема собрана? htpicc@gmail.com
Какая простая задача
/**/ uint32_t mill;// текущая в цикле millis() //------------Cl_Relay----------------------------- // класс реле class Cl_Relay { const byte pin; public: Cl_Relay (byte _pin): pin(_pin) {} void setup() { pinMode(pin, OUTPUT); OFF(); } void ON() { digitalWrite(pin, HIGH); } void OFF() { digitalWrite(pin, LOW); } }; //--------Cl_Brain------------------------------------------ // класс мозг определяет в какой последовательности что запускается. class Cl_Brain { const uint32_t time1, time2, time3; const void (*Do1)(), (*Do2)(), (*Do3)(), (*Do4)(); // указатель на обработчик byte stat = 0; // 4(1 этап),3(2 этап),2(3 этап),1(4 этап),0- стоп uint32_t past = 0; public: Cl_Brain( void (*_Do1)(), uint32_t _time1, void (*_Do2)(), uint32_t _time2, void (*_Do3)(), uint32_t _time3, void (*_Do4)()) : Do1(_Do1), time1(_time1), Do2(_Do2), time2(_time2), Do3(_Do3), time3(_time3), Do4(_Do4) {} void loop() { if (stat == 3 && mill - past >= time1) { stat = 2; past = mill; Do2(); } if (stat == 2 && mill - past >= time2) { stat = 1; past = mill; Do3(); } if (stat == 1 && mill - past >= time3) { stat = 0; Do4(); } } void start() { stat = 4; past = mill; Do1(); } }; //--------Cl_Btn------------------------------------------ // class кнопка class Cl_Btn { const byte pin; bool btn, btn_old; void (*Do)();// указатель на обработчик public: Cl_Btn (byte _pin, void (*_Do)()): pin(_pin), Do(_Do) {} void setup() { pinMode(pin, INPUT); btn_old = digitalRead(pin); } void loop() { btn = digitalRead(pin); if (btn && !btn_old) { btn_old = 1; Do(); } else if (!btn && btn_old) { btn_old = 0; } } }; //----------------Компоновка------------------------- Cl_Relay REL3(/*нога реле*/3); Cl_Relay REL5(/*нога реле*/5); Cl_Relay REL6(/*нога реле*/6); void Do1_Brain() { REL3.ON(); REL5.OFF(); } void Do2_Brain() { REL3.OFF(); REL5.ON(); } void Do3_Brain() { REL5.ON(); REL6.OFF(); } void Do4_Brain() { REL5.OFF(); REL6.ON(); } Cl_Brain Brain(/*обработчик 1*/Do1_Brain,/*время 0.7сек*/700, /*обработчик 2*/Do2_Brain,/*время0.4*/400, /*обработчик 3*/Do3_Brain,/*время 0.7сек*/700, /*обработчик 4*/Do4_Brain); void Do_BTN1() { Brain.start(); } Cl_Btn BTN1(/*нога кнопки*/1,/*обработчик кнопки*/Do_BTN1); //----------------main()------------------------ void setup() { REL3.setup(); REL5.setup(); REL6.setup(); BTN1.setup(); } void loop() { mill = millis(); Brain.loop(); BTN1.loop(); } /*Скетч использует 1648 байт (5%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 46 байт (2%) динамической памяти, оставляя 2002 байт для локальных переменных. Максимум: 2048 байт. */200 руб. на webmoney. Если что - обращайтесь на почту: petrovskiy.roman.vladimirovich@gmail.com