Cerca nel forum:
Acquaportal - Forum e Community

  





Benvenuti sul Forum di AcquaPortal, la più grande community italiana di acquariofilia!
Sul Forum di AcquaPortal puoi discutere con altri appassionati di acquariofilia, tenere un tuo Blog personale, inserire foto e video, chattare, ed aiutarci a creare un grande database con schede di pesci, invertebrati e prodotti di acquariofilia.


Per entrar a far parte della comunità occorre registrarsi.
Per farlo premi su

Registrazione


Al momento della registrazione ti verrà richiesto di accettare il Regolamento che ti consigliamo di leggere attentamente.
Ti consigliamo inoltre di leggere le FAQ per apprendere le funzionalità principali del forum.
Se invece sei un utente registrato e hai dimenticato i tuoi dati di accesso devi effettuare il Recupero dati.




Fai da te marino Per parlare delle tecniche di costruzione artigianale, per presentare le vostre realizzazioni, e per avere informazioni su dove reperire materiale ed attrezzatura risparmiando tempo e denaro.

 
Prev Messaggio precedente   Prossimo messaggio Next
Vecchio 12-11-2011, 10:18   #5
billykid591
Discus
 
L'avatar di billykid591
 
Registrato: Aug 2007
Città: POZZUOLO DEL FRIULI
Acquariofilo: Dolce/Marino
N° Acquari: 2
Età : 65
Messaggi: 2.613
Foto: 0 Albums: 1
Post "Grazie" / "Mi Piace"
Grazie (Dati): 0
Grazie (Ricev.): 2
Mi piace (Dati): 0
Mi piace (Ricev.): 9
Mentioned: 11 Post(s)
Feedback 0/0%

Annunci Mercatino: 0
Originariamente inviata da superpozzy Visualizza il messaggio
visto che qualcuno me lo chiede in mp e se ne parla giusto qua in giro adesso, vi posto il codice alba/tramonto e display.

chiaramente:
1) dovete adattare i collegamenti al VOSTRO display, perchè non tutti funzionano allo stesso modo. questo è per schermi hitachi HD44780 e compatibili... il mio è 20x4
ho lasciato tutta la parte decrittiva per mia comodità. voi potete anche cancellarvela... ;
2) dovete avere un RTC;
3) è fatta per mia esigenza, quindi ha tre stringhe per le mie 3 tipologie di led: "progfreddo" sono i 20.000°K, "progcaldo" i 10.000°K e "progblu" i royal blu.
4) la stringa alba/tramonto ha segnato sopra l'orario che va da 00 (mezzanotte) a 23 (secondo voi?) e sotto le 3 stringhe con la PERCENTUALE di luminosità di quei led che varia in 60 minuti.
perciò se dalle 9 alle 10 la stringa dei led varia da 50 a 100, significa che in un'ora raggiunge il 100%.
se volete farlo in più tempo basta che allungate i tempi (es. ore 9 50%, ore 10 75%, ore 11 100%).

tutto quello che so l'ho scritto.
ora arrangiatevi! -28

ps: chiaramente lo sketch non visualizza HELLO WORLD come scritto....



codice:
/*
  LiquidCrystal Library - Hello World
 
 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the 
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.
 
 This sketch prints "Hello World!" to the LCD
 and shows the time.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 
 This example code is in the public domain.

 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 */

// include the library code:
#include <LiquidCrystal.h>
#include <Time.h>  
#include <Wire.h>  
#include <DS1307RTC.h>  // a basic DS1307 library that returns time as a time_t

const int Button1 = 0;     
const int Button2 = 1;  
const int LedFreddo = 9, LedCaldo = 10, LedBlu = 11;

int posx=0,posy=1;

LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
String MenuArray[5][5]={{"Titolo 1"   ,"Titolo 2"   ,"Titolo 3"   ,"Titolo 4"   ,"Titolo 5"},
                        {"Submenu 1 1","Submenu 2 1","Submenu 3 1","Submenu 4 1","Submenu 5 1"},
                        {"Submenu 1 2","Submenu 2 2","Submenu 3 2","Submenu 4 2","Submenu 5 2"},
                        {"Submenu 1 3","Submenu 2 3","Submenu 3 3","Submenu 4 3","Submenu 5 3"},     
                        {"Submenu 1 4","Submenu 2 4","Submenu 3 4","Submenu 4 4","Submenu 5 4"} } ;

//                         00  01  02  03  04  05  06  07  08  09  10  11  12  13  14  15  16  17  18  19  20  21  22  23   
const int ProgFreddo[24]={  0,  0,  0,  0,  0,  1,  5, 30, 70,100,100,100,100,100,100,100,100,100, 40, 20, 10,  0,  0,  0};
const int ProgCaldo[24]= {  0,  0,  0,  0,  0,  0,  0,  3, 30, 70,100,100,100,100,100, 70,100,100,100, 70,  0,  0,  0,  0};
const int ProgBlu[24]=   {  4,  4,  4,  4,  4,  6, 15, 30, 50, 70,100,100, 80, 50, 50,100,100,100,100,100,100, 50,  4,  4};
                        
int OutFreddo, OutCaldo, OutBlu;

void setup() {
  Serial.begin(9600);
  pinMode(Button1, INPUT); 
  pinMode(Button2, INPUT);
  pinMode(LedFreddo, OUTPUT);
  pinMode(LedCaldo, OUTPUT);
  pinMode(LedBlu, OUTPUT);
  // set up the LCD's number of columns and rows: 
  lcd.begin(20, 4);
  // Print a message to the LCD.
  setSyncProvider(RTC.get);   // the function to get the time from the RTC
}

void loop() {
  int i;
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):

  CalcolaLed();
  VisualizzaOra();
  delay(1000);
  // print the number of seconds since reset:
  lcd.clear();
}

void DisplayMenu() {

  if (!digitalRead(Button1)==HIGH) {
    posx++;
    if (posx>4) posx=0;
  }
  if (!digitalRead(Button2)==HIGH) {
    posy++;
    if (posy>4) posy=1;
  }

  lcd.setCursor(4,2) ;
  lcd.print(MenuArray[0][posx]);
  lcd.setCursor(4,3) ;
  lcd.print(MenuArray[posy][posx]);  
}

void VisualizzaOra(){
  
  lcd.setCursor(12,0);
  if (hour()<10) lcd.print("0");
  lcd.print(hour());
  lcd.print(":");
  if (minute()<10) lcd.print("0");
  lcd.print(minute());
  lcd.print(":");
  if (second()<10) lcd.print("0");
  lcd.print(second());
}

void CalcolaLed() {
  int OraAttuale, OraFutura, Minuto, Differenza;
  float Incremento, Attuale, T1;
  OraAttuale= hour()%24;
  OraFutura = (OraAttuale+1)%24;
  Minuto=minute();
//---------------------------------------------------------------------------  
  Differenza=ProgFreddo[OraFutura]-ProgFreddo[OraAttuale];
  Incremento=Differenza/60.0;
  Attuale=Incremento*Minuto+ProgFreddo[OraAttuale];
  OutFreddo= Attuale * 255 / 100 ;
  lcd.setCursor(0,0);
  lcd.print("F:");
  lcd.print((int)Attuale);
//---------------------------------------------------------------------------  
  Differenza=ProgCaldo[OraFutura]-ProgCaldo[OraAttuale];
  Incremento=Differenza/60.0;
  Attuale=Incremento*Minuto+ProgCaldo[OraAttuale];
  OutCaldo= Attuale * 255 / 100 ;
  lcd.setCursor(0,1);
  lcd.print("C:");
  lcd.print((int)Attuale);
//---------------------------------------------------------------------------  
  Differenza=ProgBlu[OraFutura]-ProgBlu[OraAttuale];
  Incremento=Differenza/60.0;
  Attuale=Incremento*Minuto+ProgBlu[OraAttuale];
  OutBlu= Attuale * 255 / 100 ;
  lcd.setCursor(0,2);
  lcd.print("B:");
  lcd.print((int)Attuale);
//---------------------------------------------------------------------------    
  analogWrite(LedFreddo, OutFreddo); 
  analogWrite(LedCaldo, OutCaldo); 
  analogWrite(LedBlu, OutBlu); 

  T1=analogRead(A0)*0.49;
  lcd.setCursor(0,3);
  lcd.print("T:");
  lcd.print((int)T1); 
}
pps: io ho usato mosfet per il pwm.

ppps: qua non me lo incolonna giusto, penso che nel programma di arduino lo faccia...

pppps: prima di dire che non funziona, controllate BENE i vostri collegamenti... -28
Un lavoro interessante e codice snello però ho due critiche (senza offesa si intende) da farti la prima riguarda l'uso del delay (di 1 secondo) nel Loop...così facendo blocchi il programma e l'uso dei tasti menu viene ritardato.......secondo non mi piace l'uso degli array predefiniti per l'alba tramonto..non puoi da menu scegliere i tempi di accensione spegnimento e..con passi predefiniti ho l'impressione che la dimmerazione venga scattosa....potevi sfruttare di più l'RTC........appena posso posterò il codice che sto usando io per la prossima plafo che sto relaizzando (anche se è per il dolce).....è preso in parte da altre realizzazioni (vedi typhoon)...e modificato....di contro rispetto al tuo è decisamente molto più lungo anche se più completo.
billykid591 non è in linea   Rispondi quotando
 

Tag
alba or tramonto , arduino , codice , display , eccolo
Opzioni
Visualizzazione

Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smile sono attive
Il codice IMG è attivo
il codice HTML è disattivato

Vai a



















Tutti gli orari sono GMT +2. Attualmente sono le 19:24. Powered by vBulletin versione 3.8.9
Copyright ©: 2000 - 2025, Jelsoft Enterprises Ltd.
Traduzione italiana Team: AcquaPortal Feedback Buttons provided by Advanced Post Thanks / Like v3.5.0 (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
User Alert System provided by Advanced User Tagging v3.2.5 Patch Level 2 (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Copyright Zero Pixel Srl
Page generated in 0,43470 seconds with 15 queries