#arduino #arduino-ide
Вопрос:
Я пытаюсь включить сервопривод 360 с помощью последовательных команд, когда я использую servo1.writeMicroseconds(1000);
сервопривод, он поворачивается по часовой стрелке на полную мощность, замена 1000 на 1500 останавливает его, а 2000 заставляет его двигаться против часовой стрелки.
Для Serial.write(val);
отладки также дается странный ответ, когда я использую значение 1, плата получает его как:
—> 49
—> 10
Плата представляет собой Arduino Mega 2560
#include <Servo.h>
Servo servo1;
int val = 1500;
void setup() {
servo1.attach(7);
servo1.writeMicroseconds(val);
Serial.begin(9600);
}
void loop(){
if(Serial.available()){
int val = Serial.read();
Serial.write(val);
servo1.writeMicroseconds(val);
}
}
Комментарии:
1.
Serial.read()
верните ASCII-код отправленных данных. символ «1» в ASCII-это49
Ответ №1:
Не используйте Serial.write()
. Это для записи байтов. Вместо этого используйте Serial.println(...)
, который будет печатать строку и обрабатывать несколько типов ввода.
Еще одна рекомендация-не используйте Serial.read()
только целые числа. Используйте Serial.parseInt()
, как описано здесь