Inviare comando da seriale con il terminale linux

Salve a tutti, ho un problema con il controllo della seriale da terminale su arduinoUno.
In pratica quando vado a inviare il comando 1 con questo comando

echo "1" >/dev/ttyACM0

lui accende il led 13 per nemmeno mezzo secondo e poi lo fa rispegnere.
il codice su arduino è questo.

int led = 13;
void setup(){
Serial.begin(9600);
pinMode(Led,OUTPUT);
}

void loop(){

if (select=='1') {
  digitalWrite(led,HIGH);
}


if (select=='0') {
  digitalWrite(led,LOW);
}
}

Se invece utilizzo visual basic e implemanto un programma che gestisce la seriale inviando con 1 o 0 il led resta acceso o spento. e rimane tale.

il problema avviene quando utilizzo il terminale di ubuntu.
Soluzioni in merito.

GRazie

Posteresti il codice completo di Arduino?
Comunque stai attento tu da terminale stai inviando una stringa composta da 2 caratteri '1' e '\0' bisogna vedere se il terminale invia anche il '\0'. In ogni caso se non hai esigenze particolari io ti consiglierei di inviare sempre singoli byte e non stringhe che necessitano un interpretazione
Esempio vuoi indicare al LED di accendersi invii un singolo byte di valore 1 non il carattere '1' o peggio la stringa "1"

Poi non sarebbe male effettuare dei controlli che posso supporre tu faccia (visto il codice tagliato non si può esserne sicuri)
Per esempio prima di andare a confrontare un valore ricevuto su seriale, verificare che il valore sia effettivamente arrivato

if(Serial.available())

prelevare il valore arrivato e inserirlo in una variabile dopo di che confrontarlo ed evitare inutili condizioni

if (select=='1') {
  digitalWrite(led,HIGH);
}
if (select=='0') {
  digitalWrite(led,LOW);
}

Se select è '1' non puo anche essere '0' quindi

if (select=='1') {
  digitalWrite(led,HIGH);
} else if (select=='0') {
  digitalWrite(led,LOW);
}

Oppure

digitalWrite(led, ((select == '1')?HIGH:LOW));

@Roberto ha ragione, sicuramente il codice è incompleto :astonished:
La variabile select non è dichiarata e neppure fa una lettura select=Serial.read();
Ripetiamo, se volete una mano, postate il codice completo, solo delle parti non si capisce poi nulla.

Per comunicare con Arduino in linux usa minicom, se invii i comandi direttamente alla porta linux la apre la chiude, magari attiva il controllo di flusso hadware e ti resetta l'Arduino.
Con minicom hai più controllo sull'hardware.

anche cutecom (io mi ci trovo benissimo :slight_smile: ), ma come detto sopra, rivedi il codice...cosi nn può andare :slight_smile: