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

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

Messaggioda Foto Utentestandardoil » 28 feb 2026, 10:06

Ma se aggiornate solo FUORI dal while vi siete auto incartati

Li bisogna vedere il resto del codice, che
Non ci siamo "gabole" ora invisibili

Il codice del primo messaggio dovrebbe andare senza problemi, ma anche solo il fatto che nulla spegne il led ci fa capire che si tratta di un frammentato troppo piccolo per capire il funzionamento generale del programma

Ad esempio se il led venisse spento alla riga immediatamente successiva chi avrebbe il tempo di vederlo acceso?

Ribadìsco: o si vede tutto il codice oppure è inutile provare a capire il problema
Avatar utente
Foto Utentestandardoil
547 2 4
Stabilizzato
Stabilizzato
 
Messaggi: 424
Iscritto il: 15 lug 2022, 19:14

0
voti

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

Messaggioda Foto Utentealien75 » 28 feb 2026, 10:08

Ho fatto così:
Codice: Seleziona tutto
av = Serial.available();
  Serial.println(av);
  while(1){};
  while(av !=0)
  { 
     
        // Legge 2 byte dalla seriale
        digitalWrite(31, HIGH);
        byte byte1 = Serial.read();
        byte byte2 = Serial.read();
        value = (byte2 << 8) | byte1;
        buffer[i] = value;
        i++;
  }


ma non vedo nessun valore sil monitor seriale, penso sua un problema dell'IDE: uso la versione 2.3.7 sotto win10.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto Utenteboiler » 28 feb 2026, 10:09

standardoil ha scritto:Ma se aggiornate solo FUORI dal while vi siete auto incartati

Voglio sperare che quello snippet sia all'interno di un altro loop, altrimenti ha poco senso.

Li bisogna vedere il resto del codice

Sono d'accordo, ma ne ho un po' timore :mrgreen:

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

0
voti

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

Messaggioda Foto Utentestandardoil » 28 feb 2026, 10:09

Serio sei?

Rispondevo allo OP, non a boiler

A boiler invece dico che quel frammento sarebbe auto incartante "anche" se fosse in un programma ben fatto
Visto invece l'ultimo post di OP ho capito alcune cose
Ultima modifica di Foto Utentestandardoil il 28 feb 2026, 10:13, modificato 1 volta in totale.
Avatar utente
Foto Utentestandardoil
547 2 4
Stabilizzato
Stabilizzato
 
Messaggi: 424
Iscritto il: 15 lug 2022, 19:14

0
voti

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

Messaggioda Foto Utenteboiler » 28 feb 2026, 10:11

alien75 ha scritto:ma non vedo nessun valore sil monitor seriale

Ecco, allora non è il codice (o quel codice non lo raggiungi mai durante l'esecuzione).
Come ha detto Foto Utentestandardoil, serve il resto. Però non ho voglia di leggere paginate di codice altrui inutilmente: riduci il progetto alla sua forma minima nella quale si vede l'errore e posta quello.

Boiler
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

0
voti

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

Messaggioda Foto Utentealien75 » 28 feb 2026, 10:14

Ecco il codice completo:
Codice: Seleziona tutto
int av;
int i;

void setup()
{
    pinMode(31, OUTPUT);
    digitalWrite(31, LOW);
}

void loop()
{
   av = Serial.available();
  Serial.println(av);
  while(1){};
  while(av !=0)
  { 
     
        // Legge 2 byte dalla seriale
        digitalWrite(31, HIGH);
        byte byte1 = Serial.read();
        byte byte2 = Serial.read();
        value = (byte2 << 8) | byte1;
        buffer[i] = value;
        i++;
  }
  i = 0;
}

Ho ridotto il codice al minimo.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto Utenteboiler » 28 feb 2026, 10:19

Manca questo:
https://docs.arduino.cc/language-refere ... ial/begin/

Inoltre non so quante di queste fantomatiche serials ci siano, ma se è in uso per mandare i valori degli slider a Arduino, non sarà disponibile per il serial monitor dell'IDE.
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

0
voti

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

Messaggioda Foto Utentealien75 » 28 feb 2026, 10:27

boiler ha scritto:Manca questo:
https://docs.arduino.cc/language-refere ... ial/begin/

Inoltre non so quante di queste fantomatiche serials ci siano, ma se è in uso per mandare i valori degli slider a Arduino, non sarà disponibile per il serial monitor dell'IDE.


Inserito Serial.begin(9600) e funziona.
Ora vedo a monitor seriale il valore 0.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto Utenteboiler » 28 feb 2026, 10:37

Bene, torna al codice originale (quello del tuo primo post) e vedi se funziona.
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

1
voti

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

Messaggioda Foto Utenteboiler » 28 feb 2026, 10:38

Ah, e inizializza le variabili, un minimo di decenza per favore :roll:
Avatar utente
Foto Utenteboiler
26,4k 5 9 13
G.Master EY
G.Master EY
 
Messaggi: 5612
Iscritto il: 9 nov 2011, 12:27

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti