Show Posts
Pages: [1] 2 3 ... 19
1  International / Hardware / Re: MAX 7219: Valore resistenza, consiglio! on: April 11, 2013, 04:31:00 am
anch'io sto facendo il wordclock, ho appena finito di collegare tutto e acceso.
la differenza di luminosità è davvero esagerata! io prevedevo di mettere una fotoresistenza per abbassare la luminosità, ma qui mi sa che ci vuole un amplificatore invece!
leggendo nel playground di arduino vedo che la luminosità potrebbe essere regolata anche tramite lo SCAN LIMIT:

http://playground.arduino.cc/Main/LedControl#SetupScanLimit

qualcuno c'ha provato? e se nessuno c'ha provato, ci provo io? ma avrei bisogno di una mano in tal caso!
Poichè è un orologio, in ogni riga ci sono diverse ore, cosi come diversi minuti, è perciò possibile far in modo che non tutte le righe siano disponibili ad essere accese, si potrebbe far in modo che ad ogni loop si verifichi quali righe debbano essere attive e tenere spente le altre. é fattibile la cosa?

edit post rimuginazione notturna:

non saranno richiamate ad accendersi allo stesso tempo mai più di 4 righe in entrambe le matrici; per avere sempre lo stesso livello di intensità luminosa potrei impostare lo scanlimit una sola volta nel void setup a 4 e  far perciò lavorare i led ad 1/4 di secondo.
Ciò che non ho capito è il valore di Rset da usare in questo caso: ho riletto il datasheet del max7219 una decina di volte ma non arrivo ad una conclusione.
Da questa tabella leggo (anzi estraplolo)



che nel caso di 4 digit la massima corrente per riga è di 40mA che è anche la massima corrente dissipabile dal max7219, ma a me servono 20-25mA per riga(quella necessaria per i led) e quindi la limitazione posta dalla Rset da 22k è idonea comunque per 4 digit, o no? Non riesco a convincermi di questo e ho paura di bruciare i max



@nik_90:

infine che resistenza hai messo? io ora ho una 22k e fa pena

Alla fine seguii l'consiglio che mi era stato da Leo, misi una resistenza da 10K. Ti dico, l'orologio è ormai in funziona da un'anno e i 2 max7219 non sembrano cedere smiley
Capisco cosa significa quando mi dici che una R da 22k fa pena:) Iniziai anche io da quel valore fino ad arrivare a 10k.. Il problema del multiplex è proprio questo purtroppo..
2  International / Megatopic / Re: Arduino WordClock - La mia versione. on: April 03, 2013, 03:25:21 am
Complimenti, molto bello.
Tra l'altro ho visto che nel tuo progetto c'è anche un po' di Leo(s)  smiley-grin

Grazie!:)
Sì, nel codice soprattuto nella parte relativa al pong-game viene utilizzato Leo(s) Anche perché se scopri Leo(s) è difficile farne a meno! smiley
3  International / Megatopic / Re: Arduino WordClock - La mia versione. on: April 03, 2013, 03:09:42 am
Complimenti.  smiley-wink

Grazie mille! smiley
4  International / Megatopic / Re: Arduino WordClock - La mia versione. on: April 03, 2013, 03:09:17 am
Quindi in realtà sono 2 lastre di plexiglass, una scura con le sagomature e quella esterna bianca a cui hanno incollato l'altra?

No, è presente un solo foglio di plexiglass, di tipo opaco. Dopo di che il template è stato stampato su una comune carta adesiva (nero lucido) ed incollato sul plexiglass opaco.
5  International / Megatopic / Re: Arduino WordClock - La mia versione. on: April 03, 2013, 02:47:09 am
Grazie per i complimenti! smiley
Per quanto riguarda la parte relativa al pannello frontale ho fatto tutto in tipografia. Mi è stato consigliato di usare un plexiglass di tipo opaco, poiché dietro è presente parecchia luce. Poi si sono occupati di eseguire il taglio del template che gli ho portato e di incollarlo.
6  International / Megatopic / Arduino WordClock - La mia versione. on: April 02, 2013, 06:05:08 pm
Ciao a tutti, volevo condividere con voi quello che ho realizzato. Già qualche mese fa ve ne parlai ma diciamo che il codice era parecchio disordinato, e di schemi non ne parliamo! smiley
Tra studio e lavoro sono riuscito il queste ultime due settimana a riprendere e mettere un poco in ordine il tutto.
Si tratta del WordClock, il mio personale clone del famoso qlocktwo.

Ho apportato qualche modifica rispetto all'originale, per renderlo appunto più personale.

Attraverso un sensore capacitivo posto sulla parte inferiore della cornice è possibile accedere ad altre funzioni dell’orologio.

