Pagina 1 di 2

Scorrimento testo su colorduino

MessaggioInviato: 24 lug 2013, 16:15
da MJ990
Salve a tutti, innanzitutto spero che sia la sezione giusta per l'argomento che vado ad esporvi, altrimenti mi scuso in anticipo.

Sto cercando di realizzare un progettino che implica lo scorrimento di parole su una matrice di led 5x8 collegata con colorduino, che si interfaccia col PC attraverso un arduino duemilanove.

è da un po' che ci sto lavorando e sono arrivato ad un punto morto. sono riuscito a creare uno sketch di prova in cui, inserendo una lettera tramite il monitor seriale, questa "scorre" effettivamente sulla matrice di led, il problema è che poi non mi fa inserire altre lettere e l'unico modo che ho è quello di chiudere e riaprire il monitor seriale. in realtà lo scopo finale sarebbe quello di creare parole complete che scorrano automaticamente.
vi posto lo schizzo di codice che ho realizzato;

Codice: Seleziona tutto
#include <Colorduino.h>

void setup()
{
  Colorduino.Init();
  Serial.begin(9600);
}

//t è la colonna, y è la riga

//t è la colonna da dove inizia a scrivere
 
void a()
  {
   for(unsigned char t=7;t>=0;t--)
   {
    Colorduino.SetPixel(t,4,0,255,0);
    Colorduino.SetPixel(t,3,0,255,0);
    Colorduino.SetPixel(t,2,0,255,0);
    Colorduino.SetPixel(t,1,0,255,0);
    Colorduino.SetPixel(t,0,0,255,0);
    Colorduino.SetPixel(t+1,2,0,255,0);
    Colorduino.SetPixel(t+1,4,0,255,0);
    Colorduino.SetPixel(t-7,5,0,0,0);
    Colorduino.SetPixel(t-7,3,0,0,0);
    Colorduino.SetPixel(t+3,4,0,0,0);
    Colorduino.SetPixel(t+3,3,0,0,0);
    Colorduino.SetPixel(t+3,2,0,0,0);
    Colorduino.SetPixel(t+3,1,0,0,0);
    Colorduino.SetPixel(t+3,0,0,0,0);
    Colorduino.SetPixel(t+4,4,0,0,0);
    Colorduino.SetPixel(t+4,3,0,0,0);
    Colorduino.SetPixel(t+4,2,0,0,0);
    Colorduino.SetPixel(t+4,1,0,0,0);
    Colorduino.SetPixel(t+4,0,0,0,0);
    delay(500);
    Colorduino.FlipPage();
  }


void b()
{
  for(int t=7;t>=0;t--)
  {
    Colorduino.SetPixel(t,4,255,0,255);
    Colorduino.SetPixel(t,3,255,0,255);
    Colorduino.SetPixel(t,2,255,0,255);
    Colorduino.SetPixel(t,1,255,0,255);
    Colorduino.SetPixel(t,0,255,0,255);
    Colorduino.SetPixel(t+1,0,255,0,255);
    Colorduino.SetPixel(t+1,2,255,0,255);
    Colorduino.SetPixel(t+1,4,255,0,255);
    Colorduino.SetPixel(0,5,0,0,0);
    Colorduino.SetPixel(t+3,4,0,0,0);
    Colorduino.SetPixel(t+3,3,0,0,0);
    Colorduino.SetPixel(t+3,2,0,0,0);
    Colorduino.SetPixel(t+3,1,0,0,0);
    Colorduino.SetPixel(t+3,0,0,0,0);
    Colorduino.SetPixel(t+4,4,0,0,0);
    Colorduino.SetPixel(t+4,3,0,0,0);
    Colorduino.SetPixel(t+4,2,0,0,0);
    Colorduino.SetPixel(t+4,1,0,0,0);
    Colorduino.SetPixel(t+4,0,0,0,0);
    delay(750);
    Colorduino.FlipPage();
  }
}

void loop()

  if(Serial.available()){
    char input = (char)Serial.read();
    Serial.println(input);
   
    switch (input){
      case 'a':
          a();
          delay(750);
          break;
      case 'b':
          b();
          delay(750);
          break;
    }
  }
}


scusate per la forma, ma ho copiato direttamente il codice, non so in quale altro modo farvelo vedere. se me lo dite, lo riposto meglio.
comunque, se avete consigli, vi ringrazio

Re: scorrimento testo su colorduino

MessaggioInviato: 24 lug 2013, 19:05
da StefDrums
allora, a me è capitato di dover gestire una matrice 3x6 tempo fa, quindi magari la mia esperienza ti sarà utile:

