Pages: [1] 2 3 ... 8   Go Down
Author Topic: Typhon led controller, con Arduino si può ??  (Read 5152 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti, sono nuovo del forum e di arduino. Ho appena comperato un kit arduino, ed ho intenzione di cimentarmi e divertirmi con questo meraviglioso oggetto.
Non ho mai studiato elettronica, me ne sto appassionando adesso, ed ho in mente di iniziare a relizzare qualche progettino semplice e simpatico, ma senza grosse pretese.
Avendo io stesso una esigenza, ho trovato su internet quasto articolo: http://www.boostled.com/products/typhon-led-controller-kit.
La mia domanda è: E' complicato fare lo stesso aggeggio e con le stesse funzionalità con arduino ???
Ho in mente di realizzare un controller uguale a quello, ma con l'aggiunta di un sensore che rileva il Ph oppure la temperatura da un acquario.
Mi aiutereste a relizzarlo ??? mi risulterebbe impossibile senza il vostro aiuto.
Grazie in anticipo.
Logged

0
Online Online
Shannon Member
****
Karma: 129
Posts: 10443
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cosa fa quell'aggeggio? a me sembra uno chermino LCD e 4 pulsanti in croce.. Con l'arduino non FAI quell'oggetto, ma LO USI.
I sensori di Ph se non erro sono un poco costosi, sui 30/40€ (ma li ho visti di sfuggita, magari ci sono cose molto più economiche), e quelli di temperatura costano prezzi ridicoli per il tuo scopo (2 o 3€ al massimo)

il problema sarà trovare qui sensori a prova d'acqua (non mi viene il termine!), e quindi potresti spenderci un deca in più per la spedizione da qualche sito.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quell'aggeggio è pronto all'uso senza arduino.... praticamente è quello che vorrei realizzare io.
Ti descrivo di cosa avrei bisogno: devo costruire una plafoniera a led per il mio acquario.
Questa plafoniera deve simulare l'alba ed il tramonto..., cioè: Accensione alla minima potenza -- aumento graduale potenza led (in 30 minuti circa) -- potenza massima per circa 8 ore --  diminuizione graduale della potenza led (in 30 min. circa) -- spegnimento. Io, dovrei poter programmare l'ora di accensione di questo ciclo da un pannello lcd keypad, che comunque durante le 8 ore di funzionamento massimo dei led , mi potrebbe anche segnate la temperatura dell'acqua o rilevare il Ph attraverso una sonda collegata al sistema.
Tutto questo io credo si possa fare con arduino, cioè istruendo il microcontrollore affinchè faccia queste operazioni. Ovviamente io da solo non riuscirei mai a progettare e stilare lo sketch che servirebbe a tale funzionamento di una plafoniera. Ecco perchè ho bisogno di voi. Tralaltro mi sembra un bel progettino.
Pazienza ragazzi pazienza, io purtroppo non ci azzecco tanto con l'elettronica.  smiley-grin smiley-grin
Logged

0
Online Online
Shannon Member
****
Karma: 129
Posts: 10443
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bhe dubito che trovi qualcuno che ti scriva il codice... però sì può fare, non è nemmeno complicato.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho arduino da poco, lo sto studiando, ovviamente proverò io a stilare il programma....!!! perchè dici che nessuno mi scriverebbe il programma ??? si usa fare così nella comunità ??
Io sto imparando, arduino è nato proprio per quelli come me che non sono ingegneri elettronici, per quelli che ne sanno poco o niente....., non è così che dice nel suo libro Massimo Banzi ?? poi, non è solo questione di sketch, dovrei capire cosa comperare per costruire l'oggetto, cosa o no è compatibile, quali sono i componenti giusti al mio caso...!!! tutto questo vorrei farlo insieme a voi. Tu per esempio mi aiuteresti ??
Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti,

io sono sullo stesso tuo progetto più o meno da una settimana... ho tutta la componentistica; arduino uno, un rtc, sensori di temperatura ed un display...

il problema? il codice...

io non li ho mai fatti, sono giusto riuscito ad usare il display, faccio comparire scritte, l'ora, la temperatura registrata...

ma il codice per il fade sui canali pwm non riesco proprio a farlo... mi cercherò qualcuno che lo compili per me a pagamento perché non basta sapere cosa serve, ma occorre aver studiato per poterlo programmare a meno che tu non voglia farlo per imparare... in questo caso infatti potrai benissimo riuscirci ma ci andrà molto tempo.... troppo nel mio caso visto che la tesi si avvicina (non in informatica ovviamente)



Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Luca56, non ci sto capendo niente...!!! sono iscritto in tanti forum di vario genere. Ma davvero quì nessuno ti aiuta a compilare il programma ??? non ci posso credere !! Attenzione, non si sta parlando di qualcuno che lo faccia al posto tuo... ma di utenti che uniti della stessa passione, aiutino altri meno istruiti.

@lesto- tu per esempio mi aiuteresti ??
Logged

0
Online Online
Shannon Member
****
Karma: 129
Posts: 10443
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no, non hai capito, ad aiutarti siamo tutti disponibili, è scrivere il codice al posto tuo che non facciamo!

@ luca: hai giò scritto vari skect per leggere i vari sensori uno per uno?
hai già fatto in modo che non usino gli stessi pin e lo stesso nome delle variabili?
hai modificato i codici per non fare uso di delay?
bene, ora unisci tutti i setup e tutti i loop, ed in coda metti tutte le altre funzioni... et voilà
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Full Member
***
Karma: 0
Posts: 213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma va! smiley Non è per niente difficile! Se elimini il controllo con il pulsanti è ancora più facile!

Se ho capito bene, il codice a blocchi dovrebbe essere più o meno così:

Accendi lampada al minimo
              |
              |
Aumenta fino al massimo per 30 minuti
              |
              |
8 Ore di luce
              |
              |
Diminuisci fino a spegnere la lampada


Il materiale di cui necessiti, così a prima vista è:

 Mosfet (1 euro)
 Diodi di protezione (1 euro)
 Lampada (a 12 v possibilmente)


Se hai bisogno della precisione assoluta sull'orario, si complicano un po' le cose, perchè bisogna utilizzare un integrato esterno.

Se hai bisogno proprio di configurare arduino tramite pulsanti e non puoi attaccarlo al computer, ne riparleremo poi.

Per la temperatura: http://www.ladyada.net/learn/sensors/tmp36.html

E poi, google aiuta moltissimo! Sono tutte cose già fatte.

Per non usare i delay, secondo me è un po' presto, poi, io non sono sicuramente il più esperto del forum.


Comunque, sicuramente, qui non troverai nessuno che ti scrive il codice (salvo rari casi smiley-grin) ma molti te lo potranno correggere e aiutarti a migliorarlo.

Massimo Banzi si dice che arduino è rivolto ai principianti, ma dice anche molto altro. Leggi il suo topic! http://arduino.cc/forum/index.php/topic,68174.0.html


Se non sono stato chiaro, scrivi pure (: !
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Ma davvero quì nessuno ti aiuta a compilare il programma ??? non ci posso credere !! Attenzione, non si sta parlando di qualcuno che lo faccia al posto tuo... ma di utenti che uniti della stessa passione, aiutino altri meno istruiti.

Beh, inizia a postare il tuo codice!  smiley-lol
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 46
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Finalmente una risposta degna di nota....che non scoraggi!!! smiley senza togliere nulla a tutte le altre ovviamente.

@stefanolavori: intanto grazie mille per il tuo intervento chiaro chiaro. Vedrò di chiarire alcune cose.
-- L'arduino lo posso collegare al computer tranquillamente, quindi per quanto riguarda i pulsanti intendevo dire che devono essere insieme al          display lcd per peter programmare l'ora di accensione e quella di spegnimento.
-- Il dimmeraggio (che dura mezz'ora) dei led lo dovrebbe fare invece in automatico subito dopo l'accensione.
-- Per integrato esterno cosa intendi ?? ti riferisci forse ad un clock ??

grazie ancora.
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gestire un menù con bottoni e display lcd non è semplice, infatti, dato che sei all'inizio ti consiglio di utizzare il computer e collegarlo all'Arduino ogni volta che devi modificare il tempo di accensione e i vari parametri.

Il passaggio graduale di luce si puó benissimo fare in automatico. Infatti basta dividere 255 (i pwm vanno da 1 a 255) per 30 (il tempo) e ottieni il valore che usi per incrementare l'intensità della lampada, circa 8.
Dovrebbe quindi venire fuori una cosa così:
Code:
analogWrite(lampada, 8);
delay(60000);                   //aspetto un minuto
analogWrite(lampada, 16);
delay(60000);
]
Etc..... Fino a 255.

Come vedi è molto semplice.


Per integrato intendo quei cosi neri lunghi con tanti piedini di lato. Uno ad esempio è il chip di arduino: ATMEGA 328.
Per il tempo di solito si usa un NE555, ma a me è sempre basta la precisione del mio Arduino 2009, anche per orologi e sveglie.
« Last Edit: January 21, 2012, 05:10:58 am by stefanolavori » Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao a tutti...

non pensavo che questo forum fosse così vivo quindi un "grazie mille a tutti" in primis mi sembra d'obbligo.

detto questo, non avrei intenzione di farmelo programmare l'arduino, altrimenti l'avrei comprato già bello e pronto; volevo cimentarmi nella programmazione ed ho trovato pochissime difficoltà all'inizio con i vari tutoria che ho seguito e che mi hanno permesso di capire come funziona (più o meno).... i problemi sono iniziati quando, avendo ricevuto 3 programmi diversi già pronti da studiare per costruirmene uno mio, mi sono reso conto che entrano in gioco variabili, funzioni strane che tutt'ora non comprendo e che non so nemmeno dove andare a studiare, librerie modificate da utenti con, però, le medesime funzioni...
poi è arrivato il problema dell'IDE 1.0 che non riconosceva più alcuni comandi delle versioni precedenti...

comunque, prima posto il materiale che ho e le funzioni che vorrei avere, in fondo metto le domande (prima però posto il codice)...

dunque:

Arduino UNO

RTC ds1307 con batteria tampone e due resistenze esterne da 4,7kohm (lui vorrebbe le 2,2k ma mi han detto che fino a 10k vanno bene)

3 sonde di temperature dallas 1307

display 16x2 che vorrei cambiare con un 20x4

transistor ICL7667 per innalzare due canali PWM in uscita da 0-5v a 0-10v

FUNZIONI DA CODIFICARE:

alba tramonto: all'ora h che stabilisco io Arduino deve iniziare il fading sui due pin digitali per un tempo t che scelgo io (ipotizziamo dalle 9 alle 11 gradualmente arriva al 90% o, parlando di pwm, a 240 su 255 passi)

mantiene il valore raggiunto per tot ore (poniamo smiley-cool

alle 19 inizia con il fading inverso arrivando al valore 0 alle ore 21

per quanto riguarda i menu ed il display (vi ricordo che non metterò tasti o joystick) vorrei che sulla prima riga visualizzasse sempre l'ora e la data, sulle altre i valori di pwm (o in percentuale oppure direttamente il valore pwm 0-255) e le 3 temperature)

il programma che già ho

è molto utile; un po' difficile da capire (per me) ma sintetico, schematico e soprattutto funzionante (l'ho testato in modo provvisorio e funziona; a parte l'rtc che se sincronizzato a mano manda l'arduino in crash: dopo un secondo dall'accensione continua a riavviarsi... se invece non lo tocco funziona e tiene l'ora)

ovviamente devo modificarlo perché attualmente presenta tutta una serie di funzioni che a me non interessano...

se mi dite come postarlo nel modo corretto ve lo aggiungo al post così posso chiedervi delle cose in maniera più comprensibile...


domande

aspetto di pubblicare il codice perché così sarebbero un po campate in aria senza che voi lo vediate

per il momento grazie
luca






« Last Edit: January 21, 2012, 03:21:26 pm by luca56 » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 213
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

basta che metti il codice racchiuso tra i due tag  code e /code racchiusi tra due parentesi quadre
Logged

Monza
Offline Offline
Jr. Member
**
Karma: 0
Posts: 71
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

dunque, iniziamo con l'rtc:



questo il codice:

Code:

byte decToBcd(byte val)    // Convert normal decimal numbers to binary coded decimal
{
  return ( (val/10*16) + (val%10) );
}


byte bcdToDec(byte val)    // Convert binary coded decimal to normal decimal numbers
{
  return ( (val/16*10) + (val%16) );
}

// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour, // 1-23
byte dayOfWeek, // 1-7
byte dayOfMonth, // 1-28/29/30/31
byte month, // 1-12
byte year) // 0-99
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.send(decToBcd(second)); // 0 to bit 7 starts the clock
  Wire.send(decToBcd(minute));
  Wire.send(decToBcd(hour));   // If you want 12 hour am/pm you need to set
  // bit 6 (also need to change readDateDs1307)
  Wire.send(decToBcd(dayOfWeek));
  Wire.send(decToBcd(dayOfMonth));
  Wire.send(decToBcd(month));
  Wire.send(decToBcd(year));
  Wire.endTransmission();
}

// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  // Reset the register pointer
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  // A few of these need masks because certain bits are control bits
  *second = bcdToDec(Wire.receive() & 0x7f);
  *minute = bcdToDec(Wire.receive());
  *hour = bcdToDec(Wire.receive() & 0x3f); // Need to change this if 12 hour am/pm
  *dayOfWeek = bcdToDec(Wire.receive());
  *dayOfMonth = bcdToDec(Wire.receive());
  *month = bcdToDec(Wire.receive());
  *year = bcdToDec(Wire.receive());
}


mentre, in teoria, per rogolare l'ora la prima volta dovrei andare a modificare questo:

Code:
// Change these values to what you want to set your clock to.
  // You probably only want to set your clock once and then remove
  // the setDateDs1307 call.
  second = 00;
  minute = 44;
  hour = 8;
  dayOfWeek = 1;  // Sunday is 0
  dayOfMonth = 16;
  month = 8;
  year = 11;
  //setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);

ho provato a togliere le // dell'ultima stringa e ad inserire tutti i dati manualmente... fatto l'upload, tolto la stringa e rieseguito l'upload... ma niente

sbaglio qualcosa?
Logged

Pages: [1] 2 3 ... 8   Go Up
Jump to: