ENIB 2020 : trouver la lumière : Différence entre versions
(→construction du prototype) |
|||
Ligne 34 : | Ligne 34 : | ||
[[Fichier:Entier 2.jpg|200px]] | [[Fichier:Entier 2.jpg|200px]] | ||
+ | |||
+ | ==schéma électronique== | ||
+ | |||
+ | câblage des photo-résistances | ||
+ | [[Fichier:Cablage ldr.jpg|200px]] | ||
+ | câblage du bouton | ||
+ | [[Fichier:Cablage btn vrai.png|200px]] | ||
+ | câblage du cervo moteur | ||
+ | [[Fichier:Cervo.jpeg|200px]] | ||
==Code== | ==Code== |
Version du 17 janvier 2020 à 13:55
Sommaire
photo de l'équipe
Que fait ce projet ?
Nous sommes un groupe de 4 étudiants en 3ème année à l'ENIB et pour notre inter-semestre nous réalisons un hackathon avec l'association des petits débrouillards. Nous avons donc choisi de réaliser une machine permettant de déterminer à partir d'un endroit précis le position du soleil. Ce système peut être utilisé avant de placer des panneaux solaires ou les fours solaire afin de pouvoir optimiser au mieux leur rendement. Pour cela nous allons utiliser des résistances photo sensible.
Liste des composants
- une carte Arduino
- 2 résistances de 15 kΩ
- un moteur pas à pas
- 2 photo résistances
- un bouton poussoir
- des câbles
- breadboard
- une boite pour servir de support au moteur
- un socle incliné pour poser les photo résistances
construction du prototype
Nous avons donc commencer par réaliser une boite grâce à la découpeuse laser avec une encoche rectangulaire sur la face du haut pour placer le moteur ainsi qu'une encoche circulaire sur un coté pour placer le bouton.
Nous avons ensuite fabriqué le bras pour maintenir les photo-résistances
On a ensuite isoler les 2 photo-résistances afin qu'elles puissent cibler précisément le soleil ou la source lumineuse dans notre cas.
Enfin nous avons assemblé le tout
schéma électronique
câblage des photo-résistances câblage du bouton câblage du cervo moteur
Code
#include <Servo.h> Servo myservo; int ldrPin1 = A0; int ldrValue1 = 0; //valeur de ldr 1 int ldrPin2 = A1; //ldr 2 int ldrValue2 = 0; //valeur de ldr 2 int btn_pin = 8; //valeur par defaut du bouton int delta =5; int pos = 0; void setup() { Serial.begin(9600); myservo.attach(9); pinMode(btn_pin,INPUT); } void loop() { // read the value from the ldr: ldrValue1 = analogRead(ldrPin1); ldrValue2 = analogRead(ldrPin2); // on lit une première fois les valeurs int sub=ldrValue1-ldrValue2; int buttonState = digitalRead(btn_pin); Serial.println(buttonState); if (buttonState == HIGH){ if(sub<0){ while((-delta>sub || sub>delta)&&(sub<0)){ pos+=1; myservo.write(pos); // tell servo to go to position in variable 'pos' delay(20); ldrValue1 = analogRead(ldrPin1); ldrValue2 = analogRead(ldrPin2); sub=ldrValue1-ldrValue2; delay(15); }} else{ while((-delta>sub || sub>delta)&&(sub>0)){ pos-=1; myservo.write(pos); // tell servo to go to position in variable 'pos' delay(20); ldrValue1 = analogRead(ldrPin1); ldrValue2 = analogRead(ldrPin2); sub=ldrValue1-ldrValue2; delay(15); } }} }