Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema codice while(Serial.available() >=2){}

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Problema codice while(Serial.available() >=2){}

Messaggioda Foto Utentealien75 » 27 feb 2026, 16:08

Ho il seguente codice in arduinodue:
Codice: Seleziona tutto
while(Serial.available() >=2){
        // Legge 2 byte dalla seriale
        digitalWrite(31, HIGH);
        byte byte1 = Serial.read();
        byte byte2 = Serial.read();
        value = (byte2 << 8) | byte1;
        buffer[i] = value;
        i++;
  }


Lato PC ho un'interfaccia grafica in python che invia dei valori unsigned int lungo la USB, premendo un pulsante.
La GUI è testata e funziona ma succede che lato arduino mettendo una digitalWrite() come sopra (per controllare con un tester se il while() viene eseguto), mi succede che l'uscita specifica rimane a 0. Ciò significa che non vengono recepiti i valori dal While() di arduino
e non capisco perché.
Tale codice mi è stato fornito in passato da un utente del forum.
Lo scopo è passare le posizioni degli slader di una GUI in python ad arduinodue, ma ciò non
avviene a causa dlel while() che non funziona.
Aiutatemi per favore a capire che succede.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 591
Iscritto il: 31 lug 2011, 14:08

0
voti

[2] Re: Problema codice while(Serial.available() >=2){}

Messaggioda Foto Utenteboiler » 27 feb 2026, 16:45

Modifica come segue e verifica che il pin passi effettivamente a 1:
Codice: Seleziona tutto
while(1){
        // Legge 2 byte dalla seriale
        digitalWrite(31, HIGH);
        byte byte1 = Serial.read();
        byte byte2 = Serial.read();
        value = (byte2 << 8) | byte1;
        buffer[i] = value;
        i++;
  }


Questo esclude possibili errori che non hanno nulla a che vedere con il loop.
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5602
Iscritto il: 9 nov 2011, 12:27

0
voti

[3] Re: Problema codice while(Serial.available() >=2){}

Messaggioda Foto Utentealien75 » 27 feb 2026, 20:08

Si passa effettivamente a 1.
Il problema secondo me è la Serial.available() >=2.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 591
Iscritto il: 31 lug 2011, 14:08

0
voti

[4] Re: Problema codice while(Serial.available() >=2){}

Messaggioda Foto Utenteboiler » 27 feb 2026, 22:13

Allora modificalo in
Codice: Seleziona tutto
Serial.available() >0

e vedi se arriva qualcosa.
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5602
Iscritto il: 9 nov 2011, 12:27

0
voti

[5] Re: Problema codice while(Serial.available() >=2){}

Messaggioda Foto Utentealien75 » 28 feb 2026, 6:19

Niente! Il pin 31 non si accende.
Codice: Seleziona tutto
Serial.available() >0


SE metto...
Codice: Seleziona tutto
Serial.available() !=0


si accende solo nell'istante in cui invia i caratteri poi torna a 0 e pure per poco tempo.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 591
Iscritto il: 31 lug 2011, 14:08


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti