ENIB 2020 : trouver la lumière
Révision datée du 17 janvier 2020 à 13:14 par Trouver la lumière (discussion | contributions) (→construction du prototype)
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. 200px
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); } }} }