Ecco l’elenco delle 5 principali funzionalità:

1. WordClock: Mostra l’ora con le parole invece che con i numeri,
      funzionalità di aggiornamento automatico ora legale/solare integrata.
2. Spirale: Una sorta di “ScreenSaver” che accende tutti e 114 i led con un effetto a spirale.
3. Random: Altro “ScreenSaver” che accende tutti e 114 i led in modo random.
4. Pong Game: Classico gioco da tennis, utilizzabile attraverso l’utilizzo di 2 joypad.
     Ha inoltre la funzione di aumento velocità della pallina durante il gioco e la possibilità di portare il conto del punteggio dei 2 giocatori fino ad un massimo di 9 punti.
5. Temperatura: Mostra tramite un sensore di temperatura la temperatura attuale.

Per quanto riguarda il Pong-Game diciamo che è quello che mi ha portato via più tempo, e spero di migliorare il codice che lo gestisce quanto prima! smiley

Per maggiori informazioni vi rimando all'indirizzo qui sotto dove potete visualizzare una galleria di immagini e scaricare il .zip contenente tutto il necessario: Codice, schemi e template.

http://www.nicolalopatriello.it/blog/2013/04/02/progetto-arduino-wordclock/

Volevo poi ringraziare tutto il Forum Arduino che durante il periodo di realizzazione, soprattutto per la parte elettronica mi è stato di grande aiuto!:)
7  International / Hardware / Display 162b e led luminosità. on: November 21, 2012, 10:06:13 am
Ciao a tutti, mi trovo un display 162b, questo il datasheet:

http://www.adrirobot.it/datasheet/LCD/PDF/Displaytech_162b%20series-v12.pdf

Volevo sapere come comportarmi per il controllo del led della luminosità, è possibile controllarlo direttamente tramite un pin di arduino, magari solo con una resistenza, i led del display è green, quindi se non sbaglio a leggere il datasheet dovremmo essere intorno ai 20 mA, o sbaglio?  smiley-roll

Grazie mille a tutti in anticipo!
8  International / Hardware / Miglior setup microfono on: November 16, 2012, 10:48:35 am
Ciao a tutti, mi è arrivato un microfono electrec, precisamente questo:

http://www.google.it/imgres?q=MICROFONO+ARDUINO&um=1&hl=it&safe=off&sa=N&biw=1280&bih=738&tbm=isch&tbnid=u3g5V_YUXmErWM:&imgrefurl=http://www.miniinthebox.com/it/elettronica-fai-da-te-arduino-suono-del-microfono-modulo-sensore-di-rilevamento_p340891.html&docid=tN-qGGchjkH2pM&imgurl=http://cloud8.lbox.me/images/384x384/201206/elettronica-fai-da-te-arduino-suono-del-microfono-modulo-sensore-di-rilevamento_arivln1339666663581.jpg&w=384&h=384&ei=cl6mUOKbA5CN4gSdgoEY&zoom=1&iact=hc&vpx=419&vpy=402&dur=213&hovh=225&hovw=225&tx=88&ty=166&sig=109555337596335282627&page=1&tbnh=141&tbnw=173&start=0&ndsp=21&ved=1t:429,r:12,s:0,i:105

Monta un amplificatore lm333 e ha, come è possibile vedere, un regolatore.. Ora, volevo chiedere se qualcuno di voi ha avuto esperienza con microfoni del genere e quale sarebbe il miglior modo per raccogliere variazioni, configurazioni sia a livello software che hardware. Nel senso, quanto è importante regolare la resistenza sopra? Nella parte software credo sia importante campionare le letture per poi compararle, molti esempi fanno letture ogni 10ms non è esagerato? Un'altra cosa, il microfono ha anche un pin per un'uscita digitale, cioè potrebbe essere collegato ad un pin digitale, quale sarebbe il vantaggio? Ho notato anche un led "sensor" che, in base a regolazioni della resistenza, si illumina quando riceve, ma non dovrebbe ricevere sempre il microfono?

Scusate le mille domande ma voglio un po capire la situazione.. xD

Grazie!
9  International / Software / Re: Aiuto con concatenazione char* on: November 10, 2012, 06:41:05 am
Si infatti poco fa ho modificato la funzione:

fuori dalla funzione ho questo:

Code:
char StringWithSpaces[14];

questa è la nuova funzione:

Code:


char *printMenuItem2(byte id_lingua2, byte id_stringa2)
{
String stringaMenu = multiliguaArray2[id_lingua2][id_stringa2];
String stringaSpazi;
 
  //char stringa[] = multiliguaArray2[id_lingua2][id_stringa2];
int lenght = stringaMenu.length();

if(lenght >= 14)
{
stringaMenu.toCharArray(StringWithSpaces, 14);
return StringWithSpaces;
}

byte spaces = (((LCD_COLONNE - 2) - lenght) / 2);
char spazio = ' ';

for(int x=0; x<spaces; x++)

stringaSpazi = stringaSpazi + spazio;
}
//StringWithSpaces2[spaces] = '\0';

stringaSpazi = stringaSpazi + stringaMenu;

stringaSpazi.toCharArray(StringWithSpaces, 14);
return StringWithSpaces;
}



Dentro la funzione uso String, alla fine converto String e lo copia nel char StringWithSpaces.

Il programma in questo modo non si blocca, ma menu beckend, se faccio una cosa del genere:

Code:
MenuItem photo_tool = MenuItem(printMenuItem2(ITA,MENU_STRUMENTI));//Nomi del menu (PHOTOTOOL)
MenuItem settings = MenuItem(printMenuItem2(ITA,MENU_IMPOSTAZIONI)); //Nomi del menu (IMPOSTAZIONI)

Sfogliando il menu mi restituisce sempre l'ultimo elemento , in questo caso IMPOSTAZIONI, anche dove dovrebbe esserci strumenti...
10  International / Software / Re: Aiuto con concatenazione char* on: November 10, 2012, 06:20:32 am
Allora purtroppo come immaginavo, quello che ho fatto messo nel programma vero e proprio mi crea problemi. Posto tutto lo sketch di prova che funziona.

Code:
#define ITA 0
#define ING 1
#define TED 2


#define MENU_STRUMENTI                 0
#define MENU_INTERVAL                  1
#define MENU_SUONO                     2


#define LCD_COLONNE                    16


//RIGA COL
 char* multiliguaArray [3][3] = {
  "STRUMENTI", "Interval.", "Suono"};

char StringWithSpaces[14];


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

void loop()
{
  for(int x=0; x <= 2; x++)
  {
  Serial.print("NEL LOOP: ");
  Serial.println( printMenuItem(0,x) );
  delay(500);
  }
  delay(10000);


}


char *printMenuItem(byte id_lingua, byte id_stringa)
{
char *stringa = multiliguaArray[id_lingua][id_stringa];
int lenght = strlen(stringa);

if(lenght >= 14)
{
return stringa;
}

byte spaces = (((LCD_COLONNE - 2) - lenght) / 2);
char spazio = 's';
for(int x=0; x<spaces; x++)

StringWithSpaces[x] = spazio;
}
StringWithSpaces[spaces] = '\0';

strcat(StringWithSpaces,stringa);

return StringWithSpaces;
}



Sto usando la libreria menubeckend per creare un menu, la mia intenzione è di creare un menu con un paio di lingue.
Menubeckend ti da la possibilità di creare dei menuItem e assegnargli un nome, esempio in questo modo:

Code:
MenuItem photo_tool = MenuItem("  menu1   ");
MenuItem intervalometer = MenuItem("   menu2  ");//sottomenu...

Quello che voglio fare io con la mia funzione è, dopo essermi creato l'array di ad esempio 3 righe, (per l'ita, ing, e ted) e tot colonne per quello che voglio rappresentare (menu1, menu2, ecc..)
Creare gli spazi per posizionare meglio nell'lcd (al centro).

Ora, con il programma postato ora, tutto sembra funzionare.

-Chiamando un sola volta la funzione per creare il menuItem, sembra funzionare, in questo modo:

Code:
MenuItem photo_tool = MenuItem(printMenuItem(ITA,MENU_STRUMENTI));

-Chiamando una seconda volta la stessa funzione per fare lo stesso servizi, non va.

Ho provato a controllare la ram libera nel programma completo, siamo a circa 400 byte liberi.

Penso ci sia qualche macello a livello di puntatori e l'array di char, questo lo dico perchè ho provato ha creare un nuovo array (identico con nome diverso) un'altra funzione (identica con nome diversa), e nella creazione dei due elementi del menu ho chiamato per un menu una funzione e per l'altro menu l'altra funzione, in questo modo non si blocca..

Qualche consiglio?

Grazie

11  International / Software / Re: Aiuto con concatenazione char* on: November 09, 2012, 05:36:19 pm
Ok, ho spostato char spaces_string[14] fuori dalla funzione, effettivamente si trattava di una variabile locale alla funzione, e quindi fuori dalla funzione lo spazio dedicato potrebbe essere riutilizzato, giusto ?  smiley-roll-blue

Ora sembra che stampi.. qualche errore ci sarà di sicuro, o forse è poco elegante come l'ho fatto..smiley
12  International / Software / Re: Aiuto con concatenazione char* on: November 09, 2012, 05:27:01 pm
Quindi hai risolto?

