IMA4 2017/2018 P19 : Différence entre versions
(→Semaine 11 et 12) |
(→Semaine 11 et 12) |
||
Ligne 346 : | Ligne 346 : | ||
En raison de mauvais circuit, on refait le circuit et le PCB. | En raison de mauvais circuit, on refait le circuit et le PCB. | ||
− | [[Fichier:CollierPCBv6_bb.png|thumb| | + | [[Fichier:CollierPCBv6_bb.png|thumb|500px|center]] |
− | [[Fichier:CollierPCBv6_pcb.png|thumb| | + | [[Fichier:CollierPCBv6_pcb.png|thumb|500px|center]] |
On change le schéma de piles dans un autre PCB. Pour mieux connecter les PCB avec le collier, on ajoute deux parties vides. Du coup, on peut passer le collier par la partie vide. | On change le schéma de piles dans un autre PCB. Pour mieux connecter les PCB avec le collier, on ajoute deux parties vides. Du coup, on peut passer le collier par la partie vide. | ||
− | [[Fichier:CollierPortePile_bb.png|thumb| | + | [[Fichier:CollierPortePile_bb.png|thumb|500px|center]] |
− | [[Fichier:CollierPortePile_pcb.png|thumb| | + | [[Fichier:CollierPortePile_pcb.png|thumb|300px|center]] |
Version du 13 mai 2018 à 20:24
Sommaire
Présentation générale
Description
Notre objectif est créer un bijou de type collier combinant art et jeu de lumières réalisé avec des LED. C’est-à-dire il faut ajouter une dimension dynamique, des capteurs pour remonter température et rythme cardiaque et harmoniser l'animation lumineuse et l'humeur du porteur. Pas seulement ça, les LED peuvent être contrôlées par un circuit basé sur un microcontrôleur, et la forme du circuit et le placement des composants doit être étudié pour s'intégrer artistiquement
Objectifs
Créer un bijou de type collier combinant art et jeu de lumières réalisé avec des LEDs.
Analyse du projet
Positionnement par rapport à l'existant
Maintenant, on a trouvé certains produits composant des LEDS. Mais il n'y pas ni de capteurs de température ni de capteurs de rythme cardiaque.
Analyse du concurrent
Bague lumineuse à LED clignotante en silicone
- Effet puissant et couleurs changeantes
- Couleurs Assorties
- Pile incluse
- Bouton on/off
- Durer de vie de la pile 20 h (changeable)
La robe LED
- Télécommande robe LED Vêtements lumineux à LED Robe de mariée Mode double couche robe.
- Utilisez la télécommande pour changer les couleurs de LED : Batterie rechargeable.
- Cette robe lumineuse peut être utilisé à la fois dans la nuit de noce ou en plein jour fête de mariage. En une nuit splendide, il vous fait d'être le centre d'attention!
Collier en or LED
- Collier ras du cou sur support métallique.
- Alimenté par une batterie rechargeable, il peut rester allumé du crépuscule à l’aube.
- Alumé ou éteint, il est magnifique de jour comme de nuit.
- Mini câble de charge USB inclut - batterie rechargeable minuscule.
led&ref=sr_gallery_2 Site du collier
Scénario d'usage du produit ou du concept envisagé
S’il y a une personne qui a notre produit, quand il participe une fête, il va être plus joli. Le collier va changer la luminance selon le changement de température de corps et le rythme de radique. Ce collier a plusieurs couleurs et plusieurs façons d’allumer. Donc ça va être super charment.
Si les jeunes voudraient donner un gâteau pour ses grand-parents, ce collier va être un gâteau parfait, particulièrement pour la grand-mère. Ce collier pourrait surveiller la santé tout le temps. Pace qu’il y a un capteur de température et un capteur de radique pour tester la température de corps et le rythme de radique. Les changements peuvent être trouvé par le changement de brillance de LED.
Notre collier aussi peut être utilisé pour vérifier si quelqu’un ment. Parce que si quelqu’un ment, son rythme de cœur va changer. Donc ce sera facile de trouver.
Le design de collier
Réponse à la question difficile
On a également optimisé le modèle, en utilisant la transmission Bluetooth entre le capteur et le contrôleur, afin d'atteindre l'objectif de la connectivité sans fil.
REX : Pas convaincu. Comment allez-vous implanter Bluetooth sur le capteur et sur le circuit du collier ?
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Afin de porter pratique, l'ensemble des bijoux ne devrait pas être trop lourd, la puissance ne devrait pas être trop grande. En raison de ça, on a choisi des capteurs légers, des piles bouton et des LED qui ont bonne performance thermique. On a également optimisé le modèle, en utilisant la transmission Bluetooth entre le capteur et le contrôleur, afin d'atteindre l'objectif de la connectivité sans fil.
- 50 LEDs CMS :
- Composants électroniques :
- des résistances ;
- 1 ATMega328p ;
- 1 DS18B20 capteur ;
- 1 Pulsesensor capteur ;
- 2 piles de boutons de 3V ;
- 1 bouton.
- Divers :
- 1 breadboard ;
- 1 ruban isolant ;
- 1 interrupteur bascule ;
- des fils ;
- 1 toile.
Type de LED
Le courant de chaque LED cylindrique à bout arrondi est habituellement inferieur de soixante milliampère, donc la puissance n’est pas grand, son consommation d'énergie est faible, il a bonne performance thermique. Le courant de chaque LED CMS est environ de cinq milliampère à mille milliampère, donc son puissance est de zéro zéro six watt à un watt, la consommation d’énergie est plus petite que l’autre, et de plus, grace à sa forme, elle plus comfort pour le peau. En résumé, on a décidé de choisir LED SMD pour construire notre bijou. Et afin de réaliser la partie principale du collier ne comporterait pas de circuit, on veut utiliser les fils pour souder tous les LEDs.
Capteurs
En raison du sujet nous dit que le collier peut aussi comporter des capteurs à même la peau pour remonter température et rythme cardiaque et harmoniser l'animation lumineuse et l'humeur du porteur. Comme le collier devrait être porté autour du cou, donc nos capteurs doivent être petits et légers.
Capteur de rythme cardiaque
On sait qu’il y a trois méthodes pour tester la fréquence cardiaque : Premièrement, extrait du signal optique ; deuxièmement, l'utilisation de capteurs de pression pour mesurer le pouls ; troisièmement, la méthode du volume photoélectrique. A cause de les deux premières méthodes sont sensibles aux perturbations du mouvement, donc on a décidé d’utiliser la capteur Pulsesensor, qui est capteur analogique à réflexion photoélectrique pour la mesure la fréquence cardiaque. On veut le mettre près de l'artère carotide, mais si le pouls de l'artère carotide est si faible qu'il ne peut pas être détecté, on veut le serrer sur le lobe de l'oreille.
Capteur de température
Pour mesurer la température, on a choisi DS18B20 CMS qui possède une résolution numérique de 12 bits avec une plage de mesure de moins cinquante-cinq dégrée à cent vingt-cinq dégrée. La précision analogique du capteur est de zéro cinq dégrée entre moins dix dégrée et quatre-vingt cinq dégrée, ce qui rend ce capteur très intéressant pour une utilisation "normale". Et le schéma du montage de pulsesensor est comme ça, il est lié directement à Arduino, un fil noir sur la pin GND, un fil rouge sur la pin +5v de l’arduino, un fil bleu sur la pin A0. Pour que le DS18B20 effectue des conversions de température précises, les lignes d'entrée /sortie doivent fournir assez d'énergie pendant la transition de température, donc on a choisi le mode d’alimentation externe, à cause de le mode d’alimentation parasitaire ne peut pas fournir assez de courant résultant en plus grande erreur de mesure de température.
Liste des tâches à effectuer
- On étudie comment utiliser deux capteurs et les tester.
- On constitue le circuit global. On lie les LEDs sur le collier et ajoute deux capteurs et tester le circuit.
- On utilise l'ardunio UNO pour programmer l'Atmega328p pour contrôler les LEDs et les deux capteurs. Et on l'ajoute à circuit complet.
- On teste le circuit complet et on fait des simulations.
- On améliore notre circuit pour faire notre circuit plus esthétique.
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 15 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 | 8 |
Prologue
Avant de commencer notre projet, d’abord, on analyse notre sujet. Selon le demande de sujet, on décide de faire un collier comme un « choker ». Et on choisit un capteur de température et un capteur de radique pour détecter le changement de température et de rythme de cœur. En considérant la longueur du cou, on va mettre 32 LEDs sur ce collier et il contient quatre couleurs. On va utiliser Atmega328p pour contrôler des LEDs.
Semaine 1 et 2
On a appris comment utiliser la contrôleur TLC5711 et TLC5947 sur internet, la website est ci-dessous:
Et ensuite on a soudé les fils et les interfaces aux TLC5711
alors on a câblé et a connecté V+ et VCC à 5VDC
On a installé Arduino, a téléchargé la bibliothèque TLC5711, l'a ajouté au Library, et on a compilé les codes ci-dessous pour comprendre le function de chaque partie
#include "Adafruit_TLC59711.h" #include <SPI.h> #define NUM_TLC59711 2 #define data 11 #define clock 13 Adafruit_TLC59711 tlc = Adafruit_TLC59711(NUM_TLC59711, clock, data); void setup() { Serial.begin(9600); Serial.println("TLC59711 test"); pinMode(10, OUTPUT); tlc.begin(); tlc.write(); } void loop() { colorWipe(65535, 0, 0, 100); // "Red" (depending on your LED wiring) delay(200); colorWipe(0, 65535, 0, 100); // "Green" (depending on your LED wiring) delay(200); colorWipe(0, 0, 65535, 100); // "Blue" (depending on your LED wiring) delay(200); rainbowCycle(5); } // Fill the dots one after the other with a color void colorWipe(uint16_t r, uint16_t g, uint16_t b, uint8_t wait) { for(uint16_t i=0; i<8*NUM_TLC59711; i++) { tlc.setLED(i, r, g, b); tlc.write(); delay(wait); } } // Slightly different, this makes the rainbow equally distributed throughout void rainbowCycle(uint8_t wait) { uint32_t i, j; for(j=0; j<65535; j+=10) { // 1 cycle of all colors on wheel for(i=0; i < 4*NUM_TLC59711; i++) { Wheel(i, ((i * 65535 / (4*NUM_TLC59711)) + j) & 65535); } tlc.write(); delay(wait); } } // Input a value 0 to 4095 to get a color value. // The colours are a transition r - g - b - back to r. void Wheel(uint8_t ledn, uint16_t WheelPos) { if(WheelPos < 21845) { tlc.setLED(ledn, 3*WheelPos, 65535 - 3*WheelPos, 0); } else if(WheelPos < 43690) { WheelPos -= 21845; tlc.setLED(ledn, 65535 - 3*WheelPos, 0, 3*WheelPos); } else { WheelPos -= 43690; tlc.setLED(ledn, 0, 3*WheelPos, 65535 - 3*WheelPos); } }
On a connecté les LEDs en serie et puis téléchargé les codes, le résultat est comme ci-dessous:
Semaine 3 et 4
Dans ces deux semaines, on a programmé un code du LED selon le code de Adafruit TLC59711. En groupe de deux LEDs, les LEDs qui dans la même groupe sont liés en série, les connexions entre les différents groupes sont en parallèle. Notre LEDs sont rouges, donc chaque groupe a été connecté à la broche Ri. Dans notre code, les LEDs peuvent allumer et éteindre progressivement, mais pas seulement ça, les groupes peut circuler un par un en même temps.
Le code ci-dessous:
#include "TLC59711.h" #include <SPI.h> #define NUM_TLC59711 1 #define data 11 #define clock 13 Adafruit_TLC59711 tlc = Adafruit_TLC59711(NUM_TLC59711, clock, data); void setup() { Serial.begin(9600); Serial.println("test led"); pinMode(10, OUTPUT); tlc.begin(); tlc.write(); } uint8_t i=0; void loop() { rise(i); down(i); i=i+3; if(i>9) i=0; Serial.println(i); delay(200); } void rise(uint8_t chan) { uint32_t j; Serial.println("rise"); for(j=0; j<65535; j+=100){ tlc.setPWM(chan,j); tlc.write(); } } void down(uint8_t chan) { int32_t j; Serial.println("down"); for(j=65535; j>=0; j-=100){ tlc.setPWM(chan,j); tlc.write(); } } // "100" c'est la vitesse de variation de la luminance. Donc on peut accélérer la variation par augmenter "100" à "1000" ou ralentir la variation par diminuer "100" à "10".
En suite on a compilé notre codes et les a téléchargé à Arduino UNO pour les tester.
Le résultat est ci-dessous:
Un autre façon de connexions utilisant la batterie pour l'alimenter est comme ça:
A cause de la puissance de LED qu'on choisissait est très grande et la luminance est trop forcée, on a changé notre désigne de colis et a choisi nouveaux types de LEDs. Mais les nouveaux types de LEDs sont plus petit que les précédents, donc on a augmenté le nombre de LED à 200.
Semaine 5-8
Dans notre premier dessin: On a décidé utiliser deux contrôleurs TLC59711 pour contrôler 48 groups des LEDs et deux boutons de piles à trois volt pour fournir notre coli. Chaque group contient trois LEDs(orange, vert, jaune) ou deux LEDs(bleu), à cause de la tension nominale entre les LEDs bleu est environ trois volt, mais la tension nominale entre les LEDs orange vert ou jaune est environ deux volt. Et on a fait 24 groups de LEDs en série et les deux 24 groups de LEDs en parallèle, ils partagent la même broche. Mais comme le courant maximale de TLC59711 est 0.6A, on ne peut pas mettre deux série de LEDs en parallèle, 1.2A est très grand pour le contrôleur TLC59711
Dans notre deuxième dessin: On a décidé utiliser seulement un contrôleur TLC5947 pour contrôler 24 groups des LEDs et deux bouton de piles à trois volt pour fournir notre coli. Parce que le contrôleur TLC5947 a 24 chanel et puis on peut contrôler toues les LEDs avec un contrôleur, ça c'est propice à diminuer la dimension de la carte PCB. Mais la luminance de ce dessin n'est pas suffisant, et on a deux capteur aussi, donc six volt n'est pas suffisant pour fournir le coli quand même.
Dans notre troisième dessin: On a décidé utiliser deux contrôleur TLC5947 pour contrôler 48 groups des LEDs et trois bouton de piles à trois volt pour fournir notre coli. Chaque group est liée à une broche. Pour diminuer la dimension de notre carte PCB, on a utilise un LilyPad Arduino et une carte USB comme l'interface périphérique USB. Et quand on a désigné la carte PCB, on a choisi les deux couches, on a mis une partie de fil sur le devant et une autre partie de fil est à l'opposé, on a met les trois bouton de piles à l'opposé aussi.
Le schéma du LilyPad Arduino et Carte USB sont comme ci-dessous:
Notre plan final sont comme ci-dessous:
Semaine 9
Dans cette séance de Projet, on redésigne notre collier. Il y a 16 groups de LEDs dans notre collier, et une type de groupe comme [orange vert jeune; bleu bleu; orange vert jeune], une autre type de groupe comme [bleu bleu; orange vert jeune; bleu bleu], les position de capteurs sont à gauche et à droite de 8 centrales groups des LEDs, entre les deux LEDs, on veut utilise les résistance à 0 ohm pour liaison. Le face de collier est comme ci-dessous:
Pour lier les LEDs avec notre PCB, on veut utilise les fils très fines, leurs largeur sont environ 1mm, et on veut les mettre comme trois couches, 16 des fils côte à côte dans une couche. A la position des capteurs, on veut les mettre sur le dessus des capteurs, en raison de les deux capteurs doivent être près du cou pour mesurer la température et la palpitation. Pour les autres positions, on veut les mettre derrière les LEDs, et on veut utilise le tissu ou quelques choses pour séparer les LEDs et les fils. Le verso et le côté de collier sont comme ci-dessous:
Semaine 10
Après le redésigne de notre collier, on soude l'Atmega328p,un reset, deux capacités, des résistances, un LED testé, un connecteur et des fils dans un circuit pour tester le circuit. Le connecteur est lié avec FTDI qui va relier avec la partie USB pour transmettre le programme d'Atmega328p. Quand on finit la soudure, on utilise l'arduino pour le tester. Si le LED testé allume, le circuit est correct. Après on teste l'Atmega328p, on soude autre composants. Par ailleurs, parce que si on soude les LEDs directement, c'est un peu difficile. Donc on fait un PCB pour mettre des LEDs ensemble.
Semaine 11 et 12
En raison de mauvais circuit, on refait le circuit et le PCB.
On change le schéma de piles dans un autre PCB. Pour mieux connecter les PCB avec le collier, on ajoute deux parties vides. Du coup, on peut passer le collier par la partie vide.
En attendant d'imprimer les PCBs, on étudie les deux capteurs -- DS18B20U et PulseSensor.
PulseSensor est un capteur simple, il n'a pas besoin de circuit de conduite. On utilise un exemple code pour tester notre capteur, il peut réaliser la fonction d'allumer le LED selon le rythme de cœur. Et après on essayera de changer la façon d'allumer pour montrer la changement de rythme de cœur. Le capteur de température DS18B20U est trop petit, donc on fait un PCB pour le souder. Et son circuit de conduite compose par un resistance qui est 42 kohm. Mais on ne trouve pas sa symbol dans l'application Fritzing. Donc on fait sa symbol nous même. D'abord, on trouve sa daille. Et on cherche un composant dans l'application Fritzing qui a la même daille. Ensuite, on export le schéma de ce composant pour le modifier. Finalement, on obtient un symbol qui a la même forme que DS18B20U. Le dernier chose à faire est de modifier les interfaces de ce composant. Selon le datasheet de DS18B20U, on remet toutes les interfaces. Du coup, on obtient le vraiment symbol de DS18B20U.
Le code pour PulseSensor et DS18B20 ensemble est suivant:
#define LED_PIN 6 //led_pin #define ONE_WIRE_BUS 2 // ds18b20_pin #define HEART_PIN A0 //pulse_pin OneWire oneWire(ONE_WIRE_BUS); //define_ds18b20 DallasTemperature sensors(&oneWire); //pass_reference_to_sensor void setup() { Serial.begin(9600); sensors.begin(); } void loop() { //get_pulse_value int heartValue = analogRead(HEART_PIN); //get_temp_value sensors.requestTemperatures(); int tempCValue=sensors.getTempCByIndex(0); //filter int filterValue = filter(heartValue); Serial.println(filterValue); //trans_value_to_rgb_value(0-255) int maphValue = map(constrain(filterValue, 940, 1024), 940, 1024, 0, 255); int maptValue = map(constrain(tempCValue, 35, 40), 35, 40, 0, 255); delay(20); } //filtre int filter (int input) { #define FILTER_SIZE 10 static int filterArray[FILTER_SIZE] = {0}; static int fi = 0; filterArray[fi++] = input; if (fi >= FILTER_SIZE) { fi = 0; } int32_t output = 0; for (int i = 0; i < FILTER_SIZE; i++) { output += filterArray[i]; } return int(output / FILTER_SIZE); }
Semaine 13
Comme les cartes de LED que on a déjà fait, on les soudés.
Pour les piles, on les met comme ci-dessous
Et puis on re-soude tous les composants de notre nouveau carte principale
Semaine 14
Le collier sur un modèle ras-du-cou est difficile à réaliser avec les circuits imprimés disponibles. Un modèle de type collerette est plus adapté avec deux rangées de barres de LEDs. Le schéma ci-dessous donne une idée d'un tel collier. Le circuit imprimé principal serait situé derrière le cou et masqué par un noeud décoratif, les piles étant fixées sur les rubans du noeud.
Démonstration du fonctionnement de la rangée inférieure du collier : Media:2018 P19 demicollier.mp4.
Zoom sur les LEDs : Media:2018 P19 demicollierzoom.mp4.
Démonstration du fonctionnement du collier avec 2 rangées : Media:2018 P19 collier.mp4.
Pour la partie de programmer ce colie avec les deux capteurs, tout d'abord, il faut reconfirmer les pins liées entre les deux contrôleurs et le microcontrôleur, et les pins liées entre les capteurs et le microcontrôleur. Et puis il faut ajouter 4 bibliothèques:
bibliothèque de TLC5947 bibliothèque1 du capteur de température bibliothèque2 du capteur de température bibliothèque du capteur de rythme cardiaque
pour contrôler notre capteurs et contrôleurs.
Selon de PCB de notre carte principale, on sais que le pin numéro 3 de chaque contrôleur est liée à la même pin de Atmega328p, c'est PD5. Et le numéro du pin de clock est 4 de chaque contrôleur, liée à PD4 de Atmega328p. Et le numéro du pin de registre est 30 de chaque contrôleur, liée à PD6 de Atmega328p. Donc on défini
//nombre du contrôleur #define NUM_TLC5974 2 //declaration de TLC5947 #define data 4 #define clock 5 #define latch 6 #define oe -1
Pour les deux capteurs, selon les datasheets de chaque capteur et microcontrôleur.
La datasheet de Atmega328p
La datasheet de TLC5947
Et le capteur de rythme cardiaque faut lier à un pin de signal analogique de microcontrôleur, on choisi PD7.
Le capteur de température faut lier à un pin de signal numérique de microcontrôleur, on choisi PC0.
Parce qu'on a pas soudé les LEDs en fonction de l'ordre des pins de les deux contrôleurs, ils s'allument par hasarde, donc on crée une tableau pour contrôler tous les LEDs s'allumer un par un
Et en suite, on liée les deux capteurs avec la carte principale. On veut réaliser la fonction fondamentale de notre projet, c-t-à dire les LEDs doivent s'allumer ou s'éteindre en fonction de la température et le pouls, en fonction de différents valeurs viennent de les deux capteurs.
Quand on teste le capteur de rythme cardiaque, comme c'est un capteur qui transporte un signal analogique, on trouve que les valeurs viennent directement de capteur ne sont pas très stables, donc pour faire les valeurs plus stables, on écrit un filtre pour filtrer les valeurs
//filtre int filtre (int input) { #define FILTER_SIZE 10 static int filterArray[FILTER_SIZE] = {0}; static int fi = 0; filterArray[fi++] = input; if (fi >= FILTER_SIZE) { fi = 0; } int32_t output = 0; for (int iff = 0; iff < FILTER_SIZE; iff++) { output += filterArray[iff]; } return int(output / FILTER_SIZE); }
Après cette filtre, la valeur normale pour une personne saine qui a environ 23 ans(+-2 ans) vient notre capteur de rythme cardiaque est environ 500(+-50), on pose la intervalle de la valeur normale est entre 400 et 600.
Parce que le capteur de température est un capteur numérique, donc on n'a pas filtrer ses valeurs. Mais comme il y a quelque perte d'énergie dans l'air, la valeur normale pour une personne saine n'est pas 37 dégrée, elle est un peu inférieur de 37 dégrée, environ 35 ou 36 dégrée.
Notre idée principale est quand la valeur de température est supérieur à la valeur normale, tous les LEDs s'allument durée 30 secondes pour l'alarme, et quand la valeur de température est normale, tous les LEDs s'allument progressivement et s'étendent progressivement un par un en fonction de la valeur rythme cardiaque. Si la valeur de rythme cardiaque est grande, les LEDs s'allument progressivement et s'étendent progressivement rapide, sinon les LEDs s'allument progressivement et s'étendent progressivement lentement. Ce programme vérifie la température 2 fois par minute(30 secondes par fois) et vérifie la rythme cardiaque chaque 0.4 secondes.
Quand la température est normale
Média:LEDs s'allument en fonction de pouls.mp4
Quand la température n'est pas normale
Les codes pour réaliser les fonction est comme ci-dessous
#include <OneWire.h> #include <DallasTemperature.h> #include "Adafruit_TLC5947.h" #define ONE_WIRE_BUS PC0 // ds18b20_pin #define HEART_PIN PD7 //pulse_pin #define NUM_TLC5974 2 //nombre du controleur //declaration de TLC5947 #define data 4 #define clock 5 #define latch 6 #define oe -1 Adafruit_TLC5947 tlc = Adafruit_TLC5947(NUM_TLC5974, clock, data, latch); OneWire oneWire(ONE_WIRE_BUS); //define_ds18b20 DallasTemperature sensors(&oneWire); //pass_reference_to_sensor void setup() { Serial.begin(9600); sensors.begin(); tlc.begin(); if (oe >= 0) { pinMode(oe, OUTPUT); digitalWrite(oe, LOW); } } uint8_t i=0; uint8_t iarray[48]={7,23,1,5,17,22,2,18,0,20,8,11,19,13,3,9,6,16,15,4,10,45,40,37,36,31,33,42,47,26,24,30,25,43,44,27,34,41,35,39,38,46,28,32,29,14,12,21}; //la fonction principale void loop() { //prendre la valeur de temperature sensors.requestTemperatures(); float tempCValue=sensors.getTempCByIndex(0); Serial.println(tempCValue); //si la temperature n'est pas normale if(tempCValue>37) { for(int ii=0;ii<48;ii++) { alarme(iarray[ii],4095); } delay(30000); } //sinon else { rise(iarray[i],4095); down(iarray[i],4095); i=i+1; if(i>47) i=0; Serial.println(i); delay(200); } } //LED_allumer void rise(uint8_t chan, uint16_t pwm) { //prendre la valeur de pulse int heartValue = analogRead(HEART_PIN); //filtre la valeur de pulse int filterValue = filter(heartValue); Serial.println(filterValue); uint32_t j; Serial.println("rise"); for(j=0; j<pwm; j+=filterValue) { tlc.setPWM(chan,j); tlc.write(); } } //LED_eteindre void down(uint8_t chan, uint16_t pwm) { //prendre la valeur de pulse int heartValue = analogRead(HEART_PIN); //filtre la valeur de pulse int filterValue = filter(heartValue); Serial.println(filterValue); int32_t j; Serial.println("down"); for(j=pwm; j>=0; j-=filterValue) { tlc.setPWM(chan,j); tlc.write(); } } //LED_alarme void alarme(uint8_t chan,uint16_t pwm){ tlc.setPWM(chan,pwm); tlc.write(); } //filter int filter (int input) { #define FILTER_SIZE 10 static int filterArray[FILTER_SIZE] = {0}; static int fi = 0; filterArray[fi++] = input; if (fi >= FILTER_SIZE) { fi = 0; } int32_t output = 0; for (int iff = 0; iff < FILTER_SIZE; iff++) { output += filterArray[iff]; } return int(output / FILTER_SIZE); }
Il reste à finir le collier avec des rubans (par exemple) et un système de fermeture. Il faut aussi souder les capteurs, décorer la carte principale et changer la batterie par 4 piles.