1

У меня есть установка Arduino, которая включает свет, когда он получает 1, и выключает свет, когда он получает 0. Я не думаю, что с кодом что-то не так. Я могу послать Arduino 1 с echo 1 > /dev/ttyACM0 и мигает, что меня смутило. Затем я послал это «ч», и он сделал то же самое. Я даже открыл экран с помощью screen /dev/ttyACM0 и набрал 1, и он моргнул. Я думаю, что эхо 1 будет эхом 1. Я также использовал следующую команду: stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts Am I делать что-то не так здесь? Если вам нужна дополнительная информация, просто спросите.

Код Arduino (я не думаю, что это неправильно):

void setup() {
Serial.begin(9600);
//set the LED pin to OUTPUT
pinMode(13, OUTPUT);
}

void loop() {
//wait until the serial connection is open
while (Serial.available() ==0);

//read from the serial connection; the - '0' is to cast the values as the int and not the ASCII code
int val = Serial.read() - '0';

//print to the console for testing
Serial.println(val);

//if we've recieved a '1', turn on the LED and print a message
if(val==1){
Serial.println("Received a 1");
digitalWrite(13, HIGH);
}
//if we've recieved a '0', turn off the LED and print a message
if(val==0){
Serial.println("Received a 0");
digitalWrite(13, LOW);
}
}

1 ответ1

0

Сначала попробуйте мигать светодиодом без необходимости читать серийный номер. Если это работает, это означает, что плата в порядке и светодиод работает. Затем попробуйте использовать скрипт Python, который использует pyserial, и запишите данные в com-порт. В Интернете есть учебники о том, как это сделать. (Убедитесь, что вы используете правильный com-порт, используйте команду ls /dev /tty * [для Linux] в терминале, чтобы увидеть правильный com-порт). Надеюсь, это работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .