Enviando número sobre serial para arduino enviando algo diferente?

1

Eu tenho uma configuração de arduino que acende uma luz quando recebe um 1 e desliga uma luz quando recebe um 0. Eu não acho que há algo errado com o código. Eu posso enviar o Arduino 1 com echo 1 > /dev/ttyACM0 e a luz pisca, o que me confundiu. Então eu enviei 'h' e fez a mesma coisa. Eu até abri uma tela com screen /dev/ttyACM0 e digitei 1, e ela piscou. Eu acho que ecoar 1 seria ecoar 1. Eu também usei o seguinte comando stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts Estou fazendo algo errado aqui? Se você precisar de mais alguma informação, é só pedir.

Código do Arduino (não acho que isso seja falho):

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);
}
}
    
por Derp 08.09.2013 / 21:30

1 resposta

0

Primeiro tente piscar o led sem a necessidade de ler serial. Se isso funcionar, significa que a placa está bem e o led funciona. Em seguida, tente usar um script Python que use pyserial e grave os dados na porta com. Há tutoriais on-line sobre como fazer isso. (Certifique-se de usar o direito com Port, use o comando ls / dev / tty * [para Linux] no terminal para ver o direito com Port). Espero que isso funcione.

    
por 22.03.2018 / 18:24