Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Progettazione software per cubo led 4x4x4

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[211] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utenteposta10100 » 4 mag 2009, 14:20

Galaxi93 ha scritto:Volendo posso provare a cambiare il quarzo, mi serve solo un po’ di tempo perché devo modificare la demo-board (tolgo il quarzo e metto su uno connettore femmina, in maniera da poter cambiare facilmente il quarzo in base all'esigenze).


Il quarzo deve essere messo il piu` vicino possibile al PIC... non puoi montarlo su accrocchi volanti...
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[212] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utentec1b8 » 4 mag 2009, 14:37

Galaxi93 ha scritto:In effetti ho notato un miglioramento delle prestazioni, dato che quando mancano pochi led da spegnere ci mette di meno a trovarli.
Però c'è sempre qualcosa che non funziona correttamente e alcune cose che non mi convincono molto.
....

Fammi capire una cosa, l'ottimizzazione era rivolta ad avere i led che non lampeggiavano e con una luminosità buona: abbiamo raggiunto questo scopo?

Il problema dello spegnimento/accensione dei led che rallenta o non avviene in modo completo non è un problema di ottimizzazione ma di algoritmo. Pensare che una funzione random riesca sempre ad "indovinare" solo i led accesi/spenti è come dire che sai costruire un software in grado di vincere al super-enalotto: PASSAMELO SUBITO.

Dobbiamo cambiare strategia. Provo a ipotizzare una soluzione.
- Inizialmente hai 64 led da accendere/spegnere (numerati a 0 a 63), quindi generi un numero casuale da 0 a 63 e modifichi lo stato del led corrispondente.
- Fatto questo i led rimanenti sono 63, generi un numero casuale da 0 a 62 (diciamo che generi il numero P) e modifiche lo stato del P-esimo led acceso o spento in funzione del fatto che stai spegnendo o accendendo i led.
- Quindi ne rimangono 62. E così via fino ad esaurimento.
Con un algoritmo di questo tipo sei sicuro di accendere/spegnere un led ad ogni tentativo e sei sicuro di accenderli/spegnerli tutti.

Ma questa non è ottimizzazione, questo è un altro algoritmo.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[213] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utenteposta10100 » 4 mag 2009, 15:21

c1b8 ha scritto:Il problema dello spegnimento/accensione dei led che rallenta o non avviene in modo completo non è un problema di ottimizzazione ma di algoritmo. Pensare che una funzione random riesca sempre ad "indovinare" solo i led accesi/spenti è come dire che sai costruire un software in grado di vincere al super-enalotto: PASSAMELO SUBITO.


Anche a me! GRAZIE!!!
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[214] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto UtenteGalaxi93 » 4 mag 2009, 19:00

posta10100 ha scritto:
Galaxi93 ha scritto:Volendo posso provare a cambiare il quarzo, mi serve solo un po’ di tempo perché devo modificare la demo-board (tolgo il quarzo e metto su uno connettore femmina, in maniera da poter cambiare facilmente il quarzo in base all'esigenze).


Il quarzo deve essere messo il piu` vicino possibile al PIC... non puoi montarlo su accrocchi volanti...


Questa è la mia demoboard auto-cotruita:
http://img209.imageshack.us/img209/3553/06032009017.jpg

Dovrei sistemarla perché i connettori che ho messo erano tarocchi...si rompono #-o

Io pensavo di togliere il quarzo e mettere 2 connettori dove infilare il quarzo. Come distanza non supera il cm.

Per quanto riguarda il discorso di c1b8: Si bell'idea, il problema sta metterla in pratica! #-o

Il problema è che si dovrebbe far generare solo i numeri che non sono ancora usciti. Perché, da quel che ho capito dal tuo discorso, dopo che è uscito il primo numero e acceso il led, genera un numero da 0 e 62. E se deve accendere/spegnere il led n° 63 ? E' un bel problema.
Bisognerebbe avere una lista di numeri e ogni volta ne sceglie uno e lo toglie dalla lista, poi controlla quanti numeri ci sono ancora e genera un range di numeri casuali pari a quelli della lista. Sapete se è possibile fare ciò?
Galaxi93.

Visita il mio sito!! E' ancora in costruzione, ma anche tu puoi contribuire a farlo crescere e darmi dei consigli per migliorarlo! Dai prova, provare non costa nulla! Vieni!
Avatar utente
Foto UtenteGalaxi93
3.118 3 7 13
Master
Master
 
Messaggi: 617
Iscritto il: 15 apr 2009, 16:27

0
voti

[215] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utentec1b8 » 4 mag 2009, 20:46

Galaxi93 ha scritto:Per quanto riguarda il discorso di c1b8: Si bell'idea, il problema sta metterla in pratica! #-o

Il problema è che si dovrebbe far generare solo i numeri che non sono ancora usciti. Perché, da quel che ho capito dal tuo discorso, dopo che è uscito il primo numero e acceso il led, genera un numero da 0 e 62. E se deve accendere/spegnere il led n° 63 ? E' un bel problema.
Bisognerebbe avere una lista di numeri e ogni volta ne sceglie uno e lo toglie dalla lista, poi controlla quanti numeri ci sono ancora e genera un range di numeri casuali pari a quelli della lista. Sapete se è possibile fare ciò?

Devi provarci da solo, poi se non ci riesci ti aiutiamo volentieri, ma è bene che sia tu a provarci perché solo così potrai imparare.
Pensa bene a tutti i dati che hai, a quali mancano e come trattare gli uni e gli altri.
Poi facci sapere.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[216] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utenteposta10100 » 4 mag 2009, 21:23

Galaxi93 ha scritto:Io pensavo di togliere il quarzo e mettere 2 connettori dove infilare il quarzo. Come distanza non supera il cm


I quarzi devono stare il più vicino possibile al PIC e con i terminali più corti possibile.
Questo perché i quarzi lavorano ad alta frequenza e a quelle frequenze si sente l'effetto induttivo dei conduttori.
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[217] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto UtenteGalaxi93 » 5 mag 2009, 14:50

posta10100 ha scritto: I quarzi devono stare il più vicino possibile al PIC e con i terminali più corti possibile.
Questo perché i quarzi lavorano ad alta frequenza e a quelle frequenze si sente l'effetto induttivo dei conduttori.


E lo so, infatti, quando l'ho costruito, ho dato la "precedenza" al quarzo, facendogli le piste più corte possibile (ma non troppo vicino al PIC, per evitare fastidi nella rimozione/inserimento dello stesso).

Per quanto riguarda il programma, oggi proverò a inventarmi qualcosa. Solo una domanda: ma dite che si può creare quello che voglio, utilizzando quello che conosco io (che è più o meno quello nel programma) ??

P.S: Finalmente mi sono arrivati i led e le basette (incredibile! I led arrivavano da Hong Kong e le basette da Caserta, e sono arrivati entrambi dopo un mese... :? ). Volevo chiedervi un consiglio, come dire, artistico :mrgreen:
Ho a disposizione diversi led di colore blu, giallo, bianco, verde e rosso. Che colore lo faccio il cubo? Tinta unita o multicolore? (i led sono fantastici, se si pensa che li ho pagati qualche centesimo l'uno!!).

Ciao,
Davide.
Galaxi93.

Visita il mio sito!! E' ancora in costruzione, ma anche tu puoi contribuire a farlo crescere e darmi dei consigli per migliorarlo! Dai prova, provare non costa nulla! Vieni!
Avatar utente
Foto UtenteGalaxi93
3.118 3 7 13
Master
Master
 
Messaggi: 617
Iscritto il: 15 apr 2009, 16:27

0
voti

[218] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utenteposta10100 » 5 mag 2009, 18:26

Galaxi93 ha scritto:Per quanto riguarda il programma, oggi proverò a inventarmi qualcosa. Solo una domanda: ma dite che si può creare quello che voglio, utilizzando quello che conosco io (che è più o meno quello nel programma) ??


Si, si tratta di trovare l'algoritmo, per tradurlo in codice ti basta quello che già conosci.
Galaxi93 ha scritto:Ho a disposizione diversi led di colore blu, giallo, bianco, verde e rosso. Che colore lo faccio il cubo? Tinta unita o multicolore?

Questo dipende solo da te, come ti piace? magari metti un connettore tra il circuito e il gruppo di led in modo da renderli intercambiabili: una logica -> tandi cubi! :mrgreen:

Luca.
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[219] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto UtenteGalaxi93 » 5 mag 2009, 18:50

posta10100 ha scritto:Questo dipende solo da te, come ti piace? magari metti un connettore tra il circuito e il gruppo di led in modo da renderli intercambiabili: una logica -> tandi cubi! :mrgreen:


Non mi pare una brutta idea... grazie del consiglio! :wink: (anche se penso che farò un cubo solo, ma non si sa mai).

comunque per il programma, come prima idea, mi è venuta questa, ma non penso che sia definitiva, perché temo che rallenti il programma:

Codice: Seleziona tutto
//Funzione che accende (stato=1) o spegne (stato=0) tutti i led del cubo
//casualmente.
void fill_empty_led(char stato, char tempo)
     {
     char wrong;                       //Variabile che serve in caso che il
     gioco=0;                          //tempo di ricerca del led supera tempo.
     reset(1-stato);
     while (gioco<64)                  //Ciclo che si ripete per ogni led.
           {
           char xy;
           if (wrong<tempo)         //Controlla se wrong ha superato tempo.
              random();             //in caso negativo, genera un numero casuale
           else                     //se invece lo ha superato,
               {
               random_64++;         //incrementa random_64 e controlla
               if (random_64==64)    //che non sia uguale a 64
                  { random_64=0; }  //altrimenti lo resetta.
               }
           z_led=random_64>>4;        //Queste formule servono per convertire
           xy=random_64 & 15;         //in coordinate, un numero compreso tra
           y_led=xy>>2;               //0 e 63 (generato dalla funzione random).
           x_led=xy & 3;
           if (cambia_if(x_led,y_led,z_led,stato)) //Poi controlla se il led
              {                       //uscito è gia stato spento/acceso prima.
              gioco++;                //e se lo deve cambiare incrementa di 1
              check_led(tempo);       //gioco e accende i led.
              wrong=0;                //Resetta la variabile wrong.
              }
           check_led(1);           //Serve per attenuare i lampeggii dovuti
           wrong++;                //alle pause per la ricerca del led mancante.
           }
   }


Come si può notare dal programma, ogni volta che non "indovina il led corretto" aumenta wrong e se supera tempo, aumenta di uno la variabile random_64, così da avere la certezza che non ci impiegherà più di 64 cicli (cicli di check led) ha trovare il led.
Lo so che non è proprio il massimo, ma per adesso mi è venuto in mente questo. In ogni caso sto ancora lavorando per trovare una soluzione migliore.
Galaxi93.

Visita il mio sito!! E' ancora in costruzione, ma anche tu puoi contribuire a farlo crescere e darmi dei consigli per migliorarlo! Dai prova, provare non costa nulla! Vieni!
Avatar utente
Foto UtenteGalaxi93
3.118 3 7 13
Master
Master
 
Messaggi: 617
Iscritto il: 15 apr 2009, 16:27

0
voti

[220] Re: Progettazione software per cubo led 4x4x4

Messaggioda Foto Utentephylum » 5 mag 2009, 19:51

//Funzione che accende (stato=1) o spegne (stato=0) tutti i led del cubo
//casualmente.


e' un po ambiguo :) {almeno per la mia logica}

cioe' stando a questo dovresti chiamare acc_led nn check_led
\int_{}tella
Immagine
Avatar utente
Foto Utentephylum
6.191 5 7 12
G.Master EY
G.Master EY
 
Messaggi: 3217
Iscritto il: 9 ott 2007, 12:40

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti