Automate pour prise de vues

Accueil Forums Electronique Automate pour prise de vues

Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • #197
    fabien
    Maître des clés

    Au Fab-Lab nous avons eu l’idée de créer un support pour nous aider a prendre des prises de vue des différents objets réalisé.
    notre besoin :

    Prendre diverses vue d’un objet : une plateforme tournera de 90° à chaque appui de bouton.

    Pour ce faire, nous avons utilisé une carte arduino nano, avec la carte support (Funduino. elle facilite les branchements sur la carte), un servo-moteur 180°, et pour finir, un bouton poussoir récupéré sur une vielle unité centrale.

    Voici le code que nous avons réalisé :

    #include <Servo.h>
    #include<Bounce2.h>
    
    Servo myservo;
    Bounce bouton;
    
    bool boutonRelache ; //valeur pour éviter l'appui long sur le bouton
    
    //déclaration des variables
    int pinBP =4;        //branchement du bouton sur le pin 2 de l'arduino
    int pinLed =8;    // branchement de la LED (témoin) sur le pin 3 de l'arduino
    int pinServo = 9;    //branchement du servomoteur sur la pin 9 de l'arduino
    int posit;           //position du servomoteur
    
    void setup()
    {
      //initialisation des variables
      pinMode(pinBP, INPUT_PULLUP); // normalement à +5v
      // definition des paramètres de l'objet Bounce
          bouton.attach(pinBP);   // la broche du bouton poussoir
          bouton.interval(20); // l'intervalle de temps en ms
      pinMode(pinLed, OUTPUT); //on déclare la fonction sortie sur la pin de la LED
      myservo.attach(pinServo); //on déclare la pin du servomoteur
      myservo.write(posit); //positionnement du servo moteur à 0
    }
    
    void loop(){
      
      digitalWrite(pinLed,LOW); //avoir la led éteinte à chaque début de loop
      
      bouton.update(); //mise a jour du code bounce a chaque loop
      int value = bouton.read(); //récupérer l'etat de la led dans ce loop
      
      if (value == 0) //si la led est sur low 
      {
        if (!boutonRelache)
        {
          boutonRelache = true;
        }
      }else{
        if (boutonRelache){
          boutonRelache=false;
          digitalWrite(pinLed,HIGH); //on allume la led tant qu'on appui
          switch (posit) {
          case 0:
            posit = 90;
            break;
          case 90:
            posit = 180;
            break;
          case 180:
            posit = 0;
            break;
          default:
          Serial.print("erreur case");
          }
        myservo.write(posit); //on tourne le servomoteur
        delay(500);
        }
      }
    }
    
Affichage de 1 message (sur 1 au total)
  • Le forum ‘Electronique’ est fermé à de nouveaux sujets et réponses.