Bonjour tout le monde,
j'ai un projet de domotique qui pour l'instant ce porte seulement sur la gestion de température et de thermostat.
Je simule le thermostat par l'allumage d'une led.
J'ai deux problème pour le moment:
- le premier est en rapport avec la température, en fait j'ai réussi a envoyer la température d'une sonde a un programme en c#(windows form) tout ce passé bien avec la fonction "delay()". J'ai changer le delay par une fonction "millis()" mais maintenant l'affiche ce fais bizarrement et trop rapide. j'ai changé la vitesse de connéction mais rien ne change. voici le code:
int tempPin = 5; // analog input
int ledState = LOW;
int ledPin = 8;
int etatAllumer= LOW;
int allumer = 9;
void setup(void)
{
Serial.begin(19200);
pinMode(ledPin, OUTPUT);
pinMode(allumer, OUTPUT);
}
void loop(void)
{
int tempReading;
float temp_mV, tempC, tempF;
unsigned long temp;
tempReading = analogRead(tempPin); // returns 0-1023
temp_mV = map(tempReading, 0, 1023, 0, 5000); // convert to milliVolts
tempC = (temp_mV - 500)/10 +3.5 ;
tempF = 9*tempC/5 + 32;
if((millis()-temp)> 10000)
{
Serial.print(tempC);
Serial.print("\r");
temp =millis();
}
int received; // Variable servant à récupérer
// les données reçues
if (Serial.available()>0) { // Si des données sont disponibles
received = Serial.read(); // On les récupère
if(received == 'a') { // Si "a" est reçu
if (ledState==HIGH) // Et que la LED est allumée
ledState = LOW; // On l'éteinds
else // Sinon
ledState = HIGH; // On l'allume
digitalWrite(ledPin, ledState); // Enfin on change l'état de la LED
}
}
int received1;
if (Serial.available()>0) {
received1 = Serial.read();
if( received1 == 'b'){
if( etatAllumer == HIGH)
etatAllumer = LOW;
else
etatAllumer = HIGH;
digitalWrite(allumer, etatAllumer);
}
}
}
-Second problème, je voudrais qu'une led s'allume lors de l'ouverture du port mais cela ne fonctionne pas.
voila si vous sauriez m'aider ce serait sympa.