Servomoteurs et ldr

a marqué ce sujet comme résolu.

Bonjour, j’ai comme projet de construire une porte automatique qui s’ouvre quand il fait jour et se ferme quand il fait nuit. Mais le prix totale du projet est un peu élevé, je voulais donc être sur de mon programme avant d’acheter le matériel :) Voici le code :

include <Servo.h>

Servo myservo;

const int ldr = 0; //ldr au pin analog 0 int valLdr = 0; // valeur de la resistance de la ldr entre 0 et 1024

void setup() { pinMode(ldr, INPUT); } void loop() { valLdr = analogRead(ldr);

if (valLdr >= //mettre ici la valeur d’obscurité téstée, entre 0 et 1024) { myservo.attach(2); //myservo est sur le pin 2 de l’arduino myservo.writeMicroseconds(1700); //recul… delay(1020); //…pendant 1.02 secondes myservo.detach(); //detach myservo } else if (valLdr <= //metre ici la valeur de luminosité téstée, entre 0 et 1024) { myservo.attach(2); //myservo est sur le pin 2 de l’arduino myservo.writeMicroseconds(1300); // avance… delay(1020); //…pendant 1.02 secondes myservo.detach(); } delay(500); } je n’ai pas encore les valeurs de la ldr quand il fait nuit ou jour, je les ai donc remplacées par des commentaires… Merci de vos réponses :)

+0 -0

Il existe des balises pour mettre en forme ton code, je te conseil de les utiliser pour permettre une meilleure lecture de ton post.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Exemple : 
#include <Servo.h>
Servo myservo;

const int ldr = 0; //ldr au pin analog 0 int valLdr = 0; // valeur de la resistance de la ldr entre 0 et 1024

void setup() { pinMode(ldr, INPUT); } void loop() { valLdr = analogRead(ldr);

if (valLdr >= //mettre ici la valeur d’obscurité téstée, entre 0 et 1024) 
{ 
myservo.attach(2); //myservo est sur le pin 2 de l’arduino 
myservo.writeMicroseconds(1700); //recul… 
delay(1020); //…pendant 1.02 secondes 
myservo.detach(); //detach myservo 
} 
else if (valLdr <= //metre ici la valeur de luminosité téstée, entre 0 et 1024) 
{ 
myservo.attach(2); //myservo est sur le pin 2 de l’arduino 
myservo.writeMicroseconds(1300); // avance… 
delay(1020); //…pendant 1.02 secondes 
myservo.detach(); 
} 
delay(500); 
}

Je pense que tu check trop souvent les valeurs, tu risque de consommer beaucoup d’energie pour pas grand chose là ?

+1 -0

QuantCloud: Dans ton utilisation tu sauras faire la différence entre la lumière du jour et celle d’une lampe ? Tu ne risque pas de forcer le moteur si tu pousses/tires trop dans le vide (c’est-à-dire si la porte est bloqué) ?

Je pense que tu check trop souvent les valeurs, tu risque de consommer beaucoup d’energie pour pas grand chose là ?

Blackline

En effet, vérifier toutes les 0.5s c’est excessif (je ne sais pas si ça à vraiment beaucoup d’impact sur la batterie pour l’usage actuel, et par rapport à la consommation du servomoteur). Il ne faudrait-il pas le faire toutes les 15 secondes, et faire la vérification 3 fois de suite avant de ce décider à fermer la porte ? (Pour éviter de faire : « jour, nuit, jour, nuit, jour » toutes les secondes). Et peut-être ajouter un cooldown avant le prochain changement.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte