Maxime VIDAL

exemple arduino barrière :

  /*
- En début de boucle principale, le feu piéton est toujours rouge,
- Lorsqu'on détecte l'appui sur le bouton on lance la procédure d'ouverture de
la barrière :
  - la barrière s'ouvre, le mouvement dure 3 secondes.
  - Le feu passe au vert.
  - Le système est bloqué pendant 5 secondes pour laisser passer les piétons.
  - Le feu passe au rouge.
  - la barrière se ferme, le mouvement dure 3 secondes.
  - Le système est bloqué pendant 5 secondes pour laisser passer les voitures.
  - Fin de la procédure d'ouverture de la barrière.
- On attend 0.1 seconde et on recommence la boucle. Ce 1/10eme de seconde va
bien pour tester un appui franc sur le bouton.
 
Mon servo a un grand nombre d'heures de vol (au sens propre) il nécessite un
décalage de 20 deg pour ne pas couinner bruyament quand il est en bout de course
et une correction de +17% sur la consigne "pos" afin de faire de vrais degrés. 
*/
 
 
#include <Servo.h> 
 
const int bouton    = 2;     // Numero de pin du bouton.
const int led_rouge = 3;     // Numero de pin de la LED rouge.   
const int led_verte = 4;     // Numero de pin de la LED verte.
const int servo     = 9;     // Numero de pin du servo.
const int DEG_CORR  = 1.17;  // Facteur étalonnage du mouvement angulaire (défaut 1).
int pos             = 20;    // Position servo, compteur utilisé dans les boucles.
int etat_bouton     = 0;     // Variable d'état du bouton.
 
Servo myservo;     // Créé un objet de type servo et nommé "myservo".
 
void setup() 
{ 
  pinMode(led_rouge, OUTPUT);
  pinMode(led_verte, OUTPUT);
  pinMode(bouton, INPUT); 
  myservo.attach(servo);    // attache la pin du servo sur l'objet "myservo".
  Serial.begin(9600);       // Initialise la communication avec l'ordinateur
} 
 
 
void loop() 
{
  // Initialement le feu est rouge.
  digitalWrite(led_verte, LOW);     
  digitalWrite(led_rouge, HIGH);
  // Et la barrière est baissée.
  myservo.write(pos*DEG_CORR);
 
  // Lit l'état du bouton et stocke le résultat dans etatBouton :
  etat_bouton = digitalRead(bouton);
 
  // Si etatBouton est égal à HIGH alors début de la procédure d'ouverture :
  if (etat_bouton == HIGH) {
 
    Serial.print("demande d'ouverture\n" ); // envoie l'information à l'ordinateur                      
 
    // La barrière s'ouvre.
    for(pos = 20; pos < 110; pos += 1)  // compteur de 0 à 90 deg. Incréments : 1 deg.
    {
      myservo.write(pos*DEG_CORR);    // consigne de position du servo 
      delay(33);                      // 33ms/deg. durée de mouvement : env. 3 sec.
    } 
 
    // Le feu passe au vert.
    digitalWrite(led_rouge, LOW);
    digitalWrite(led_verte, HIGH);
 
    // 5 sec. pour laisser passer les piétons.
    delay(5000);
 
    // Le feu passe au rouge.                     
    digitalWrite(led_verte, LOW);     
    digitalWrite(led_rouge, HIGH);
 
    // La barrière se ferme.                        
    for(pos = 110; pos > 20; pos -=1)
    {                                
      myservo.write(pos*DEG_CORR);
      delay(33);
    }
    // 5 sec. pour laisser passer les voitures.
    delay(5000);
  }
 
  // tempo de 0.1 seconde avant de relancer la boucle principale et tester le bouton
  delay(100); 
}

Code de vendredi

int val;
int moteurpin=A1;
int analogpin=A0;
float valout;
 
 
 
 
void setup()
{
 pinMode(moteurpin, OUTPUT); 
 pinMode(analogpin,INPUT);
 Serial.begin(9600);       // Initialise la communication avec l'ordinateur
}
 
 
void loop()
{
 val=analogRead(analogpin);
 valout=0.25*val;
 Serial.print("lecture = "); // envoie l'information à l'ordinateur
 Serial.print(val); // envoie l'information à l'ordinateur
 Serial.print(", valeur = "); // envoie l'information à l'ordinateur
 Serial.print(valout); // envoie l'information à l'ordinateur
 Serial.print("\n"); // envoie l'information à l'ordinateur
 
}