Stazione Meteo Completa! (FAI DA TE)


Vai a Precedente  1, 2, 3 ... 9, 10, 11 ... 16, 17, 18  Successivo

Titolo: 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 :lol: sono sicuro che troverai il sistema di mettere anche il RR :ok:


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

Titolo: 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 :lol: sono sicuro che troverai il sistema di mettere anche il RR :ok:


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

Profilo PM  
Titolo: 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 :lol: sono sicuro che troverai il sistema di mettere anche il RR :ok:


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


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

Titolo: 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 :D
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
Titolo: 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 :D
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 :mrgreen: però deve essere bello! Complimenti! :lol:

Ultima modifica di Fili il Gio 10 Dic, 2015 19:45, modificato 1 volta in totale
Titolo: 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 :mrgreen: però deve essere bello! Complimenti! :lol:


Ho provato a spiegare il più chiaro possibile :lol: Intanto quando metto le foto vedrete con gli occhi il lavoro che è la meglio cosa, è più facile di quello che sembra :D 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 8))
:bye:

Titolo: 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 :mrgreen: però deve essere bello! Complimenti! :lol:


Ho provato a spiegare il più chiaro possibile :lol: Intanto quando metto le foto vedrete con gli occhi il lavoro che è la meglio cosa, è più facile di quello che sembra :D 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 8))
:bye:


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

Grandioso! :inchino:

Profilo PM  
Titolo: Re: Stazione Meteo (FAI DA TE)
Grazie mille Gabrié!!!! ;) E grazie a tutti!
Non vedo l ora di compleatare tutto!
:bye:

Titolo: Re: Stazione Meteo (FAI DA TE)
Prossimo passo, modulo a radiofrequenza per i sensori! :D

Titolo: Re: Stazione Meteo (FAI DA TE)
E io che c'ho messo du anni a mette online una webcam! :lol: :lol: :lol: :lol:

Complimenti Eugenio, davvero complimenti :inchino: :inchino: :inchino:

Titolo: Re: Stazione Meteo (FAI DA TE)
andrea75 ha scritto: [Visualizza Messaggio]
Prossimo passo, modulo a radiofrequenza per i sensori! :D


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

Titolo: Re: Stazione Meteo (FAI DA TE)
Qua piove forte e siamo già a 65 mm :lol: Sono riuscito a fare sto benedetto RR, non mi pare vero :lol: 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. } else { 
  134. rainrate = 3600 / (((PluvioStep - PluvioOldStep) / 1000)) * mmGoccia; 
  135. } else { 
  136. rainrate = 0.0; 
  137. void loop() { 
  138. sensors.requestTemperatures(); 
  139. digitalWrite(pinLed_blink, HIGH);  
  140. delay(100); 
  141. digitalWrite(pinLed_blink, LOW); 
  142. delay(100); 
  143. float h = dht.readHumidity(); // Leggo il valore di umidità 
  144. dewPoint = (pow (h/100,0.125)*(112+(0.9*sensors.getTempCByIndex(0)))+0.1*sensors.getTempCByIndex(0)-112); 
  145. pressionelivellodelmare=barometer.GetPressure()+5240; 
  146. pressionelivellodelmarehPa=pressionelivellodelmare/100; 
  147. //float t = dht.readTemperature(); // Leggo il valore di temperatura 
  148. //if (isnan(t) || isnan(h)) // Se almeno uno dei due valori è NaN (Not a Number) 
  149.  
  150. //Serial.println("Impossibile leggere il sensore!"); 
  151.  
  152. //else //altrimenti 
  153. if(barometer.IsConnected) 
  154. // Retrive the current pressure in Pascals. 
  155. long currentPressureP = barometer.GetPressure(); 
  156. float currentPressuremb = currentPressureP/100.0; 
  157. float currentPressureinHg = currentPressuremb*0.02953; 
  158.  
  159.  
  160. // Retrive the current altitude (in meters). Current Sea Level Pressure is required for this. 
  161. float altitudem = barometer.GetAltitude(seaLevelPressure); 
  162. float altitudeft = altitudem*3.2808; 
  163.  
  164.  
  165. // Retrive the current temperature in degrees celcius. 
  166. float currentTemperatureC = barometer.GetTemperature(); 
  167. float currentTemperatureF = (9.0/5.0)*currentTemperatureC+32.0; 
  168. // Serial.print("Temperatura "); 
  169. // Serial.println(sensors.getTempCByIndex(0)); 
  170. // Serial.print("Umidita' "); 
  171. // Serial.print(h); 
  172. // Serial.print(" %\t"); 
  173.  
  174. // Serial.println ("Dew Point"); 
  175. //Serial.print (dewPoint); 
  176. //Serial.println ("C"); 
  177. //Serial.println ("Wind Chill"); 
  178. //Serial.print (windchillc); 
  179. //Serial.print ("C"); 
  180.  
  181.  
  182. time = millis(); 
  183. PluvioDataEngine(); 
  184.  
  185. temperaturaf=sensors.getTempCByIndex(0)*1.8+32; 
  186.  
  187.  
  188. if ((sensors.getTempCByIndex(0)>=26.7)&&(h>=40)) 
  189. {  
  190. 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)); 
  191. heatindexc= (heatindexf-32)/1.8; 
  192. else 
  193. {  
  194. heatindexc=sensors.getTempCByIndex(0); 
  195. //delay(1000); 
  196.  
  197. //Serial.print("Temperatura: "); 
  198. //Serial.print(t); 
  199. //Serial.println(" *C"); 
  200. // non è necessario mettere un delay() perchè ci vogliono due secondi per leggere i valori, quindi il serial monitor riceverà dati ogni 2 secondi. 
  201.  
  202. // Serial.println("Start"); 
  203. gooddata = 1; 
  204. collectData(); 
  205. if (gooddata == 1) { 
  206. rawdump(); 
  207. outputResults(); 
  208. TheData(); 
  209. //else //{ 
  210. // Serial.println ("READ ERROR"); 
  211. //} 
  212. //Serial.println(++loops); 
  213. // Serial.println(); 
  214. // delay(1500); 
  215.  
  216. int collectData(void) { 
  217. if (bitLength <0){ 
  218. bitLength = 1220;//getbitlenght2(); 
  219.  
  220. /*/ 
  221. pinMode(dataPin, OUTPUT); 
  222.  
  223. digitalWrite(dataPin, HIGH); 
  224. delay(100); 
  225. digitalWrite(dataPin, LOW ); 
  226. delay(500); 
  227. pinMode(dataPin, INPUT); 
  228. /*/ 
  229.  
  230. while(digitalRead(dataPin) == LOW){ 
  231. }  
  232. //wait slave start signal 
  233. while(digitalRead(dataPin) == HIGH){ 
  234. while(digitalRead(dataPin) == LOW){ 
  235.  
  236.  
  237.  
  238.  
  239. for (int i=0 ; i<42 ; i++) { 
  240. data[i] = (digitalRead(dataPin) == LOW)? 0:1; // read and save either a 0 or 1 
  241. delayMicroseconds(bitLength); 
  242.  
  243. int TheData() { 
  244. // Serial.println("TheData"); 
  245. int i, idx = 0, idy = 0; 
  246. // for (i=8; i>4; i--) { dato originale 
  247. for (i=6; i>2; i--) { // dato modificato 
  248. idx = idx *2 + data[i]; 
  249.  
  250. // Serial.print("idx: "); 
  251. // Serial.println(idx, DEC); 
  252. // Serial.print("Wind: "); 
  253. // Serial.println(windDirection[idx] ); 
  254.  
  255. // for (i=17; i>8; i--) { dato originale per velocità 
  256. for (i=15; i>6; i--) { // dato modificato 
  257. idy = idy * 2 + data[i]; 
  258.  
  259. // Serial.print("Speed: "); 
  260. // Serial.print(idy, DEC); 
  261. //Serial.println (" m/s read"); 
  262.  
  263. float idz = idy/10.0; 
  264. //Serial.print("Speed: "); 
  265. // Serial.print(idz); 
  266. // Serial.println (" m/s real"); 
  267.  
  268. float KMH = idz * 3.6; 
  269. //Serial.print("Speed: "); 
  270. //Serial.print(KMH); 
  271. //Serial.println (" kmh"); 
  272.  
  273. float MPH = KMH * 0.621371192; 
  274. // Serial.print("Speed: "); 
  275. //Serial.print(MPH); 
  276. // Serial.println (" mph"); 
  277.  
  278.  
  279. windchill=(13.12+0.6215*sensors.getTempCByIndex(0))-(11.37*pow(KMH,0.16))+(0.3965*sensors.getTempCByIndex(0)*pow(KMH,0.16)); 
  280. if ((windchill<sensors.getTempCByIndex(0))&&(KMH>4.6)) 
  281. windchill=(13.12+0.6215*sensors.getTempCByIndex(0))-(11.37*pow(KMH,0.16))+(0.3965*sensors.getTempCByIndex(0)*pow(KMH,0.16)); 
  282. else 
  283. windchill=sensors.getTempCByIndex(0); 
  284. if ( giornoSalvato != day() )  
  285. giornoSalvato=day(); 
  286. rafficamax=KMH; 
  287. maxeeprom=sensors.getTempCByIndex(0); 
  288. mineeprom=sensors.getTempCByIndex(0); 
  289. mmPioggia=0; 
  290. EEPROM.put (eeAddress1, maxeeprom); 
  291. EEPROM.put (eeAddress2, mineeprom); 
  292. EEPROM.put (eeAddress3, rafficamax); 
  293. EEPROM.put (eeAddress4, mmPioggia); 
  294.  
  295. if (KMH>rafficamax) 
  296. rafficamax=KMH; 
  297. EEPROM.put (eeAddress3, rafficamax); 
  298.  
  299. tft.fillScreen(ST7735_BLACK); 
  300. tft.setTextColor (ST7735_GREEN); 
  301. tft.setCursor(0, 0); 
  302. tft.setTextSize(1); 
  303. tft.println("Temp.OUTSIDE"); 
  304. if (sensors.getTempCByIndex(0)<3) 
  305. {  
  306. tft.setTextColor (ST7735_BLUE); 
  307. tft.setCursor(80, 0); 
  308. tft.setTextSize(1); 
  309. tft.print(sensors.getTempCByIndex(0)); 
  310. tft.print ( (char)248); 
  311. tft.println("C"); 
  312. //delay(5000); 
  313. if ((sensors.getTempCByIndex(0)>=3)&&(sensors.getTempCByIndex(0)<=15)) 
  314. {  
  315. tft.setTextColor (ST7735_GREEN); 
  316. tft.setCursor(80, 0); 
  317. tft.setTextSize(1); 
  318. tft.print(sensors.getTempCByIndex(0)); 
  319. tft.print ( (char)248); 
  320. tft.println("C"); 
  321. if ((sensors.getTempCByIndex(0)>15)&&(sensors.getTempCByIndex(0)<30)) 
  322. {  
  323. tft.setTextColor (ST7735_YELLOW); 
  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. if ((sensors.getTempCByIndex(0)>=30)) 
  330. {  
  331. tft.setTextColor (ST7735_RED); 
  332. tft.setCursor(80, 0); 
  333. tft.setTextSize(1); 
  334. tft.print(sensors.getTempCByIndex(0)); 
  335. tft.print ( (char)248); 
  336. tft.println("C"); 
  337. tft.setTextColor (ST7735_WHITE); 
  338. tft.setCursor (0,10); 
  339. tft.print ("Umidita'"); 
  340. tft.setCursor (80,10); 
  341. tft.print (dht.readHumidity()); 
  342. tft.print (" %"); 
  343. tft.setCursor (0,20); 
  344. tft.print ("Dew Point"); 
  345. tft.setCursor (80,20); 
  346. tft.print (dewPoint); 
  347. tft.print ((char)248); 
  348. tft.print ("C"); 
  349. tft.setTextColor (ST7735_GREEN); 
  350. tft.setCursor (0,30); 
  351. tft.print ("Pioggia"); 
  352. tft.setTextColor (ST7735_BLUE); 
  353. tft.setCursor (80,30); 
  354. tft.print (mmPioggia); 
  355. tft.print ("mm");  
  356. tft.setTextColor (ST7735_WHITE); 
  357. tft.setCursor (0,40); 
  358. tft.setTextColor (ST7735_GREEN); 
  359. tft.print ("Rain Rate"); 
  360. tft.setCursor (62,40); 
  361. tft.setTextColor (ST7735_BLUE); 
  362. tft.print (rainrate); 
  363. tft.setCursor (100,40); 
  364. tft.print("mm/h"); 
  365. tft.setTextColor (ST7735_WHITE); 
  366. tft.setCursor (0,50); 
  367. tft.println ("Vento"); 
  368. tft.setCursor (55,50); 
  369. tft.print (KMH); 
  370. tft.print ("Km/h"); 
  371. tft.setCursor (110,50); 
  372. tft.print (windDirection[idx]); 
  373. tft.setCursor (0,60); 
  374. tft.print ("Pressione"); 
  375. tft.setCursor (65,60); 
  376. tft.print (pressionelivellodelmarehPa); 
  377. tft.setCursor (110,60); 
  378. tft.print ("hPa"); 
  379. tft.setTextColor (ST7735_BLUE); 
  380. tft.setCursor (0,70); 
  381. tft.print ("Wind Chill"); 
  382. tft.setCursor (80,70); 
  383. tft.print (windchill); 
  384. tft.print ((char)248); 
  385. tft.print ("C"); 
  386. tft.setTextColor (ST7735_RED); 
  387. tft.setCursor (0,80); 
  388. tft.println ("Heat Index"); 
  389. tft.setCursor (80,80); 
  390. tft.print (heatindexc); 
  391. tft.print ((char)248); 
  392. tft.print ("C"); 
  393. tft.setTextColor (ST7735_YELLOW); 
  394. tft.setCursor(0, 90); 
  395. tft.println("Temp.INSIDE"); 
  396. tft.setCursor(80, 90); 
  397. tft.print(barometer.GetTemperature()); 
  398. tft.print((char)248); 
  399. tft.println("C"); 
  400. tft.drawLine (0,100,tft.width()-0,100,ST7735_WHITE); 
  401. tft.setCursor(0,103); 
  402. tft.setTextColor (ST7735_RED); 
  403. tft.print("Temp.MAX"); 
  404. tft.setCursor(80,103); 
  405. tft.print(maxeeprom); 
  406. tft.print((char)248); 
  407. tft.println("C"); 
  408. tft.setTextColor (ST7735_BLUE); 
  409. tft.setCursor(0,113); 
  410. tft.print("Temp.MIN"); 
  411. tft.setCursor(80,113); 
  412. tft.print(mineeprom); 
  413. tft.print((char)248); 
  414. tft.println("C"); 
  415. tft.setTextColor (ST7735_WHITE); 
  416. tft.setCursor (0,123); 
  417. tft.print ("RafficaMAX"); 
  418. tft.setCursor (65,123); 
  419. tft.print (rafficamax); 
  420. tft.print ("Km/h"); 
  421. tft.setTextColor (ST7735_YELLOW); 
  422. tft.setTextSize (2); 
  423. tft.setCursor (0,135); 
  424. tft.print(hour()); 
  425. tft.print(":"); 
  426. tft.print(minute()); 
  427. tft.print(":"); 
  428. tft.print(second()); 
  429. tft.println(""); 
  430. tft.setTextSize (1); 
  431. tft.print(day()); 
  432. tft.print("/"); 
  433. tft.print(month()); 
  434. tft.print("/"); 
  435. tft.print(year()); 
  436. tft.print(""); 
  437.  
  438. void rawdump() { 
  439. // Serial.print("Raw: "); 
  440. for (int i=0 ; i<41 ; i++) { 
  441. // Serial.print (data[i]); 
  442. if (i == 4) { 
  443. // Serial.print (" "); 
  444. if (i == 8) { 
  445. // Serial.print (" "); 
  446. if (i == 17) { 
  447. // Serial.print (" "); 
  448. if (i == 20) { 
  449. // Serial.print (" "); 
  450. if (i == 24) { 
  451. // Serial.print (" "); 
  452. if (i == 28) { 
  453. //// Serial.print (" "); 
  454. if (i == 37) { 
  455. // Serial.print (" "); 
  456.  
  457.  
  458. void ContaGocce() 
  459. gocce++; // incrementa numero basculate 
  460. if (gocce>1) 
  461. {  
  462. mmPioggia =mmPioggia + 0.518; 
  463. else 
  464. mmPioggia = mmPioggia + mmGoccia; // sommatoria millimetri pioggia 
  465. PluvioOldStep = PluvioStep; 
  466. PluvioStep = time; 
  467. statoLed = !statoLed; 
  468. digitalWrite(pinLed_inter, statoLed ? HIGH : LOW); 
  469. EEPROM.put (eeAddress4, mmPioggia); 
  470.  
  471. void outputResults() { 
  472. //Serial.println(); 
  473.  
  474. int idx =0; 
  475. for (int i=8 ; i> 4 ; i--)  
  476. //for (int i=6 ; i> 2 ; i--) // dato modificato 
  477. idx = idx *2 + data[i]; // data[i] == 0/1.. see prev post. // 
  478.  
  479. //Serial.print("idx: "); 
  480. //Serial.println(idx, DEC); 
  481. //Serial.print("Wind: "); 
  482. //Serial.println(windDirection[idx] ); 
  483. // Serial.println(); 
  484.  
  485. //Serial.print("Swapped: "); 
  486.  
  487. //HEAD 
  488. for (int i =0 ; i< 5 ; i++) 
  489. //Serial.print(data[i]); // it contains 0 or 1 
  490.  
  491. // Serial.print(" "); 
  492.  
  493. //WINDDIR 
  494. for (int i =8 ; i> 4 ; i--) 
  495. // Serial.print(data[i]); 
  496. // Serial.print(" "); 
  497.  
  498. //WIND SPEED 
  499. for (int i =17 ; i> 8 ; i--) 
  500. // Serial.print(data[i]); 
  501.  
  502. //Serial.print(" "); 
  503.  
  504. //WIND SPEED+3 
  505. for (int i =20 ; i> 17 ; i--) 
  506. // Serial.print(data[i]); 
  507.  
  508. //Serial.print(" "); 
  509.  
  510. /* 
  511. // Checksum 
  512. for (iCounter=0;iCounter<4;iCounter++) 
  513. checksum |= (TX23_DATA_GET_BIT << iCounter); 
  514. delayTargetuSec += bitLength; 
  515. TX23_DoDelay; 
  516.  
  517. //Calculate Checksum 
  518. unsigned int checksumCalc = 0; 
  519. checksumCalc += (winddir & 15); 
  520. checksumCalc += ((windspeed >> 8) & 15); 
  521. checksumCalc += ((windspeed >> 4) & 15); 
  522. checksumCalc += (windspeed & 15); 
  523. */ 
  524.  
  525. // Checksum 
  526. for (int i =24 ; i> 20 ; i--) 
  527. // Serial.print(data[i]); 
  528.  
  529. //Serial.print(" "); 
  530.  
  531. //WIND DIR NEGATEIVE 
  532. for (int i =28 ; i> 24 ; i--) 
  533. // Serial.print(data[i]); 
  534.  
  535. //Serial.print(" "); 
  536.  
  537. //WIND SPEED NEGATED 
  538. for (int i =37 ; i> 28 ; i--){ 
  539. // Serial.print(data[i]); 
  540.  
  541. // Serial.print(" "); 
  542.  
  543. //WIND SPEED NEGATED +3 
  544. for (int i =40 ; i> 37 ; i--){ 
  545. // Serial.print(data[i]); 
  546. // Serial.println(); 
  547. // Serial.println(); 
  548. // Serial.println(); 
  549. /*// 
  550. Serial.print("Tempo= "); 
  551. Serial.print(hour()); 
  552. Serial.print(":"); 
  553. Serial.print(minute()); 
  554. Serial.print(":"); 
  555. Serial.print(second()); 
  556. Serial.println(""); 
  557.  
  558. Serial.print("Data= "); 
  559. Serial.print(day()); 
  560. Serial.print("/"); 
  561. Serial.print(month()); 
  562. Serial.print("/"); 
  563. Serial.print(year()); 
  564. Serial.println(""); 
  565. /*/ 
  566. //esegui ogni secondo 
  567. // delay(1000); 
  568.  
  569.  
  570.  
  571. if (sensors.getTempCByIndex(0)>maxeeprom) 
  572. maxeeprom=sensors.getTempCByIndex(0); 
  573. EEPROM.put (eeAddress1, maxeeprom); 
  574.  
  575. if (sensors.getTempCByIndex(0)<mineeprom) 
  576. mineeprom=sensors.getTempCByIndex(0); 
  577. EEPROM.put (eeAddress2, mineeprom); 
  578.  
  579.  
  580.  


Si lo so è lungo, ma quello completo con internet sarà il doppio :D 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
Titolo: Re: Stazione Meteo (FAI DA TE)
Ok mi hai convinto la compro.

Titolo: Re: Stazione Meteo (FAI DA TE)
nicola59 ha scritto: [Visualizza Messaggio]
Ok mi hai convinto la compro.


:D

Titolo: 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

Vai a Precedente  1, 2, 3 ... 9, 10, 11 ... 16, 17, 18  Successivo

Pagina 10 di 18


  
Non puoi inserire nuovi Argomenti
Non puoi rispondere ai Messaggi
Non puoi modificare i tuoi Messaggi
Non puoi cancellare i tuoi Messaggi
Non puoi votare nei Sondaggi
Non puoi allegare files
Puoi scaricare gli allegati
Non puoi inserire eventi calendario

   

Questa visualizzazione "Lo-Fi" è semplificata. Per avere la versione completa di formattazioni ed immagini clicca su questo link.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Tempo Generazione: 0.1068s (PHP: -13% SQL: 113%)
SQL queries: 14 - Debug On - GZIP Abilitato