что не так с этим кодом? #include <Servo.h> Servo servoMain; int green = 1; int red = 2; boolean val = false; void setup() { servoMain.attach(10); pinMode(green,OUTPUT); pinMode(3,INPUT); pinMode(red,OUTPUT); } void loop() { digitalWrite(green,HIGH); digitalWrite(red,LOW); if (digitalRead(3) == HIGH) val=!val; if(val == 0) { servoMain.write(270); digitalWrite(red,HIGH); delay(300); digitalWrite(green,LOW); } else if (val == 1) { servoMain.write(270); digitalWrite(green,HIGH); delay(300); digitalWrite(red,LOW); } }
сигнал на вход 3 посылается с радио-няни то есть я нажимаю кнопку и все действие должно как бы свершиться но не тут то было и я не понимаю почему
Будьте добры оформить код в специальный тег CODE, для удобочитаемости. Не хочется ломать глаза... Код (Text): void setup() { blabla; if (foo == bar) { Serial.println("Пример хорошего оформления"); } }
Код (Text): #include <Servo.h> Servo servoMain; int green = 1; int red = 2; boolean val = false; void setup() { servoMain.attach(10); pinMode(green,OUTPUT); pinMode(3,INPUT); pinMode(red,OUTPUT); } void loop() { digitalWrite(green,LOW); digitalWrite(red,LOW); if (digitalRead(3) == HIGH) val=!val; if(val == 0) { servoMain.write(270); digitalWrite(red,HIGH); delay(300); digitalWrite(green,LOW); } else if (val == 1) { servoMain.write(270); digitalWrite(green,HIGH); delay(300); digitalWrite(red,LOW); } }
Эти две строки надо разместить в void setup{}, а так они выполняются каждый цикл. В сервопривод Вы посылаете одинаковое значение в каждом условии, к тому же это значение недопустимое. Длина импульса должна находится п ределах от 500 до 2500 (у разных приволов может незначительно отличаться).
И еще вопрос: я на 3 пин входа сигнал посылаю с радио няни но сигнал там нестабилен - он то более высокий то менее это может как то повлиять на "размышления" Дуни?