Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Scritte incrementali

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[11] Re: Scritte incrementali

Messaggioda Foto Utentexyz » 15 giu 2018, 17:27

In C di solito i loop con il "while" si scrivono in questo modo:

Codice: Seleziona tutto
while (condizione) {
   ....
};

se scrivi:

Codice: Seleziona tutto
while (condizione);

se la condizione è vera è un loop infinito.

Come correggerlo: dopo la chiusura della parentesi ci deve essere una graffa aperta non un ';'.

La condizione è meglio scriverla con operatore "&&" (AND logico) e non con operatore "&" (AND tra bit).

Mi fermo qui il resto sembrano righe messe a caso.

Consiglio di iniziare con cose più semplici e conoscere bene la sintassi del linguaggio con cui si sta programmando.
Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
 
Messaggi: 1778
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

0
voti

[12] Re: Scritte incrementali

Messaggioda Foto Utentepapa10 » 15 giu 2018, 17:48

ti ringrazio ma non ho risolto il problema
Avatar utente
Foto Utentepapa10
71 1 3 4
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 20 ott 2011, 17:11

0
voti

[13] Re: Scritte incrementali

Messaggioda Foto Utentepapa10 » 17 giu 2018, 17:14

Ecco ci sono riuscito e funziona egregiamente:
Codice: Seleziona tutto
#include<LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//LiquidCrystal lcd(7,6,5,4,3,2);

String stringa;
int posizione=0;
int carattere=0;
int ritardo=100;
String testo("Questo codice e' stato intelligentemente corretto da Michele ed e' perfettamente funzionante.OK");
int lunghezza = testo.length();
int ripetizione=0;


void setup() {
  lcd.begin(16,2);
  pinMode(1,OUTPUT);
}

void loop() {

  while(carattere<lunghezza & ripetizione<2){
    digitalWrite(1,HIGH);

    for(posizione=0;posizione<=16;posizione++){
        stringa=String(testo);
        lcd.setCursor(posizione,0);
        lcd.print(stringa.substring(carattere,carattere+1));
        Serial.print(stringa.substring(carattere,carattere+1));
        delay(ritardo);
        carattere=carattere+1;
    }
   
    carattere=carattere-1;
    delay(ritardo*10);
    lcd.clear();}
    carattere=0;
    delay(ritardo*15);
    lcd.clear();
    ripetizione++;
    digitalWrite(1,LOW);}
Avatar utente
Foto Utentepapa10
71 1 3 4
Frequentatore
Frequentatore
 
Messaggi: 248
Iscritto il: 20 ott 2011, 17:11

Precedente

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti