Saluto tutti, è da circa 3 mesi che possiedo uno starter kit di arduino uno, e grazie alla guida di Massimo Banzi ed il playground sono riuscito a scrivere la mia prima applicazione per Arduino. Premetto non possiedo pressochè nessuna nozione di elettronica, ne di programmazione informatica escludendo quello che ho studiato sul c64 circa 20 anni fa. Quindi incollo qui il mio codice sperando che sia d'aiuto a qualche neofita come me, e per quelli più esperti per eventualmente migliorare qualche strafalcione che inevitabilmente ho fatto. Il tutto è prendendo esempio dal playground l'esempio sui thermistor :
/*
Lettura sonde e riporto su seriale in particolare n° 2 sonde una Hoval NTC con 2000 kohm a 25 c°
l'altra Vaillant con 2700 kohm a 25 PTC.schema di collegamento per ogni sonda
GND----------R4,7k--------------|--------------- sonda
| |
analog read a0,a5 |
|
3,3 volts---------------------------------------|per ogni sonda si procede alla assegnazione dei valori in c° tramite tabella di riferimento
in particolare le seguenti :
*/
include <avr/pgmspace.h>;
const int temphoval[] PROGMEM={49,50,51,52,53,54,55,55,56,57,57,58,59,60,61,62,63,63,64,65,66,67,68,69,70,71,72,73,74,74,75,76,77,77,78,79,80,81,82,83,83,84,85,86,86,87,88,89,89,90};
const int tempvail[]PROGMEM={49,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,55,56,56,56,56,57,57,57,57,58,58,59,59,60,60,60,60,61,61,61,62,62,63,63,64,64,64,64,65,65,66,66,66,67,68,68,69,69,70,70,71,71,72,72,72,73,73,73,74,74,75,76,76,76,77,78,79,79,80,81,82,83,84,84,85,85,86,87,88,89,90};int temp1= 0;
int temp2= 0;
int nrlettura = 0;
int rit = 1000;void setup() {
Serial.begin(9600);
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("");
Serial.println("*************************************************** TEMPERATURE LOGGER **********************************************");
Serial.println(" ");
Serial.println(" CONFIGURAZIONE Nr 2 SONDE ");
Serial.println(" ");
Serial.println("*********************************************************************************************************************");
Serial.print("Lettura ogni Ms...................: ");
Serial.print(rit, DEC);
Serial.println("");
Serial.println("");
}void loop() {
nrlettura=nrlettura ++ ;
//trattamento rilievo prima sonda hovalA0int sensorValue1 = analogRead(A0);
if ((sensorValue1 >= 402) && (sensorValue1 <= 451)) {// controllo dei valori se in scala di lettura
temp1=sensorValue1-452;
temp1= abs(temp1) ; //estraggo il valore assoluto
temp1 = pgm_read_word(&temphoval[temp1]);}
else
temp1 = 0;//trattamento rilievo seconda sonda vaillant A5
int sensorValue2 = analogRead(A5);
if ((sensorValue2 >= 560) && (sensorValue2 <= 652)) {// controllo dei valori se in scala di lettura
temp2 = sensorValue2-559;
temp2 = pgm_read_word(&tempvail[temp2]); }
else
temp2 = 0;//prepara la stampa su seriale
//stampa seriale prima sondaSerial.print("| ");
Serial.print(nrlettura, DEC);
Serial.print("\t");
Serial.print(" |");Serial.print("|");
Serial.print("\t");
Serial.print("vol Ohm ");
Serial.print(sensorValue1, DEC);
Serial.print("\t");
Serial.print("|");
Serial.print(" c ");
Serial.print(temp1, DEC);
Serial.print("\t");//stampa seriale prima sonda
Serial.print("|");
Serial.print("\t");
Serial.print("vol Ohm ");
Serial.print(sensorValue2, DEC);
Serial.print("\t");
Serial.print("|");
Serial.print(" c " );
Serial.print(temp2, DEC);
Serial.print("\t");
Serial.print("\t");
Serial.print("|");Serial.println();
delay (rit);
}