[DHT22] Créer une fonction qui renvoie un ou deux float ( si possible )


bonjours à toutes et à tous,


pour éviter une chuffe ou une surchauffe du dht22, j' ai placé sur son alimentation un transistor piloté par la broche 7 de l' arduino.

j' essaie de créer une (ou deux) fonction(s) qui, allume le dht22,attend deux secondes ( selon la librairie ), qui interroge et renvoi(ent) les valeurs d' humidité et de température en degré celsius, puis coupe l' alimentation du dht22.

voici un exemple de ce que j' essaie de faire:
code: [select]
float gettp()
{    
    int dhtonoff = 7;              
    digitalwrite(dhtonoff,high);
    delay(2000);
    dht.begin();
    gettp = dht.readtemperature();  
    digitalwrite(dhtonoff,low);  
}


voici les erreurs de compilation:
code: [select]


minicontroleurclimat.ino: in function 'float gettp()':
minicontroleurclimat:102: error: assignment of function 'float gettp()'
minicontroleurclimat:102: error: cannot convert 'float' 'float ()()' in assignment
minicontroleurclimat.ino:104: warning: no return statement in function returning non-void
minicontroleurclimat.ino: in function 'float gethm()':
minicontroleurclimat.ino:108: warning: no return statement in function returning non-void


visiblement, le compilateur ne veut pas que j' affecte la valeur récupérer par la fonction dht.readtemperature(); ( qui est en float)

en fait, je dirais même que le compilateur ne veut pas que j' utilise les "objets" ( ou je ne sais quoi ) comme "now.year"(lib du ds1307), "dht.readhumidity".

j' ai essayé de mettre ces "objets" dans les paramètres de ma fonction:
code: [select]
float gettp(dht.readtemperature())
{    
    int dhtonoff = 7;              
    digitalwrite(dhtonoff,high);
    delay(2000);
    dht.begin();
    gettp = dht.readtemperature();  
    digitalwrite(dhtonoff,low);  
}


voici le retour du compilateur:
code: [select]
minicontroleurclimat:97: error: expected ',' or ';' before '{' token
minicontroleurclimat.ino: in function 'float gethm()':
minicontroleurclimat.ino:108: warning: no return statement in function returning non-void


si vous avez des idées... n' hésitez pas  ;)

oui c'est normal, ici tu dois programmer en c....

les messages d'erreur de compilation me semblent assez parlants (dans chaque message, il y le numéro de ligne à laquelle il fait référence dans le code source).

si je reprends ton premier code :

gettp = dht.readtemperature(); 

gettp est le nom de ta fonction.
cette tentative d'affectation est refusée par le compilo.

code: [select]
float gettp()
{   
    int dhtonoff = 7;
    float valeurlue;
             
    digitalwrite(dhtonoff,high);
    delay(2000);
    dht.begin();
    valeurlue = dht.readtemperature(); 
    digitalwrite(dhtonoff,low);
    return valeurlue;
}


tu devrais accorder un peu de temps à un tuto qui explique les premiers pas avec les fonctions en c
 ;)


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > [DHT22] Créer une fonction qui renvoie un ou deux float ( si possible )


arduino

Comments