Здравствуйте, задача такая. Есть два привода постоянного вращения и четыре кнопки. Пытался сам написать код, но не доконца все получется. Когда написал код для одной сервомашинки, то все работало, но когда дописал для второй, начинается дерганье обоих сервоприводов и при нажатии на кнопку вращение происходит с толчками.
Вот собственно он для одного сервопривода Код (Text): #include <Servo.h> Servo servoX; Servo servoY; int buttonPIN1=8; int buttonPIN2=2; int buttonPIN3=4; int buttonPIN4=7; int pos=92; int buttonState1=0; int buttonState2=0; void setup() { pinMode(buttonPIN1,INPUT); pinMode(buttonPIN2,INPUT); pinMode(buttonPIN3,INPUT); pinMode(buttonPIN4,INPUT); servoX.attach(9); servoY.attach(5); } void loop() { servoX.write(92); buttonState1=digitalRead (buttonPIN1); if (buttonState1==HIGH) { servoX.write(92); } else { servoX.write(0); } buttonState2=digitalRead (buttonPIN2); if (buttonState2==HIGH) { servoX.write(92); } else { servoX.write(180); } }
Добавьте защиту от дребезга. Подавайте команды мотору не в каждом цикле, а только в моменты нажатий кнопок.
Запитывал и так и от отдельного источника, один чёрт - дергается. (минусы не забывал соединять) Что за защита от дребезга? Я бы был очень признателен, если подправили бы код. Или еще лучше ткнули носом в код где это реализовано. Сам только начинаю и за плечами технарские, институтские курсы написания программ в Паскале, хотя я не програмист
Вот статья о дребезге и о том, как с ним бороться. Теперь по коду. У Вас в каждом вызове loop() опрашивается кнопка и выполняются некие действия. Причем эти действия выполняются каждый раз, хотя мы хотим выполнять их только по факту нажатия кнопки, т.е. по переходу сигнала с кнопки из одного состояние в другое. Правильно было бы написать так: Код (Text): // если состояние кнопки изменилось if(bouncer.update()) { // если кнопку нажали if(bouncer.read() == HIGH) { } // если кнопку отпустили else { } }
Может вы учебник какой найдете, вместо того, чтобы пытаться изучить программирование по каким-то обрывкам с форумов без объяснений?