Probleme de programmation

Les cartes Arduino, les platines

Probleme de programmation

Message non lude Naissim » Ven 25 Avr 2014 21:32

Bonjour, je souhaite effectuer le programme suivant:
un capteur IA détecte mon chat quand celui va dehors, une LED s'allume alors et une barrière tourne à 90° à l'aide d'un servomoteur. Cependant, avec les codes utilisé ci dessous, la LED s'allume quand le chat passe mais le servomoteur ne fait pas tourner la barrière (le servo fonctionne quand il est tout seul). Pouvait m'aider à trouver une solution. Merci.

#include <Servo.h>
Servo myservo; // On définit le servomoteur
const int buttonPin = 2;//Le bouton-poussoir est connecté à la pin 2
int IRPin = 0; // le capteur est connecté à la pin a0 et
// au 5 v et à la masse
int buttonState = 0;
int pos=0;
int IRmesure; // la valeur lue de 0 à 1023
int pin_son = 11; // le buzzer est relié à la pin 11
int MI= 330; // la note jouée par le buzzer
int nblect=3; // nb de lectures faites, on va faire une moyenne
int moyenne=0;
int seuil = 130 ; // si la valeur analogique lue est supérieure à 130
// on déclenchera le buzzer
unsigned long TopCompteur;
int ChatIci;
int led = 13; //La led est connecté à la pin 13
void setup(void) {
myservo.attach(10);
pinMode(buttonPin, INPUT);// On met le bouton-poussoir en entré
pinMode(led, OUTPUT);//On met la Led en sortie
Serial.begin(19200);
ChatIci = 0;
}
void loop(void) {
int i;
moyenne=0; // on va faire la moyenne de plusieurs mesures
for (i=0 ; i < nblect ; i++) {
moyenne = moyenne + analogRead(IRPin);
// le capteur ne peut pas mesurer plus vite
// il faut attendre entre deux mesures
delay(40);
}
IRmesure = moyenne / nblect;
Serial.print("Mesure = ");
Serial.println(IRmesure);
if (IRmesure > seuil) { // chat proche
// Dans le cas où on vient de le détecter, on initialise le compteur
if (ChatIci == 0) {
TopCompteur = millis(); ChatIci = 1;};
} else { ChatIci = 0; sonnette_off; } // Le chat n'est plus là
;
if ((ChatIci==1)&(millis()-TopCompteur)<2000){
digitalWrite(led, HIGH);
delay(4000);

+
for(pos=0;pos<135;pos += 1){
myservo.write(pos);
delay(20);
}

buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {

for(pos=135;pos<180;pos += 1){
myservo.write(pos);
delay(20);}

delay(12000);
for(pos=180;pos>0;pos -= 1)
{
myservo.write(pos);
delay(20);
;
}}}

if ((ChatIci==1) & (millis()-TopCompteur) > 10000) { // Là, ça fait 10 secondes qu'il est là
sonnette_on() ;
delay(5000); //Le buzzer sonne pendant 5 seconde puis toute les 5 secondes il sonne 5 seconde

for(pos=0;pos<135;pos+=1){
myservo.write(pos);
delay(20);
}


digitalWrite(led, LOW);// La Led s'éteint car le chat est rentré donc cela nous avertit que le chat est dans la maison
sonnette_off(); //le buzzer s'éteint
delay(2000);}
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
myservo.attach(10);
for(pos=180;pos>0;pos-=1)
{myservo.write(pos);
delay(20);
}

delay(12000);

for (pos=0;pos=135;pos+=1)
{myservo.write(pos);
delay(20);
}


}}
//loop
//fonctions////////////
void sonnette_on() {
tone (pin_son,MI);
}
void sonnette_off() {
noTone (pin_son);
}
Naissim
 
Messages: 5
Inscription: Ven 15 Mar 2013 10:06

Retourner vers Arduino

Qui est en ligne

Utilisateurs parcourant ce forum: Exabot [Bot] et 1 invité