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
154 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 ![]()


Mon contenu
Homme



