Всем здравствуйте. Вот задумал переделать печку с тросиков на сервомоторы. Все бы хорошо только вот мотор печки не как не хочет работать. И не как не пойму где моя ошибка в программе. Люди добрые помогите. В полном тупике. Код (C++): #include <Servo.h> String readString, servo1, servo2, servo3,servo4; Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; int kn1 = 2; int kn2 = 4; int kn3 = 7; int kn4 = 8; int potPin1 = 0; int potPin2 = 1; void setup() { Serial.begin(9600); myservo1.attach(3); myservo2.attach(5); myservo3.attach(6); myservo4.attach(9); pinMode(kn1, INPUT); pinMode(kn2, INPUT); pinMode(kn3, INPUT); pinMode(kn4, INPUT); pinMode(10, OUTPUT); } void loop() { int reading = analogRead(potPin1); int angle = reading / 6; myservo1.write(angle); int reading1 = analogRead(potPin2); int val = reading1 / 4; Serial.println(val); analogWrite(10, val); if (digitalRead(kn4) == HIGH) { myservo2.write(150);} else { myservo2.write(30);} if (digitalRead(kn2) == HIGH) { myservo3.write(150);} else { myservo3.write(30);} if (digitalRead(kn1) == HIGH && digitalRead(kn3) == HIGH) { myservo4.write(90);} if (digitalRead(kn1) == LOW && digitalRead(kn3) == LOW) { myservo4.write(90);} if (digitalRead(kn1) == LOW && digitalRead(kn3) == HIGH) { myservo4.write(10);} if (digitalRead(kn1) == HIGH && digitalRead(kn3) == LOW) { myservo4.write(170);} }
Правая половина схемы - тихий ужас. Полевик никогда не откроется, оптопара бесполезная, пара дидов последовательно зачем-то. Подтягивающие резисторы для кнопок в ардуино уже встроны, включаются через pinMode(pin, INPUT_PULLUP);
Тут я с тобой не согласен эта часть схемы рабочая и причем уже 2 года как стоит на машине. Без сбоев и нареканий
Ну хорошо. Откуда на затворе полевика возьмется напряжение в 16 вольт для открытия? Ну можно предположить, что конструкция с диодами и конденсатором это кусок умножителя напряжения. но он явно не завершен. И хоть убей не понимаю, зачем нужны мучения с умножителем, когда достаточно поставить полевик нижним плечом.
Все разобрался. Пересадил с 10 ноги на 11 и все заработало Код (C++): #include <Servo.h> String readString, servo1, servo2, servo3,servo4; Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; int kn1 = 2; int kn2 = 4; int kn3 = 7; int kn4 = 8; int potPin1 = 0; int potPin2 = 1; void setup() { myservo1.attach(3); myservo2.attach(5); myservo3.attach(6); myservo4.attach(9); pinMode(kn1, INPUT); pinMode(kn2, INPUT); pinMode(kn3, INPUT); pinMode(kn4, INPUT); pinMode(11, OUTPUT); pinMode(1, OUTPUT); pinMode(0, OUTPUT); pinMode(12, OUTPUT); } void loop() { int reading = analogRead(potPin1); int angle = reading / 6; if (angle <= 10) { digitalWrite (12, LOW);} else {digitalWrite (12, HIGH);} myservo1.write(angle); int reading1 = analogRead(potPin2); int val = reading1 / 4; analogWrite(11, val); if (digitalRead(kn4) == HIGH) { myservo2.write(150);} else { myservo2.write(30);} if (digitalRead(kn2) == HIGH) { myservo3.write(150);} else { myservo3.write(30);} if (digitalRead(kn1) == HIGH && digitalRead(kn3) == HIGH) { myservo4.write(90);} if (digitalRead(kn1) == LOW && digitalRead(kn3) == LOW) { myservo4.write(90);} if (digitalRead(kn1) == LOW && digitalRead(kn3) == HIGH) { myservo4.write(10);} if (digitalRead(kn1) == HIGH && digitalRead(kn3) == LOW) { myservo4.write(170);} }
Согласен. Он и стоит уже в колодке. Это я дополнительную помпу завел на это реле. Теперь не надо вспоминать о ней. Когда кран перекрываешь радиатора.