/* * Phytotron * lecture des capteurs de temperature LM35 */ /* -------------------------------------------------- */ #define NBVAL 4 #define DELAI 1000 #define RELAIS_FRIGO 42 #define RELAIS_VENTILO 40 #define prt(a) Serial.print(a) #define prtln(a) Serial.println(a) typedef struct { unsigned short magic; char tag[4]; short delai; short temp_maxi; short temp_mini; short control; } Global; Global parametres; /* -------------------------------------------------- */ void setup() { Serial.begin(9600); pinMode(LED_BUILTIN, OUTPUT); pinMode(RELAIS_FRIGO, OUTPUT); pinMode(RELAIS_VENTILO, OUTPUT); Serial.print("\n"); /* XXX */ /* changing the voltage reference of the ADC * greatly increase the prcision on the limited * range of our temperatures. */ analogReference(INTERNAL1V1); // Pour Arduino Mega2560 Serial.print("\n"); read_config(0, ¶metres); // display_config(¶metres); Serial.print("M running now\n"); } /* ================================================== */ /* * the light captor is on A4 pin */ void readlight(void) { short value; delay(100); value = analogRead(A4); Serial.print("L "); Serial.print(value); Serial.print('\n'); } /* ================================================== */ short adc_pins[] = { A0, A1, A2, A3 }; #define NB_PASSE 4 /* -------------------------------------------------- */ void updatevalues(short *ptr) { short foo, pass; for (foo=0; foo 5) { readlight(); foo = 0; } /* check for external request */ if (Serial.available()) { key = Serial.read(); switch (key) { case 'U': Serial.println("M cli request"); phytocli(); break; case '+': /* allume le frigo */ controle_frigo(1); break; case '-': /* eteint le frigo */ controle_frigo(0); break; case '1': /* allume le ventilo */ controle_ventilo(1); break; case '0': /* eteint le ventilo */ controle_ventilo(0); break; default: prtln("M bad control code"); break; } } delay(DELAI); /* ETERNAL LOOP END HERE */ } /* -------------------------------------------------- */