Show Posts
Pages: [1] 2 3 ... 20
1  International / Hardware / Re: Riconoscere chisura/apertura circuito on: July 12, 2014, 10:13:53 am
Ma perchè usare un pin analogico non l'ho capito.... o chiuso o è interrotto, non ci sono vie di mezzo

Sì effettivamente è sprecato usare un pin analogico. Ma lo stesso metodo però su un pin digitale potrebbe andare?

Grazie
2  International / Hardware / Re: Riconoscere chisura/apertura circuito on: July 12, 2014, 06:34:00 am
Ok forse sto facendo una cavolata, ma una cosa del genere (come in allegato) potrebbe funzionare?
Monitorando il pin analogico e collegando e staccando il filo arancione ottengo valori stabili così da poter creare condizioni e quindi loggare il tutto...
Può andare?

Grazie mille!
3  International / Hardware / Riconoscere chisura/apertura circuito on: July 12, 2014, 04:40:58 am
Ciao a tutti, quale è secondo voi il metodo più semplice per riconoscere l'apertura/chiusura di un circuito?
Cerco di spiegarmi meglio, anche se neanche io ho capito bene la situazione.
Mi è stato chiesto di crerare un logger con arduino che registri su sd determinati valori.
Il tizio dice che a me non serve sapere nulla tranne che quando un "relè che userà lui per il suo scopo si eccita, taglia il passaggio di un determinato cavo". Quindi dice che arduino dovrebbe essere in grado di individuare quando quel cavo viene aperto/chiuso e loggare ora e altri valori.
A me è venuto in mente tipo di utilizzare i pin analogici che leggono il valore dei 5v e quindi tenere d'occhio il valore (0 - 1023) e loggare di conseguenza...
Ma credo ci sia di sicuro un metodo più elegante.
Grazie a tutti in anticipo per il vostro aiuto.
Nel caso servissero più info, chiederò al tizio di dirmi tutto quello che mi serve perchè già sembra na cavolata ma con sti modi di non dirmi tutto mette in difficoltà -.-"
4  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..
5  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
6  International / Megatopic / Re: Arduino WordClock - La mia versione. on: April 03, 2013, 03:09:42 am
Complimenti.  smiley-wink

Grazie mille! smiley
7  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.
8  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.
9  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!:)
10  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!
11  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!
12  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...
13  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

14  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
15  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;
}
Pages: [1] 2 3 ... 20