Я работаю над ручным роботом Arduino, управляемым Bluetooth. Я хочу, чтобы, когда я отправляю целое число, серво движется, и когда я отправляю другой Int, он останавливается. Все, что я нашел на форумах, это системы, в которых сервопривод перемещается в определенную позицию, но я хочу, чтобы он действительно вращался, увеличивая его угол. Вот мой код, который не работает:Серво-непрерывное вращение Arduino Serial
#include <Servo.h>
int val;
int angle;
int charsRead;
char buffer[10];
Servo servo;
void setup() {
Serial.begin(9600);
servo.attach(6);
angle = servo.read();
}
void loop() {
servo.write(170);
serialCheck();
if(val == 4021){
servo.write(angle++);
delay(50);
}
}
else if(val == 4022){
servo.write(angle);
}
serialCheck();
}
void serialCheck(){
while(Serial.available() > 0){
charsRead = Serial.readBytesUntil('\n', buffer, sizeof(buffer) - 1);
buffer[charsRead] = '\0';
val = atoi(buffer);
Serial.println(val);
}
}
приложение я использую в основном посылает «4021», когда я долгое нажатие кнопки, и посылает «4022», когда я выпускаю его.
Я работал над этим в течение нескольких часов, и я не нашел никого, на каком-либо форуме, который имел такой же вопрос ...
Пожалуйста, помогите.
Большое вам спасибо! Я работаю над этим проектом уже более месяца, и это была моя последняя проблема! Оно работает! –
@HugoTrombert Добро пожаловать :) Если ответ вам помог, отметьте его как принятый. – mactro
@HugoTrombert: Вероятно, вы исправили больше проблем вокруг манипуляции с переменной угла. И если вы ничего не посылаете, val остается на последнем значении ist, повторяя предыдущее движение снова и снова ... – datafiddler