Stazione Meteo Completa! (FAI DA TE)

Stazione Meteo Completa! (FAI DA TE)
Articolo
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Fili ha scritto: [Visualizza Messaggio]
As_Needed ha scritto: [Visualizza Messaggio]
Ecco un paio di immagini, il rain rate forse non lo metterò, è un po' complicato aggiungerlo, vi farò sapere


invece tutto il resto è 'na cazzata   sono sicuro che troverai il sistema di mettere anche il RR  


     Bhe diciamo che questo è più complicato del resto    Forse però riuscirò ad aggiungerlo, però non assicuro niente stavolta    Diciamo che adesso la parte senza mettere online praticamente è fatta  



 
 As_Needed [ Sab 05 Dic, 2015 12:07 ]


Stazione Meteo Completa! (FAI DA TE)
Commenti
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Fili ha scritto: [Visualizza Messaggio]
As_Needed ha scritto: [Visualizza Messaggio]
Ecco un paio di immagini, il rain rate forse non lo metterò, è un po' complicato aggiungerlo, vi farò sapere


invece tutto il resto è 'na cazzata   sono sicuro che troverai il sistema di mettere anche il RR  


Credo proprio che arrivato a 'sto punto, metterlo sia una quisquilia, una bazzecola, una pinzillacchera... come diceva il grande Totò...  



 
 Gab78 [ Sab 05 Dic, 2015 14:44 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Gab78 ha scritto: [Visualizza Messaggio]
Fili ha scritto: [Visualizza Messaggio]
As_Needed ha scritto: [Visualizza Messaggio]
Ecco un paio di immagini, il rain rate forse non lo metterò, è un po' complicato aggiungerlo, vi farò sapere


invece tutto il resto è 'na cazzata   sono sicuro che troverai il sistema di mettere anche il RR  


Credo proprio che arrivato a 'sto punto, metterlo sia una quisquilia, una bazzecola, una pinzillacchera... come diceva il grande Totò...  


bhe quel che conta che o RR o non RR offline la stazione é pronta



 
 As_Needed [ Sab 05 Dic, 2015 16:17 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Allora intanto pubblico il pcb finale quello che sarà il reale circuito stampato e stavolta è questo non si cambia
Qualcuno forse si chiederà come mai mancano due fili nel top copper. Bhe la risposta è che non userò più arduino uno ma arduino mega, per il fatto che siccome la stazione è diventata abbastanza professionale non mi basta la memoria di arduino, allora ci vuole il mega. Siccome i pin del bus SPI che mi servono non si trovano a 11 e 13 delle uscite digitali della mega ma a 51 e 52, praticamente faccio partire due fili dai pad viola sda e scl, quelli vicini al filo rosso, che corrispondono al mosi e sclk del display in questo caso, che vanno alle uscite 51 e 52,  faccio partire due fili esterni praticamente che vanno a 51 e 52 Stessa cosa il bus ic2, ovvero i pad A4 e A5 non sono nel mega ad A4 e A5, ma sono a D20 e D21, per questo faccio partire altri due fili da quei pad fino a quelle uscite. Ovviamente poi i connettori sotto sui pin A4 e A5 non ce li metto. Quando avrò tutto pronto, metterò le foto così si capisce meglio. Praticamente sarà arduino mega, sopra arduino mega ethernet shield e sopra ancora, circuito stampato
immagine_1449757522_987823

Questa è la lista dei componenti usati nella basetta non all'esterno:
immagine_1449758354_809150
E' scritto arduino uno ma solo per i pad usati che sono gli stessi.

Questa è la carta lucido definitiva stavolta con cui formerò le piste in rame del circuito stampato:
img_0552



 
Ultima modifica di As_Needed il Gio 10 Dic, 2015 15:42, modificato 4 volte in totale 
 As_Needed [ Gio 10 Dic, 2015 15:25 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
As_Needed ha scritto: [Visualizza Messaggio]
Allora intanto pubblico il pcb finale quello che sarà il reale circuito stampato e stavolta è questo non si cambia
Qualcuno forse si chiederà come mai mancano due fili nel top copper. Bhe la risposta è che non userò più arduino uno ma arduino mega, per il fatto che siccome la stazione è diventata abbastanza professionale non mi basta la memoria di arduino, allora ci vuole il mega. Siccome i pin del bus SPI che mi servono non si trovano a 11 e 13 delle uscite digitali della mega ma a 51 e 52, praticamente faccio partire due fili dai pad viola sda e scl, quelli vicini al filo rosso, che corrispondono al mosi e sclk del display in questo caso, che vanno alle uscite 51 e 52,  faccio partire due fili esterni praticamente che vanno a 51 e 52 Stessa cosa il bus ic2, ovvero i pad A4 e A5 non sono nel mega ad A4 e A5, ma sono a D20 e D21, per questo faccio partire altri due fili da quei pad fino a quelle uscite. Ovviamente poi i connettori sotto sui pin A4 e A5 non ce li metto. Quando avrò tutto pronto, metterò le foto così si capisce meglio. Praticamente sarà arduino mega, sopra arduino mega ethernet shield e sopra ancora, circuito stampato


Ho capito più cose in un comizio di Kim Jong Un che in quello che hai scritto però deve essere bello! Complimenti!  



 
Ultima modifica di Fili il Gio 10 Dic, 2015 19:45, modificato 1 volta in totale 
 Fili [ Gio 10 Dic, 2015 19:45 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Fili ha scritto: [Visualizza Messaggio]

Ho capito più cose in un comizio di Kim Jong Un che in quello che hai scritto però deve essere bello! Complimenti!  


Ho provato a spiegare il più chiaro possibile     Intanto quando metto le foto vedrete con gli occhi il lavoro che è la meglio cosa, è più facile di quello che sembra    Quando avrò finalmente sto circuito stampato definitivo non con tutti quei fili per il mezzo che si vedono nelle foto addietro con la bread board
 



 
 As_Needed [ Gio 10 Dic, 2015 20:02 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
As_Needed ha scritto: [Visualizza Messaggio]
Fili ha scritto: [Visualizza Messaggio]

Ho capito più cose in un comizio di Kim Jong Un che in quello che hai scritto però deve essere bello! Complimenti!  


Ho provato a spiegare il più chiaro possibile     Intanto quando metto le foto vedrete con gli occhi il lavoro che è la meglio cosa, è più facile di quello che sembra    Quando avrò finalmente sto circuito stampato definitivo non con tutti quei fili per il mezzo che si vedono nelle foto addietro con la bread board
 


Beh, come battuta non c'è male...  

Grandioso!  



 
 Gab78 [ Gio 10 Dic, 2015 22:03 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Grazie mille Gabrié!!!! E grazie a tutti!
Non vedo l ora di compleatare tutto!




 
 As_Needed [ Gio 10 Dic, 2015 22:29 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Prossimo passo, modulo a radiofrequenza per i sensori!



 
 andrea75 [ Ven 11 Dic, 2015 09:28 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
E io che c'ho messo du anni a mette online una webcam!        

Complimenti Eugenio, davvero complimenti      



 
 Poranese457 [ Ven 11 Dic, 2015 09:36 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
andrea75 ha scritto: [Visualizza Messaggio]
Prossimo passo, modulo a radiofrequenza per i sensori!


Così anche se succede il terremoto e va via corrente e internet continuo a trasmettere        Grazie ancora a tutti! Ai prossimi aggiornamenti!
 



 
 As_Needed [ Ven 11 Dic, 2015 19:53 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Qua piove forte e siamo già a 65 mm    Sono riuscito a fare sto benedetto RR, non mi pare vero    Ecco qua una foto!
img_0560

Qua intanto il codice completo di tutta la stazione meteo offline, che comprende tutti quei valori sul display
Codice: [Download] [Nascondi]
  1. #include <EEPROM.h> 
  2. #include <DS3232RTC.h>    
  3. #include <Time.h> 
  4. #include <Wire.h> 
  5. #include <BMP180.h> 
  6. #include <SPI.h> 
  7. #include <Adafruit_GFX.h> 
  8. #define sclk 13 
  9. #define mosi 11 
  10. #define cs   A3 
  11. #define dc   A1 
  12. #define rst  A2  
  13. #include <Adafruit_GFX.h>    // Core graphics library 
  14. #include <Adafruit_ST7735.h> // Hardware-specific library 
  15. #include <SPI.h> 
  16. Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst); 
  17. #include "DHT.h" 
  18. #include <OneWire.h> 
  19. #include <DallasTemperature.h> 
  20. // Data wire is plugged into pin 2 on the Arduino 
  21. #define ONE_WIRE_BUS 8 
  22. // Setup a oneWire instance to communicate with any OneWire devices  
  23. // (not just Maxim/Dallas temperature ICs) 
  24. OneWire oneWire(ONE_WIRE_BUS); 
  25. // Pass our oneWire reference to Dallas Temperature. 
  26. DallasTemperature sensors(&oneWire); 
  27. DHT dht(5,DHT22); //Definisco il pin al quale è collegato il sensore e il tipo 
  28. const int pinLed_blink = 6; // led verde che lampeggia 
  29. const int pinLed_inter = 7; 
  30. const float mmGoccia = 0.518; 
  31. const int pinInterrupt = 3; 
  32. volatile unsigned int gocce = 0; 
  33. volatile float mmPioggia = 0.0; // conteggio millimetri di pioggia 
  34. volatile boolean statoLed = false; 
  35. unsigned long time; 
  36. unsigned long PluvioStep = 0;  
  37. unsigned long PluvioOldStep = 0; 
  38. float dewPoint; 
  39. float windchill; 
  40. float temperaturaf; 
  41. float heatindexf; 
  42. float heatindexc; 
  43. float pressionelivellodelmarehPa; 
  44. float pressionelivellodelmare; 
  45. float rafficamax=0; 
  46. byte giornoSalvato; 
  47. float maxeeprom=0.0; 
  48. float mineeprom=100.0; 
  49. float rainrate=0; 
  50. int eeAddress1 = -1; 
  51. int eeAddress2 = 4; 
  52. int eeAddress3 = -8; 
  53. int eeAddress4 = -4; 
  54. int dataPin = 2; 
  55. int bitLength = -1; 
  56. int data[45]; 
  57. int gooddata = 1; 
  58. int timeout; 
  59. int loops = 0; 
  60. int spd[8]; 
  61. int i = 0; 
  62. int j = 0; 
  63. char windDirection[16][4] = { 
  64.   "N","NNE","NE", "ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW"}; 
  65. // Store an instance of the BMP180 sensor. 
  66. BMP180 barometer; 
  67. // Store the current sea level pressure at your location in Pascals. 
  68. float seaLevelPressure = 101325;  
  69.  
  70. void setup() { 
  71.   Serial.begin(9600); 
  72.   tft.initR(INITR_BLACKTAB); 
  73.   tft.fillScreen(ST7735_BLUE); 
  74.   time=millis(); 
  75.   tft.setCursor (0,20); 
  76.   tft.setTextSize(2); 
  77.   tft.setTextColor (ST7735_GREEN); 
  78.   tft.print (" STAZIONE"); 
  79. tft.setCursor (10,40); 
  80.   tft.print ("  METEO:"); 
  81.   delay (2000); 
  82.   tft.setTextColor (ST7735_YELLOW); 
  83.   tft.setCursor (4,80); 
  84.   tft.print ("SITUAZIONE  ATTUALE"); 
  85.     pinMode(pinLed_blink, OUTPUT); 
  86.   pinMode(pinLed_inter, OUTPUT); 
  87.   attachInterrupt(1, ContaGocce, FALLING); // modo da HIGH a LOW 
  88. setSyncProvider(RTC.get); 
  89. //setTime(16,05,30,25,11,2015);  
  90.   giornoSalvato = day(); 
  91.    EEPROM.get (eeAddress1,maxeeprom); 
  92.    EEPROM.get (eeAddress2,mineeprom); 
  93.   EEPROM.get (eeAddress3,rafficamax); 
  94.     EEPROM.get (eeAddress4,mmPioggia); 
  95.   //Serial.println("DHT test"); 
  96.   dht.begin(); 
  97.    // Start up the library 
  98.   sensors.begin(); 
  99.   //Serial.print("\n\nInitializing...\n"); 
  100.   //  Serial.print("Data Pin: "); 
  101.   //  Serial.println(digitalRead(dataPin)); 
  102.     pinMode(dataPin, INPUT); 
  103.      // We start the I2C on the Arduino for communication with the BMP180 sensor. 
  104. Wire.begin(); 
  105. // We create an instance of our BMP180 sensor. 
  106. barometer = BMP180(); 
  107. // We check to see if we can connect to the sensor. 
  108. if(barometer.EnsureConnected()) 
  109. //Serial.println("Connected to BMP180."); // Output we are connected to the computer. 
  110. // When we have connected, we reset the device to ensure a clean start. 
  111. barometer.SoftReset(); 
  112. // Now we initialize the sensor and pull the calibration data. 
  113. barometer.Initialize(); 
  114. //else 
  115. //{  
  116. // Serial.println("No sensor found."); 
  117. // } 
  118.  
  119.  
  120.  
  121. //void delay2(unsigned long ms){ 
  122. //    unsigned long start = micros(); 
  123. //    while (micros() - start <= ms); 
  124. //} 
  125.  
  126. void PluvioDataEngine() { 
  127. if (((PluvioStep - PluvioOldStep) != 0) && (gocce >= 2)) { 
  128.     if ((time - PluvioStep) > (PluvioStep - PluvioOldStep)) { 
  129.       rainrate = 3600 / (((time - PluvioStep) / 1000)) * mmGoccia; 
  130.       if (rainrate < 1) { 
  131.         gocce = 0; 
  132.         rainrate = 0; 
  133.       } 
  134.     } else { 
  135.       rainrate = 3600 / (((PluvioStep - PluvioOldStep) / 1000)) * mmGoccia; 
  136.     } 
  137.   } else { 
  138.     rainrate = 0.0; 
  139.   } 
  140. void loop() { 
  141.   sensors.requestTemperatures(); 
  142.    digitalWrite(pinLed_blink, HIGH);  
  143.   delay(100); 
  144.   digitalWrite(pinLed_blink, LOW); 
  145.   delay(100); 
  146.    float h = dht.readHumidity(); // Leggo il valore di umidità 
  147.   dewPoint = (pow (h/100,0.125)*(112+(0.9*sensors.getTempCByIndex(0)))+0.1*sensors.getTempCByIndex(0)-112); 
  148.    pressionelivellodelmare=barometer.GetPressure()+5240; 
  149.   pressionelivellodelmarehPa=pressionelivellodelmare/100; 
  150.   //float t = dht.readTemperature(); // Leggo il valore di temperatura 
  151.   //if (isnan(t) || isnan(h)) // Se almeno uno dei due valori è NaN (Not a Number) 
  152.    
  153.     //Serial.println("Impossibile leggere il sensore!"); 
  154.    
  155.   //else //altrimenti 
  156.   if(barometer.IsConnected) 
  157. // Retrive the current pressure in Pascals. 
  158. long currentPressureP = barometer.GetPressure(); 
  159. float currentPressuremb = currentPressureP/100.0; 
  160. float currentPressureinHg = currentPressuremb*0.02953; 
  161.  
  162.  
  163. // Retrive the current altitude (in meters). Current Sea Level Pressure is required for this. 
  164. float altitudem = barometer.GetAltitude(seaLevelPressure); 
  165. float altitudeft = altitudem*3.2808; 
  166.  
  167.  
  168. // Retrive the current temperature in degrees celcius. 
  169. float currentTemperatureC = barometer.GetTemperature(); 
  170. float currentTemperatureF = (9.0/5.0)*currentTemperatureC+32.0; 
  171.    // Serial.print("Temperatura "); 
  172.    // Serial.println(sensors.getTempCByIndex(0)); 
  173.    // Serial.print("Umidita' "); 
  174.    // Serial.print(h); 
  175.    // Serial.print(" %\t"); 
  176.  
  177. //   Serial.println ("Dew Point"); 
  178. //Serial.print (dewPoint); 
  179. //Serial.println ("C"); 
  180. //Serial.println ("Wind Chill"); 
  181. //Serial.print  (windchillc); 
  182. //Serial.print ("C"); 
  183.  
  184.  
  185. time = millis(); 
  186. PluvioDataEngine(); 
  187.  
  188.    temperaturaf=sensors.getTempCByIndex(0)*1.8+32; 
  189.  
  190.     
  191.   if ((sensors.getTempCByIndex(0)>=26.7)&&(h>=40)) 
  192. {  
  193.   heatindexf=(-42.379+2.04901523*temperaturaf+10.14333127*h-0.22475541*temperaturaf*h-0.00683783*pow(temperaturaf,2)-0.05481717*pow(h,2)+0.00122874*pow(temperaturaf,2)*h+0.00085282*temperaturaf*pow(h,2)-0.00000199*pow(temperaturaf,2)*pow(h,2)); 
  194. heatindexc= (heatindexf-32)/1.8; 
  195.    } 
  196.    else 
  197.    {  
  198.     heatindexc=sensors.getTempCByIndex(0); 
  199.    } 
  200. //delay(1000); 
  201.      
  202.     //Serial.print("Temperatura: "); 
  203.     //Serial.print(t); 
  204.     //Serial.println(" *C"); 
  205.     // non è necessario mettere un delay() perchè ci vogliono due secondi per leggere i valori, quindi il serial monitor riceverà dati ogni 2 secondi. 
  206.     
  207. // Serial.println("Start"); 
  208.   gooddata = 1; 
  209.   collectData(); 
  210.   if (gooddata == 1) { 
  211.     rawdump(); 
  212.     outputResults(); 
  213.     TheData(); 
  214.   } 
  215.   //else //{ 
  216.    // Serial.println ("READ ERROR"); 
  217.   //} 
  218.   //Serial.println(++loops); 
  219. // Serial.println(); 
  220. // delay(1500); 
  221.  
  222. int collectData(void) { 
  223.    if (bitLength <0){ 
  224.      bitLength = 1220;//getbitlenght2(); 
  225.  
  226.   } 
  227. /*/ 
  228. pinMode(dataPin, OUTPUT); 
  229.  
  230. digitalWrite(dataPin, HIGH); 
  231. delay(100); 
  232. digitalWrite(dataPin, LOW ); 
  233. delay(500); 
  234. pinMode(dataPin, INPUT); 
  235. /*/ 
  236.  
  237. while(digitalRead(dataPin) == LOW){ 
  238. }   
  239. //wait slave start signal 
  240. while(digitalRead(dataPin) == HIGH){ 
  241. while(digitalRead(dataPin) == LOW){ 
  242.  
  243.  
  244.  
  245.  
  246.   for (int i=0 ; i<42 ; i++) { 
  247.     data[i] = (digitalRead(dataPin) == LOW)? 0:1; // read and save either a 0 or 1 
  248.     delayMicroseconds(bitLength); 
  249.   } 
  250.  
  251. int TheData() { 
  252. // Serial.println("TheData"); 
  253.   int i, idx = 0, idy = 0; 
  254. // for (i=8; i>4; i--) {  dato originale 
  255.     for (i=6; i>2; i--) { // dato modificato 
  256.     idx = idx *2 + data[i]; 
  257.   } 
  258.  
  259.   //  Serial.print("idx: "); 
  260.   //  Serial.println(idx, DEC); 
  261. // Serial.print("Wind: "); 
  262. // Serial.println(windDirection[idx] ); 
  263.  
  264. // for (i=17; i>8; i--) {  dato originale per velocità 
  265.     for (i=15; i>6; i--) {   // dato modificato 
  266.     idy = idy * 2 + data[i]; 
  267.   } 
  268.  
  269. // Serial.print("Speed: "); 
  270. // Serial.print(idy, DEC); 
  271.   //Serial.println (" m/s read"); 
  272.  
  273.   float idz = idy/10.0; 
  274.   //Serial.print("Speed: "); 
  275. // Serial.print(idz); 
  276. // Serial.println (" m/s real"); 
  277.  
  278.   float KMH = idz * 3.6; 
  279.   //Serial.print("Speed: "); 
  280.   //Serial.print(KMH); 
  281.   //Serial.println (" kmh"); 
  282.  
  283.   float MPH = KMH * 0.621371192; 
  284. // Serial.print("Speed: "); 
  285.   //Serial.print(MPH); 
  286. // Serial.println (" mph"); 
  287.  
  288.  
  289. windchill=(13.12+0.6215*sensors.getTempCByIndex(0))-(11.37*pow(KMH,0.16))+(0.3965*sensors.getTempCByIndex(0)*pow(KMH,0.16)); 
  290. if ((windchill<sensors.getTempCByIndex(0))&&(KMH>4.6)) 
  291. windchill=(13.12+0.6215*sensors.getTempCByIndex(0))-(11.37*pow(KMH,0.16))+(0.3965*sensors.getTempCByIndex(0)*pow(KMH,0.16)); 
  292.   } 
  293.   else 
  294.   { 
  295.     windchill=sensors.getTempCByIndex(0); 
  296.   } 
  297. if ( giornoSalvato != day() )  
  298.   { 
  299.     giornoSalvato=day(); 
  300.    rafficamax=KMH; 
  301.    maxeeprom=sensors.getTempCByIndex(0); 
  302.     mineeprom=sensors.getTempCByIndex(0); 
  303.     mmPioggia=0; 
  304.   EEPROM.put (eeAddress1, maxeeprom); 
  305.   EEPROM.put (eeAddress2, mineeprom); 
  306.    EEPROM.put (eeAddress3, rafficamax); 
  307.       EEPROM.put (eeAddress4, mmPioggia); 
  308.  
  309.   } 
  310.     if (KMH>rafficamax) 
  311.   { 
  312.     rafficamax=KMH; 
  313.     EEPROM.put (eeAddress3, rafficamax); 
  314.     } 
  315.  
  316. tft.fillScreen(ST7735_BLACK); 
  317.   tft.setTextColor (ST7735_GREEN); 
  318.    tft.setCursor(0, 0); 
  319.   tft.setTextSize(1); 
  320.   tft.println("Temp.OUTSIDE"); 
  321.   if (sensors.getTempCByIndex(0)<3) 
  322.   {  
  323.   tft.setTextColor (ST7735_BLUE); 
  324.   tft.setCursor(80, 0); 
  325.   tft.setTextSize(1); 
  326.   tft.print(sensors.getTempCByIndex(0)); 
  327.   tft.print ( (char)248); 
  328.   tft.println("C"); 
  329. //delay(5000); 
  330.    } 
  331.    if ((sensors.getTempCByIndex(0)>=3)&&(sensors.getTempCByIndex(0)<=15)) 
  332.   {  
  333.   tft.setTextColor (ST7735_GREEN); 
  334.   tft.setCursor(80, 0); 
  335.   tft.setTextSize(1); 
  336.   tft.print(sensors.getTempCByIndex(0)); 
  337.   tft.print ( (char)248); 
  338.   tft.println("C"); 
  339.   } 
  340.     if ((sensors.getTempCByIndex(0)>15)&&(sensors.getTempCByIndex(0)<30)) 
  341.   {  
  342.   tft.setTextColor (ST7735_YELLOW); 
  343.   tft.setCursor(80, 0); 
  344.   tft.setTextSize(1); 
  345.   tft.print(sensors.getTempCByIndex(0)); 
  346.   tft.print ( (char)248); 
  347.   tft.println("C"); 
  348.   } 
  349.     if ((sensors.getTempCByIndex(0)>=30)) 
  350.   {  
  351.   tft.setTextColor (ST7735_RED); 
  352.   tft.setCursor(80, 0); 
  353.   tft.setTextSize(1); 
  354.   tft.print(sensors.getTempCByIndex(0)); 
  355.   tft.print ( (char)248); 
  356.   tft.println("C"); 
  357.   } 
  358.    tft.setTextColor (ST7735_WHITE); 
  359.   tft.setCursor (0,10); 
  360.   tft.print ("Umidita'"); 
  361.   tft.setCursor (80,10); 
  362.   tft.print (dht.readHumidity()); 
  363.   tft.print (" %"); 
  364.   tft.setCursor (0,20); 
  365. tft.print ("Dew Point"); 
  366.   tft.setCursor (80,20); 
  367.    tft.print (dewPoint); 
  368.   tft.print ((char)248); 
  369.   tft.print ("C"); 
  370.    tft.setTextColor (ST7735_GREEN); 
  371.    tft.setCursor (0,30); 
  372.    tft.print ("Pioggia"); 
  373.    tft.setTextColor (ST7735_BLUE); 
  374.   tft.setCursor (80,30); 
  375.    tft.print (mmPioggia); 
  376.    tft.print ("mm");  
  377.     tft.setTextColor (ST7735_WHITE); 
  378.     tft.setCursor (0,40); 
  379.    tft.setTextColor (ST7735_GREEN); 
  380.    tft.print ("Rain Rate"); 
  381.    tft.setCursor (62,40); 
  382.    tft.setTextColor (ST7735_BLUE); 
  383.    tft.print (rainrate); 
  384.    tft.setCursor (100,40); 
  385.    tft.print("mm/h"); 
  386.    tft.setTextColor (ST7735_WHITE); 
  387.    tft.setCursor (0,50); 
  388.   tft.println ("Vento"); 
  389.   tft.setCursor (55,50); 
  390.   tft.print (KMH); 
  391. tft.print ("Km/h"); 
  392. tft.setCursor (110,50); 
  393. tft.print (windDirection[idx]); 
  394. tft.setCursor (0,60); 
  395. tft.print ("Pressione"); 
  396. tft.setCursor (65,60); 
  397. tft.print (pressionelivellodelmarehPa); 
  398. tft.setCursor (110,60); 
  399. tft.print ("hPa"); 
  400. tft.setTextColor (ST7735_BLUE); 
  401. tft.setCursor (0,70); 
  402. tft.print ("Wind Chill"); 
  403. tft.setCursor (80,70); 
  404. tft.print (windchill); 
  405. tft.print ((char)248); 
  406. tft.print ("C"); 
  407. tft.setTextColor (ST7735_RED); 
  408. tft.setCursor (0,80); 
  409. tft.println ("Heat Index"); 
  410. tft.setCursor (80,80); 
  411. tft.print (heatindexc); 
  412. tft.print ((char)248); 
  413. tft.print ("C"); 
  414. tft.setTextColor (ST7735_YELLOW); 
  415. tft.setCursor(0, 90); 
  416. tft.println("Temp.INSIDE"); 
  417. tft.setCursor(80, 90); 
  418. tft.print(barometer.GetTemperature()); 
  419. tft.print((char)248); 
  420. tft.println("C"); 
  421. tft.drawLine (0,100,tft.width()-0,100,ST7735_WHITE); 
  422. tft.setCursor(0,103); 
  423. tft.setTextColor (ST7735_RED); 
  424. tft.print("Temp.MAX"); 
  425. tft.setCursor(80,103); 
  426. tft.print(maxeeprom); 
  427. tft.print((char)248); 
  428. tft.println("C"); 
  429. tft.setTextColor (ST7735_BLUE); 
  430. tft.setCursor(0,113); 
  431. tft.print("Temp.MIN"); 
  432. tft.setCursor(80,113); 
  433. tft.print(mineeprom); 
  434. tft.print((char)248); 
  435. tft.println("C"); 
  436. tft.setTextColor (ST7735_WHITE); 
  437. tft.setCursor (0,123); 
  438. tft.print ("RafficaMAX"); 
  439. tft.setCursor (65,123); 
  440. tft.print (rafficamax); 
  441. tft.print ("Km/h"); 
  442. tft.setTextColor (ST7735_YELLOW); 
  443. tft.setTextSize (2); 
  444. tft.setCursor (0,135); 
  445. tft.print(hour()); 
  446. tft.print(":"); 
  447.   tft.print(minute()); 
  448.   tft.print(":"); 
  449. tft.print(second()); 
  450. tft.println(""); 
  451. tft.setTextSize (1); 
  452. tft.print(day()); 
  453. tft.print("/"); 
  454.   tft.print(month()); 
  455. tft.print("/"); 
  456.   tft.print(year()); 
  457. tft.print(""); 
  458.    
  459. void rawdump() { 
  460. // Serial.print("Raw: "); 
  461.   for (int i=0 ; i<41 ; i++) { 
  462.   //  Serial.print (data[i]); 
  463.     if (i == 4) { 
  464.    //   Serial.print (" "); 
  465.     } 
  466.     if (i == 8) { 
  467.    //   Serial.print (" "); 
  468.     } 
  469.     if (i == 17) { 
  470.    //   Serial.print (" "); 
  471.     } 
  472.     if (i == 20) { 
  473.     //  Serial.print (" "); 
  474.     } 
  475.     if (i == 24) { 
  476.     //  Serial.print (" "); 
  477.     } 
  478.     if (i == 28) { 
  479.     ////  Serial.print (" "); 
  480.     } 
  481.     if (i == 37) { 
  482.     //  Serial.print (" "); 
  483.     } 
  484.   } 
  485.  
  486.  
  487.   } 
  488. void ContaGocce() 
  489.    gocce++; // incrementa numero basculate 
  490.    if (gocce>1) 
  491. {  
  492.   mmPioggia =mmPioggia + 0.518; 
  493. else 
  494. mmPioggia = mmPioggia + mmGoccia; // sommatoria millimetri pioggia 
  495. PluvioOldStep = PluvioStep; 
  496. PluvioStep = time; 
  497. statoLed = !statoLed; 
  498. digitalWrite(pinLed_inter, statoLed ? HIGH : LOW); 
  499. EEPROM.put (eeAddress4, mmPioggia); 
  500.  
  501. void outputResults() { 
  502.   //Serial.println(); 
  503.  
  504.   int idx =0; 
  505.   for (int i=8 ; i> 4 ; i--)  
  506.   //for (int i=6 ; i> 2 ; i--) // dato modificato 
  507.   { 
  508.     idx = idx *2 + data[i];  // data[i] == 0/1.. see prev post.  // 
  509.   } 
  510.  
  511.   //Serial.print("idx: "); 
  512.   //Serial.println(idx, DEC); 
  513.   //Serial.print("Wind: "); 
  514.   //Serial.println(windDirection[idx] ); 
  515.   //  Serial.println(); 
  516.  
  517.   //Serial.print("Swapped: "); 
  518.  
  519.   //HEAD 
  520.   for (int i =0 ; i< 5 ; i++) 
  521.   { 
  522.     //Serial.print(data[i]);  // it contains 0 or 1 
  523.   } 
  524.  
  525. // Serial.print(" "); 
  526.  
  527.   //WINDDIR 
  528.   for (int i =8 ; i> 4 ; i--) 
  529.   { 
  530.    // Serial.print(data[i]); 
  531.   } 
  532. // Serial.print(" "); 
  533.  
  534.   //WIND SPEED 
  535.   for (int i =17 ; i> 8 ; i--) 
  536.   { 
  537.   //  Serial.print(data[i]); 
  538.   } 
  539.  
  540.   //Serial.print(" "); 
  541.  
  542.   //WIND SPEED+3 
  543.   for (int i =20 ; i> 17 ; i--) 
  544.   { 
  545.   //  Serial.print(data[i]); 
  546.   } 
  547.  
  548.   //Serial.print(" "); 
  549.  
  550.   /* 
  551.   // Checksum 
  552.    for (iCounter=0;iCounter<4;iCounter++) 
  553.    { 
  554.    checksum |= (TX23_DATA_GET_BIT << iCounter); 
  555.    delayTargetuSec += bitLength; 
  556.    TX23_DoDelay; 
  557.    } 
  558.  
  559.    //Calculate Checksum 
  560.    unsigned int checksumCalc = 0; 
  561.    checksumCalc += (winddir & 15); 
  562.    checksumCalc += ((windspeed >> 8) & 15); 
  563.    checksumCalc += ((windspeed >> 4) & 15); 
  564.    checksumCalc += (windspeed & 15); 
  565.    */ 
  566.  
  567.   // Checksum 
  568.   for (int i =24 ; i> 20 ; i--) 
  569.   { 
  570.   //  Serial.print(data[i]); 
  571.   } 
  572.  
  573.   //Serial.print(" "); 
  574.  
  575.   //WIND DIR NEGATEIVE 
  576.   for (int i =28 ; i> 24 ; i--) 
  577.   { 
  578.    // Serial.print(data[i]); 
  579.   } 
  580.  
  581.   //Serial.print(" "); 
  582.  
  583.   //WIND SPEED NEGATED 
  584.   for (int i =37 ; i> 28 ; i--){ 
  585.    // Serial.print(data[i]); 
  586.   } 
  587.  
  588. //  Serial.print(" "); 
  589.  
  590.   //WIND SPEED NEGATED +3 
  591.   for (int i =40 ; i> 37 ; i--){ 
  592.    // Serial.print(data[i]); 
  593.   } 
  594. // Serial.println(); 
  595.   //  Serial.println(); 
  596.   //  Serial.println(); 
  597.   /*// 
  598.   Serial.print("Tempo= "); 
  599.   Serial.print(hour()); 
  600.   Serial.print(":"); 
  601.   Serial.print(minute()); 
  602.   Serial.print(":"); 
  603.   Serial.print(second()); 
  604.   Serial.println(""); 
  605.  
  606.   Serial.print("Data= "); 
  607.   Serial.print(day()); 
  608.   Serial.print("/"); 
  609.   Serial.print(month()); 
  610.   Serial.print("/"); 
  611.   Serial.print(year()); 
  612.   Serial.println(""); 
  613. /*/ 
  614.   //esegui ogni secondo 
  615. // delay(1000); 
  616.  
  617.  
  618.  
  619. if (sensors.getTempCByIndex(0)>maxeeprom) 
  620.   { 
  621.     maxeeprom=sensors.getTempCByIndex(0); 
  622.    EEPROM.put (eeAddress1, maxeeprom); 
  623.     
  624.   } 
  625.   if (sensors.getTempCByIndex(0)<mineeprom) 
  626.   { 
  627.     mineeprom=sensors.getTempCByIndex(0); 
  628.   EEPROM.put (eeAddress2, mineeprom); 
  629.  
  630.   } 
  631.  
  632.  


Si lo so è lungo, ma quello completo con internet sarà il doppio infatti metto qualche pacchetto da scaricare alla fine quando farò il tutorial



 
Ultima modifica di As_Needed il Lun 14 Dic, 2015 18:24, modificato 2 volte in totale 
 As_Needed [ Lun 14 Dic, 2015 18:18 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Ok mi hai convinto la compro.



 
 nicola59 [ Lun 14 Dic, 2015 18:43 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
nicola59 ha scritto: [Visualizza Messaggio]
Ok mi hai convinto la compro.


 



 
 As_Needed [ Lun 14 Dic, 2015 18:56 ]
Messaggio Re: Stazione Meteo (FAI DA TE) 
 
Chiedo una cosa a voi che comunque li vedete i valori di RR... ma il rain rate minimo qual è? 0.8? Perché io non posso mettere tutti i valori fino a 0.1 perché se no siccome si calcola l'intervallo tra una basculata e l'altra significa che se scende a 0.3 per azzerarsi ci vogliono più di 2 ore... invece ho messo che quando va sotto uno, ovvero tipo 0.9, automaticamente è 0



 
 As_Needed [ Lun 14 Dic, 2015 19:44 ]
Mostra prima i messaggi di:    
NascondiQuesto argomento è stato utile?
Condividi Argomento
Segnala via email Facebook Twitter Windows Live Favorites MySpace del.icio.us Digg SlashDot google.com LinkedIn StumbleUpon Blogmarks Diigo reddit.com Blinklist co.mments.com
technorati.com DIGG ITA linkagogo.com meneame.net netscape.com newsvine.com yahoo.com Fai Informazione Ok Notizie Segnalo Bookmark IT fark.com feedmelinks.com spurl.net
Pagina 10 di 18
Vai a Precedente  1, 2, 3 ... 9, 10, 11 ... 16, 17, 18  Successivo
Vai a pagina   
 

Online in questo argomento: 0 Registrati, 0 Nascosti e 1 Ospite
Utenti Registrati: Nessuno