mh no, cioè sembra che vada solo nella funzione e non nel loop, forse dovrei usare puntatori a char..

guarda posto un esempio di codice sotto, così si capisce tutto meglio..

Code:
#define LCD_COLONNE                    16

 char* array[2][21] = {"stringa1", "stringa2", "stringa3", "stringa3"};

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

void loop()
{
  Serial.print("NEL LOOP: ");
  Serial.println( printMenuItem(0,0) );
  delay(2000);


}


char *printMenuItem(byte id_lingua, byte id_stringa)
{
char *stringa = array[id_lingua][id_stringa];
int lenght = strlen(stringa);
byte spaces = (((LCD_COLONNE - 2) - lenght) / 2);

char spaces_string[14];


char spazio = 's';
for(int x=0; x<spaces; x++)

spaces_string[x] = spazio;
}
spaces_string[spaces] = '\0';

strcat(spaces_string,stringa);

Serial.print("Nella funzione: ");
Serial.println(spaces_string);
delay(2000);

return spaces_string;
}
13  International / Software / Aiuto con concatenazione char* on: November 09, 2012, 04:59:31 pm
ciao a tutti, non riesco a risolvere un problema, premetto che devo lavorare con array di char e quindi non posso usare String.

Ho una funzione che deve creare una stringa con degli spazi prima della stringa che leggo, in poche parole:

-chiamo la funzione
-la funzione legge la stringa che mi interessa.
-in base a questa stringa devo leggere calcolare quanti spazi devo mettergli prima
-conosciuti gli spazi, penso dovrei creare un'altra stringa contenente gli spazi
-concatenare gli spazi con la stringa letta...

Riesco a leggere la stringa che mi interessa dall'array, calcolo senza problemi il numero di spazi che devo mettergli prima, ma ho problemi nel creare la stringa di spazi e poi concatenarla, la funzione deve ritornare un char*

Ho provato a creare la stringa di spazi in questo modo:

Code:
char spaces_string[10];
char spazio = ' ';
for(int x=0; x<spaces; x++)
{  
spaces_string[x] = spazio;
}

Penso sia giusto in questo modo, poi ho provato a concatenare con strcat ma penso ci siano problemi con il terminatore in spaces_string.  smiley-roll-blue

Grazie


EDIT: Ho appena provato ad aggiungere il terminatore '\0' in questo modo:

Code:
spaces_string[spaces] = '\0';

Sembra funzioni smiley
14  International / Software / Re: leOS, pauseTask e restartTask! on: November 07, 2012, 01:34:31 pm
Ok, inizio a leggermi qualcosa, praticamente dovrei utilizzare quella libreria per creare i 38Khz tipo come avevi detto tu in un'altro topic:

"Ora, con la modalità FastPWM con tetto impostato da OCR2A la frequenza che si ottiene è data dalla formula:
Fpwm = Fclk / (prescaler * (max_val + 1)) / 2
La divisione per 2 è motivata dal fatto che in modalità FastPWM il canale A è cambiato di stato alternativamente per ottenere un duty cicle del 50%.

Sostituendo a max_val il valore di OCR2A+1, che è 212, abbiamo:
Fpwm = 16000000 / ( 1 * 212) = 37736 Hz"

..credo..smiley
15  International / Software / Re: leOS, pauseTask e restartTask! on: November 07, 2012, 11:49:28 am
Puoi in alternativa utilizzare il timer 1 impostato per generare un segnale PWM a 38 kHz.

Attualmente per attivare i 38khz e poi disattivarli uso queste due funzuini.

Code:
void turn_on_IR ()
{
  TCCR2A = _BV(WGM21) | _BV(COM2A0); // This mode toggles output once per timer cycle
  TCCR2B = _BV(CS20);  // Do not scale the clock down - use 16 MHz timer rate.
  OCR2A = 210; // Divide sys. clock by 210, 1/2 cycle = 76 khz, 1 cycle = 38 khz
    // Output pin 11 should now be emitting a 38 khz signal.
}

void turn_off_IR ()
{
// TCCR2A = 0; // Disconnect PWM
  //TCCR2B = 0; // Stops the timer
  //OCR2A = 0;  // No timer top
  digitalWrite(irLED, LOW);  // Ensure output is off
 
}


Quindi utilizzo il timer 2 per generare i 38khz. Se volessi quindi utilizzare il timer1 come dovrei procedere per modificare le due funzioni, o meglio, a questo punto solo l'accensione visto che turnOff() spegne solo il led..
Queste funzioni aimè sono copia e incolla quindi non saprei dove mettere mani..:/

Grazie
Pages: [1] 2 3 ... 19