Bonjour à tous.
Je travaille actuellement sur un projet assez lourd qui me tient à coeur.
J'en suis à la phase des derniers tests et tout semble fonctionner parfaitement, excepte .... Mais plutot qu'un long discours je poste un exemple de ce qui se passe (ce n'est pas le PDE complet, mais le fonctionnement et ce qui me semble un bug reste identique) :
#define pinTemp 0 /* analog pin */
int temp ; /* temperature */
#define Ref 1.1 /* Analog Reference interne = 1.1V */
int samples[10]; /* variables pour une meilleure precision precision */
int k ; /* compteur de boucle */
int MesureTemp()
{
int tempc=0;
for(int i = 0;i<=10;i++) /* 10 echantillons de la temperature */
{
samples[i] = ( Ref * analogRead(pinTemp) * 100.0) / 1024.0;
tempc = tempc + samples[i];
delay(200);
}
tempc = tempc/10 ;
return tempc ;
}
void setup()
{
analogReference(INTERNAL) ; /* tension de reference fixee a 1,1V en interne */
Serial.begin(19200) ; /* POUR DEBOGUAGE */
}
void loop()
{
temp=MesureTemp() ;
Serial.print("Temperature = ") ;
Serial.println(temp) ;
delay(2000) ;
k++;
Serial.print("k = ") ;
Serial.println(k) ;
if (k==90) ;
{
k=0 ;
}
}
j ouvre le terminal pour suivre l'evolution des choses et ô surprise ..... Mais surveillez le comportement de la variable de boucle "k".
le delay(2000) est necessaire dans mon PDE complet et je ne peux pas utiliser une boucle for(...;...;...) , d'ou la structure pas tres orthodoxe de ma boucle .
Si quelqu'un a une explication de ce phénomène , et mieux , s'il peut me dire comment résoudre le problème, je suis preneur..
Je précise que j'utilise une Diecimila (donc avec un ATmega168) et le capteur de température est un LM35DZ