Go Down

Topic: un bouton , un servo, un arduino, plus de cerveau!!! (Read 2 times) previous topic - next topic

moelleux

bonjour , nouveau blocage!
j' ai intégré une deco lumineuse, qui fonctionne , pour l'instant la fonction est simple, mais par contre la lecture de mon bouton se fait en fin de boucle lumineuse, je voudrais donc attacher une fonction interupt, mais je crois savoir qu'on ne peut pas utiliser delay avec,
voici le code
Code: [Select]
#include <Servo.h>

Servo myservo; 

const int buttonPin = 2;     // bouton sur pin 2
const int relayreed =  12; // led 12 sortie pour reed appareil photo

int buttonState = 0;

int ledPins[] = {14,15,16,17,18,19,8,10,11,};

void setup()
{
 
for(int i = 0; i < 9; i++){       
      pinMode(ledPins[i],OUTPUT);

  pinMode(relayreed, OUTPUT);
  pinMode(buttonPin, INPUT);
  myservo.attach(9);  // servo sur pin 9
  myservo.write(45); //initialise le servo en position repos zero
  delay(20); // pour stabilisation
  }                                   

}


void loop()                     
{
  oneAfterAnotherLoop();   


buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {  // bouton etat haut detecté 
    digitalWrite(relayreed, HIGH);  // led ON
    myservo.write(178);       // va en butée inverse     
    delay(250);  // stabilisation 250 ms
    digitalWrite(relayreed, LOW);  // led OFF
    myservo.write(40); // retour en zero
    delay(20); // pour stabilisation
    {digitalWrite(ledPins[0,1,2,3,4,5,6,7,8,9], HIGH);  //allume tout
    delay(100); }
    {digitalWrite(ledPins[0,1,2,3,4,5,6,7,8,9], LOW);  //etteind tout
    delay(100); }
    {digitalWrite(ledPins[0,1,2,3,4,5,6,7,8,9], HIGH);  //allume tout
    delay(100); }
    {digitalWrite(ledPins[0,1,2,3,4,5,6,7,8,9], LOW);  //etteind tout
    delay(100); }
    {digitalWrite(ledPins[0,1,2,3,4,5,6,7,8,9], HIGH);  //allume tout
    delay(100); } 
    {digitalWrite(ledPins[0,1,2,3,4,5,6,7,8,9], LOW);  //etteind tout
    delay(100); }
 
}}

void oneAfterAnotherLoop(){
  int delayTime = 300;
  for(int i = 0; i <= 8; i++){
    digitalWrite(ledPins[i], HIGH); 
  delay(delayTime);              }                                 

  for(int i = 8; i >= 0; i--){ 
    digitalWrite(ledPins[i], LOW); 
    delay(delayTime);
  }                                         
                                     
}

en plus je ne parvient pas a faire un effet flash (tout les led allumée /eteintes 3x,

bref je coince  et si une bonne ame qui passe par là peut"corriger ma copie" ca m'aiderais grandement
Merci

moelleux

bonjour, bein je continue...maintenant que j'ai intégré une interruption, j'ai bien réussi a récupérer mon impulsion mais je n'arrive pas a mes fin concernant le servo,

Code: [Select]

//leds ok relais ok mais pas servo
#include <Servo.h>
Servo myservo; 
const int relayreed =  12; // pin 12 sortie pour reed appareil photo;
int impact = 0;
int ledPins[] = {14,15,16,17,18,19,8,10,11,};

void setup()
{
  attachInterrupt( 0, mouche, RISING );
 
for(int i = 0; i < 9; i++){       
      pinMode(ledPins[i],OUTPUT);

  pinMode(relayreed, OUTPUT);
 
 
  myservo.attach(9);  // servo sur pin 9
  myservo.write(45); //initialise le servo en position repos zero
  }                                   

}


void loop()                     
{
if (impact == 1) { // si un choc a été détecté
photo();
}
{
  oneAfterAnotherLoop();   
}}

void photo(){
  digitalWrite(relayreed, HIGH); 
    myservo.write(178);       // va en butée inverse
   
  delay(20); // pour stabilisation
   myservo.write(45);       // retour
   
  digitalWrite(relayreed, LOW);  // led OFF
  delay(20); // pour stabilisation
impact = 0; 
}
   
void mouche(){
  impact = 1;
}
 
 
void oneAfterAnotherLoop(){
  int delayTime = 100; //the time (in milliseconds) to pause between LEDs
                       //make smaller for quicker switching and larger for slower

//Turn Each LED on one after another
  for(int i = 0; i <= 8; i++){
    digitalWrite(ledPins[i], HIGH);  //Turns on LED #i each time this runs i
    delay(delayTime);                //gets one added to it so this will repeat
  }                                  //8 times the first time i will = 0 the final
                                     //time i will equal 7;

//Turn Each LED off one after another
  for(int i = 8; i >= 0; i--){  //same as above but rather than starting at 0 and counting up
                                //we start at seven and count down
    digitalWrite(ledPins[i], LOW);  //Turns off LED #i each time this runs i
    delay(delayTime);                //gets one subtracted from it so this will repeat
  }                                  //8 times the first time i will = 7 the final
                                     //time it will equal 0
                                     
                                     
}



donc j'ai mes p'tites lumières, ma photo mais pas de relevage,

moelleux

ha non en fait la photo ne se fait qu'a la fin de la pattern lumineuse, pas d'interruption  =( =( =(
comprend pô!!!!!

Go Up