Задача стоит такая: Собрать схему с двигателем и кнопкой. При нажатии и удерживании кнопки 3 секунды, двигатель должен включаться, при одиночном нажатии - выключаться. Схему я собрал, а вот с кодом возникли проблемы. Когда загружаю код в ардуино, мотор ждет 3 секунды и запускается сам без нажатия кнопки, а если кнопку нажать когда мотор работает, то он выключится, но потом снова через 3 секунды включается! А мне нужно, чтобы, удерживая кнопку 3 секунды мотор включался, а при одиночном нажатии выключался. Помогите с кодом пожалуйста. Код (C++): int ButtonPin = 2; int motorPin = 11; boolean ButtonState = LOW; boolean motorState = LOW; unsigned long pressed_moment; #define pressed_long 3000 void setup() { pinMode(ButtonPin, INPUT); pinMode(motorPin, OUTPUT); } void loop() { ButtonState = digitalRead(ButtonPin); if (ButtonState == HIGH) { pressed_moment = millis(); } else { if ((millis() - pressed_moment) < pressed_long) { digitalWrite(motorPin, LOW); } else { digitalWrite(motorPin, HIGH); pressed_moment = 0; } } }
вот Код (C++): #define BUTTON 2 #define MOTOR 11 unsigned long pressed_moment; #define pressed_long 3000 boolean motorState = false; boolean ButtonState = false; void setup() { // put your setup code here, to run once: pinMode(MOTOR, OUTPUT); } void loop() { // put your main code here, to run repeatedly: pressed_moment = pulseIn(BUTTON, HIGH) / 1000; if(pressed_moment > pressed_long){ motorState = true; digitalWrite(MOTOR, HIGH); } else { motorState = false; digitalWrite(MOTOR, LOW); } do{ ButtonState = digitalRead(BUTTON); }while(ButtonState); motorState = false; digitalWrite(MOTOR, LOW); } про pulseIn() можете почитать тут: http://arduino.ru/Reference/PulseIn