Nous créons une lampe qui doit être capable de réguler sa luminosité en fonction de la lumière du jour pour éclairer parfaitement a toute heure de la journée. Ce projet peut être utilisé à plus grande échelle que celle d'une simple lampe de bureau, on pourrait l'utiliser également pour éclairer une maison dans son intégralité, ainsi qu'un jardin ( ou dans le programme nous pourrions y intégrer un détecteur de mouvements pour déclencher l'allumage des lumières ), les rues d'une ville, des écoles et encore pleins d'autres projets possibles. Mais pour cela il faudra adapter le programme selon leur utilité
C’est une lampe en formes d’octogone avec 6 leds placer à l’intérieur sur les parois et un pied pour pouvoir la poser avec un couvercle fin fait en 3D. Les 6 leds seront poser sur des platines et alimenté par une pile. Le câblage et la carte seront placer au fond de la lampe. Un bouton poussoir servira à allumer et éteindre la lampe. Elle adaptera son intensité de lumière en fonction de la lumière de jour.
Au cours de l’année, nous avons travaillé sur un projet de lampe éphémère, pour cela nous avons utilisé ces éléments :
Pour relier tout ce système nous avons soudé tous les câbles nécessaires au bon fonctionnement du système sur une plaque d'essais.
6 | Led blanche | L5W10K |
1 | Carte arduino uno | ATMega328 |
1 | photorésistance | GL5528 |
1 | plaque d'essais | BCS100 |
Nombre | Désignation | Observation |
---|
Ce programme sert à faire varier la luminosité des dels en fonction de la lumière déjà présente dans l'environnement où se trouve la lampe grâce à la photorésistance et, avec le bouton poussoir, nous avons la possibilité d'allumer et éteindre la lampe.
Ce programme sert a tester le bouton poussoir avec une del.
int etat; void setup() { pinMode(8, INPUT_PULLUP); pinMode(9, OUTPUT); etat=0; } void loop() { if (digitalRead(8)==LOW) { // le bouton semble actionné? delay(10); // courte attente if (digitalRead(8)==LOW) { // le bouton est effectivement actionné! while (digitalRead(8)==LOW) delay(10); // longue attente jusqu'à ce que le bouton soit relâché // changement de l'état de la mémoire if (etat==1) etat=0; else etat=1; } } // visualisation de l'état de la mémoire if (etat==0) digitalWrite(9, LOW); else digitalWrite(9, HIGH); }
Ce programme sert a tester différentes variations de luminosité sur 3 dels.
int etat=0; void setup() { pinMode(8, INPUT_PULLUP); pinMode(9, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); Serial.begin(9600); } void loop() { if (digitalRead(8)==LOW) { // le bouton semble actionné? delay(10); // courte attente if (digitalRead(8)==LOW) { // le bouton est effectivement actionné! while (digitalRead(8)==LOW) delay(10); // longue attente jusqu'à ce que le bouton soit relâché // changement de l'état de la mémoire if (etat==1) etat=0; else etat=1; } } // visualisation de l'état de la mémoire if (etat==1) { Serial.println("système en marche"); delay(200); int luminosite=analogRead(0); // Valeur allant de 0 à 1023 Serial.println(luminosite); int eclairage; // Valeur a définir entre 0 et 255 if ( 20>luminosite && luminosite>0 ) { eclairage=20; } if ( 60>luminosite && luminosite>20 ) { eclairage=80; } if ( 500>luminosite && luminosite>60 ) { eclairage=220; } analogWrite(3,eclairage); //analogWrite(3,luminosite/4); /* int seuil=500; if (luminosite>seuil) { analogWrite(3,20); //digitalWrite(2, HIGH); //digitalWrite(3, LOW); } else { analogWrite(3,200); //digitalWrite(3, HIGH); //digitalWrite(2, LOW); } */ } else { Serial.println("système à l'arrêt"); delay(200); digitalWrite(2, LOW); digitalWrite(3, LOW); } }
Ce programme utilise un calcul de la luminosité pour faire différentes variations de l'éclairage des 6 dels .
int etat=0; void setup() { pinMode(8, INPUT_PULLUP); pinMode(9, OUTPUT); pinMode(5, OUTPUT); pinMode(3, OUTPUT); pinMode(6, OUTPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); } void loop() { if (digitalRead(8)==LOW) { // le bouton semble actionné? delay(10); // courte attente if (digitalRead(8)==LOW) { // le bouton est effectivement actionné! while (digitalRead(8)==LOW) delay(10); // longue attente jusqu'à ce que le bouton soit relâché // changement de l'état de la mémoire if (etat==1) etat=0; else etat=1; } } if (etat==1) { Serial.println("système en marche"); delay(200); int luminosite=analogRead(0); // Valeur allant de 0 à 1023 Serial.println(luminosite); int eclairage = map(luminosite, 850, 300, 255, 0); if (eclairage>255) eclairage=255; if (eclairage<0) eclairage=0; Serial.println(eclairage); analogWrite(3,eclairage); analogWrite(5,eclairage); analogWrite(6,eclairage); analogWrite(9,eclairage); analogWrite(10,eclairage); analogWrite(11,eclairage); } else { Serial.println("système à l'arrêt"); delay(200); digitalWrite(5, LOW); digitalWrite(3, LOW); digitalWrite(6, LOW); digitalWrite(9, LOW); digitalWrite(10, LOW); digitalWrite(11, LOW); } }
Les liens pied_de_lampe.STL et pied_de_lampe.SLDPRT permettent de télécharger l'exemple ci-dessus.
Les liens prototype.STL et prototype.SLDPRT permettent de télécharger l'exemple ci-dessus.
Vidéo du projet fini
Eclairage plafonnier
Nous avons terminé notre projet dans les temps. On a pu rencontrer quelques problèmes durant la conception de notre lampe éphémère tels que des problèmes de programmation, un problème d'impression pour notre lampe, des problèmes de câblage durant le soudage entre les dels, les résistances, les plaques et la carte arduino uno et également des problèmes de capteur.