First Version of code

Publié par Daniel Assayag le

/*
Orgatec Light retribution program
by @dan.ass

Read the value of a LDR and turn LED on during a cycle of 12seconds if the quantity of light
has reached a certain threshold.

This code reuse some existing code to hard reset millis function.
This code has variables names in french.

It is developped during a program made in collaboration between CRI
and Fablabs Solidaires, supervised by teacher Daniel Assayag.

http://makerlab.cri-paris.org/orgatec/
*/
extern volatile unsigned long timer0_millis;
unsigned long new_value = 0;

int LumiereTotale = 0;
int Heure = 0;
int Journee = 12;
int Cycle = 7;
int Lampe = 12;
void setup() {
Serial.begin(9600);
pinMode(Lampe, OUTPUT);
}

void loop() {

int Temps = millis() / 1000;

int CapteurLumiere = map(analogRead(A0), 700, 1023, 0, 100);
LumiereTotale += CapteurLumiere;
digitalWrite(12, LOW);

Serial.print(« Lumiere actuelle: « );
Serial.print(CapteurLumiere);
Serial.println(«  »);

Serial.print(« Lumiere totale: « );
Serial.print(LumiereTotale);
Serial.println(«  »);

Serial.print(« Temps total: »);
Serial.print(Temps);

if (Temps >= Cycle){
if (LumiereTotale > 1000) {
digitalWrite(Lampe, LOW);
}
else {
digitalWrite(Lampe, HIGH);
}
}

if (Temps >= 12) {
setMillis(0);
LumiereTotale = 0;
Serial.println(«  »);
Serial.println(« Fin de Journée »);
Serial.println(«  »);
}

Serial.println(«  »);
Serial.print(« Heure : »);
Serial.print(Heure);

Serial.println(«  »);
delay(1000);

}

void setMillis(unsigned long new_millis){
uint8_t oldSREG = SREG;
cli();
timer0_millis = new_millis;
SREG = oldSREG;
}

Catégories : Projet OrgaTec

Laisser un commentaire