Go Down

Topic: arduino calabria (Read 4 times) previous topic - next topic

j84c3

maaaaa.. una videoconferenza online? XD
\m/ METALLICA \m/

Michele Menniti


maaaaa.. una videoconferenza online? XD

meglio uno scambio di sms :smiley-yell:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

umbfalco

Ciao a tutti mi chiamo Umberto da Vibo Valentia  :)

Michele Menniti


Ciao a tutti mi chiamo Umberto da Vibo Valentia  :)

Ciao Umberto, benvenuto nel Club :)
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

latofra

#29
Apr 14, 2012, 11:43 pm Last Edit: Apr 15, 2012, 12:06 am by latofra Reason: 1
Salve a Tutti sono Francesco da Serrata provincia di Reggio Calabria

sto cercando di sperimentare con un Arduino Mega 2560 interfacciato con un display grafico 128 x 64 e sono alle prese con il linguaggio di programmazione e in particolare con il ciclo do while .In pratica cerco di far scorrere una scritta da sinistra verso destra e poi al contrario
utilizzo la libreria GLCD.

dopo il primo ciclo do while che incrementa la variabile "riga" va perfettamente sul secondo ciclo mi esce dal ciclo e non capisco il perche'


Programma Principale:
*/

// include the library header
#include <glcd.h>
String testdisplay = "-";
int x=0;
int riga =1;
// include the Fonts
#include <fonts/allFonts.h>

void setup() {
  // Initialize the GLCD
  GLCD.Init();
  Serial.begin(9600);
  // Select the font for the default text area
  GLCD.SelectFont(System5x7);
  GLCD.SetDisplayMode(INVERTED);

}

void loop() {

  testDisplay();

  GLCD.ClearArea();
  GLCD.DrawRoundRect(0,0,GLCD.Width-1,15, 1);  // rounded rectangle around text area

  delay(1000);
  provaColonna();
}

ProvaColonna "incriminato"
void provaColonna()
{
  GLCD.print("Salve Francesco");
  delay(1000);
  GLCD.ClearArea();

  delay(1000);
  do

  {
    GLCD.CursorToXY(riga,1);
    riga=(riga+1);
    Serial.print(riga);
    Serial.println("");
    GLCD.print("Ben Tornato");
    delay(50);
  }
  while (riga < 60);

  GLCD.ClearArea();

  delay(1000);
  do

  {
    GLCD.CursorToXY(riga,1);
    riga=(riga--);
    GLCD.print("Ben Tornato");
    Serial.print(riga);
    Serial.println("");
    delay(50);
  }
  while (riga < 1);
  riga=1;


  GLCD.ClearArea();
}

Tab "Test Display"


void testDisplay()
{
  delay(50);
  GLCD.ClearArea();
  do
  {
    x=x++;

    GLCD.print(testdisplay);
   
   
    delay(50);
  }
  while ( x < 1);
  x=0;
}
in pratica e ho verificato con il serial monitor il secondo ciclo a decrementare  compie solo un ciclo da 60 a 59 e poi esce ma dovrebbe arrivare ad 1 . Ho provato un po' tutto ma non riesco a farlo funzionare
Come vedi ho utilizzato i  consigli di Michele Menniti sulla programmazione a stadi finiti suddividendo il programma .
Grazie in anticipo e saluti a tutti.


Go Up