- costruisciti un bel vettore bidimensionale con tutti i valori per ogni colonnina di led
- metti il testo che vuoi visualizzare in un vettore
- costruisciti una funzione che si va a prendere il vettore, e butta i output tutti i rispettivi valori dei caratteri ASCII che compongono il tuo vettore.

così riesci ad avere un codice ordinato, e soprattutto, ti basta "dare in pasto" alla tua funzione un vettore, e poi ci pensa lei!

Re: Scorrimento testo su colorduino

MessaggioInviato: 24 lug 2013, 22:04
da MJ990
grazie per la risposta.
facendo come hai detto tu però non avrei la possibilità di inserire di volta in volta il testo che io voglio visualizzare, giusto?
andrei a creare a monte delle parole da visualizzare quando le vado a richiamare, o ho capito male?
a me servirebbe qualcosa di più "dinamico", nel senso che può riprodurre qualsiasi parola che di volta in volta gli comando

Re: Scorrimento testo su colorduino

MessaggioInviato: 24 lug 2013, 22:14
da StefDrums
MJ990 ha scritto:facendo come hai detto tu però non avrei la possibilità di inserire di volta in volta il testo che io voglio visualizzare, giusto?
andrei a creare a monte delle parole da visualizzare quando le vado a richiamare, o ho capito male?


beh, basta fare una bella funzione che "costruisce" un vettore (in realtà tu lo preallochi di tutti zeri, e la funzione lo riempie) chiedendo all'utente quali lettere mettere, scegliendo da tutte le tue lettere della tua matrice ASCII.

Re: Scorrimento testo su colorduino

MessaggioInviato: 24 lug 2013, 22:31
da MJ990
potresti essere un pochino più "pratico"? non sono molto ferrato su questo.

mettiamo che riesca a crearmi di volta in volta la parola, come faccio a farla scorrere sulla matrice?

Re: Scorrimento testo su colorduino

MessaggioInviato: 24 lug 2013, 23:21
da StefDrums
MJ990 ha scritto:potresti essere un pochino più "pratico"? non sono molto ferrato su questo.

mettiamo che riesca a crearmi di volta in volta la parola, come faccio a farla scorrere sulla matrice?


ma scusami, se tu hai una funzione che ti riempia un vettore, poi quel vettore lo dai in pasto alla funzione che te lo stampa, no?

cosa non è chiaro?

Re: Scorrimento testo su colorduino

MessaggioInviato: 25 lug 2013, 9:49
da MJ990
non mi è chiaro come farlo scorrere sulla matrice.

Re: Scorrimento testo su colorduino

MessaggioInviato: 25 lug 2013, 10:53
da StefDrums
cerco di essere il più chiaro possibile, descrivendoti proprio quello che ho fatto io:

Codice: Seleziona tutto

int ASCII [] [] = {(0,0,1....)}   \\questa è la tua matrice con i caratteri ASCII, dove tu, in base ai collegamenti fisici dei led ai pin, gli dici quali devono essere accesi, quali spenti, in base alla lettera che vuoi visualizzare. ovviamente la devi costruire "apposta" per l'hardware che usi.

char TEXT [] = {'t', 'e', 's', 't', 'o'}   \\questo vettore è il testo che vuoi visualizzare

viod main {

  modifica_testo (TEXT);   \\leggi sotto
  visualizza_testo (TEXT);   \\leggi sotto

}

void modifica_testo (char TEXT) {
   
   for (t=0; t<5, t++) {
   \\questa funzione si prende ogni elemento del vettore TEXT
     e prende il corrispettivo valore della matrice ASCII e lo visualizza
    }

return;
}

void visualizza_testo (char TEXT) {
   
   for (t=0; t<5, t++) {
   \\questa funzione si prende ogni elemento della matrice ASCII, lo visualizza per farlo scegliere all'utente
     e quando l'utente ha scelto il carattere, salva il corrispettivo valore nel tettore TEXT e passa alla posiz successiva nel vettore
    }

return;
}


questo è in modo molto semplificato quello che ho fatto io quando ho dovuto controllare una matrice di LED.
ciao!

Re: Scorrimento testo su colorduino

MessaggioInviato: 25 lug 2013, 13:31
da MJ990
ok grazie, molto chiaro

Re: Scorrimento testo su colorduino

MessaggioInviato: 25 lug 2013, 14:05
da MJ990
ma in ogni caso questo codice non fa scorrere il testo, lo visualizza soltanto. giusto?