Salut,
Voila mon souci:
J'ai créé un programme pour ATtiny25/45/85 mais celui ci ne fonctionne pas dessus.
Par contre, ce meme programme sur une Mega tourne comme prévus..
Programme ATtiny :
#define PinFan 4 // Pin ventilateur #define PinLed 0 // Pin led float resistance; // Valeur de la resistance ajustable int valbrute; // Valeur LM35 float temperatureC; // Valeur ajusté en °c int blinktime; // Compteur de clignotement int lastdelay; // Compteur de temps de clignotment void setup() { pinMode (PinFan, OUTPUT); pinMode (PinLed, OUTPUT); } void loop() { // Acquisition de la temperature valbrute = analogRead (A0); temperatureC = valbrute * (5.09/1023.0*100.0); // Acquisition de la valeur de la resistance variable resistance = analogRead (A3); resistance = resistance / 10.23 ; TempDisplay(); // Execute TempDisplay if (temperatureC >= resistance) // Controle automatique du ventilateur { digitalWrite (PinFan, HIGH); } else { digitalWrite (PinFan, LOW); } delay(15000-lastdelay); lastdelay = 0 ; } void TempDisplay () { // Affichage de la temperature par 10° par clignotement de led blinktime = temperatureC / 10 ; while (blinktime >= 1) { digitalWrite(PinLed,HIGH); delay(500); digitalWrite(PinLed, LOW); delay(500); lastdelay = lastdelay + 1000; --blinktime; } }
Programme Mega:
#define PinFan 4 // Pin ventilateur #define PinLed 2 // Pin led float resistance; // Valeur de la resistance ajustable int valbrute; // Valeur LM35 float temperatureC; // Valeur ajusté en °c int blinktime; // Compteur de clignotement int lastdelay; // Compteur de temps de clignotment void setup() { Serial.begin(9600); pinMode (PinFan, OUTPUT); pinMode (PinLed, OUTPUT); } void loop() { // Acquisition de la temperature valbrute = analogRead (A0); temperatureC = valbrute * (5.09/1023.0*100.0); // Acquisition de la valeur de la resistance variable resistance = analogRead (A3); resistance = resistance / 10.23 ; Serial.print("Temp="); Serial.println(temperatureC); delay(500); Serial.print("Resistance="); Serial.println(resistance); delay(500); TempDisplay(); // Execute TempDisplay Serial.print("Lastdelay="); Serial.println(lastdelay); delay(500); if (temperatureC >= resistance) // Controle automatique du ventilateur { digitalWrite (PinFan, HIGH); Serial.println("Fan On"); delay(500);} else { digitalWrite (PinFan, LOW); Serial.println("Fan OFF"); delay(500); } delay(15000-lastdelay); lastdelay = 0 ; } void TempDisplay () { // Affichage de la temperature par 10° par clignotement de led blinktime = temperatureC / 10 ; while (blinktime >= 1) { digitalWrite(PinLed,HIGH); delay(500); digitalWrite(PinLed, LOW); delay(500); lastdelay = lastdelay + 1000; --blinktime; } }
Sortie moniteur série Mega :
moniteur.JPG 37,96 Ko 134 téléchargement(s)
J'ai tester d'autre sortie analogique sur l'ATiny pour le capteur de t°, mais ça ne change rien.
La led devant indiqué la temperature (un on/off par 10°c) clignote bien, mais plus de fois qu normalement possible. Le max possible est de 10 (100°/10=10) mais elle clignote jusqu'à 23 fois !
Merci pour votre aide