Связь по последовательному каналу с Arduino не работает?

#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() , как описано здесь