Bonjour à tous !
Je suis en train de faire un petit projet arduino, je tiens à préciser que je suis débutant.
J'ai deux cartes qui communiquent sans fils via des shields XBee (car les modules bluetooth que j'utilisais étaient défectueux, pour ceux qui m'avaient répondu sur un autre fil ). Sur l'émettrice il y a un capteur qui renvoi un valeur décimale, la fréquence cardiaque en bpm. Il envoie cette valeur à une carte réceptrice.
Je viens demander de l'aide pour deux choses :
- Comment puis-je faire clignoter une led ( ou un chenillard, mais une led c'est déjà bien ) en fonction de la valeur du pouls ? Par exemple si le bpm est de 65, la led devrait clignoter 65 fois par minutes... Je ne vois pas vraiment comme le coder proprement.
- Je dois faire une moyenne du bpm pris sur 12h ou 24h, comment coder cela, afin de définir une certaine valeur comme moyenne ? J'ai pensé à faire un sous-programme qui relèverai une valeur du bmp toutes les secondes sur disons 12h, puis fais le calcul de la moyenne. Cependant l'addition de toutes ces valeur peut-elle directement être stockées dans une variable ?
Si par exemple je prends une valeur de bpm de 100 pendant 24h ( pour me donner de la marge ) alors j'additionne toutes ces valeurs dans une variable de type "long" et puis je divise par le nombre de mesures ( cela fait 86 400 mesures ). Ceci est la bonne méthode ?
J'ai essayé un code de ce type pour la moyenne, est-il correct ? Comment sortir de la boucle "while (Wire.available...)" ?
Code:#include <Wire.h> long sommevaleurs = 0; int moyenne = 0; int nbmesures = 0; void setup() { Serial.begin(9600); Serial.println("heart rate sensor:"); Wire.begin(); rodage(); setDestination(); // void loop etc void rodage() { Wire.requestFrom(0xA0 >> 1, 1); // request 1 bytes from slave device while(Wire.available()) { // slave may send less than requested while (nbmesures <= 760){ unsigned char valeur = Wire.read(); // receive heart rate value (a byte) sommevaleurs = sommevaleurs + valeur; nbmesures ++; delay(60000); } moyenne = sommevaleurs / nbmesures; } }
Merci d'avance pour vos réponses !
PS : Voici les codes que j'utilise :
Emetteur :
Code:#include <Wire.h> void setup() { Serial.begin(9600); Serial.println("heart rate sensor:"); Wire.begin(); setDestination(); } void loop() { Wire.requestFrom(0xA0 >> 1, 1); // request 1 bytes from slave device while(Wire.available()) { // slave may send less than requested unsigned char c = Wire.read(); // receive heart rate value (a byte) Serial.println(c, DEC); // print heart rate value } delay(500); } // Xbee configuration void setDestination() { Serial.print("ATRE\r"); Serial.print("ATDL0\r"); Serial.print("ATMY1\r"); Serial.print("ATID1111\r"); Serial.print("ATCN\r"); }
Recepteur :
Code:void setup() { Serial.begin(9600); //initialize serial setDestination(); } void loop() { while(Serial.available()){ //is there anything to read? char getData = Serial.read(); //if yes, read it Serial.write( getData ); } } // Xbee configuration void setDestination() { Serial.print("ATRE\r"); Serial.print("ATMY0\r"); Serial.print("ATID1111\r"); Serial.print("ATCN\r"); }
-----