Séquenceur de solénoïdes

De Centre de Ressources Numériques - Labomedia
Révision de 10 décembre 2014 à 14:53 par Mushussu (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Description du projet

Réaliser un séquenceur basique à base de solénoïdes.

Cecile-babiole-solenoide-0.jpg Cecile-babiole-solenoide-1.jpg Cecile-babiole-solenoide-2.jpg

Matériel utilisé

  • Ordinateur avec Arduino installé
  • Carte Arduino
  • Câble USB
  • Platine d'essai
  • 3 solénoÏdes

Montage

Montage solenoides.jpg

Script Arduino

// chaine de 3 sequences rythmiques pour 3 solenoides
  
const int ledPin = 13; // Numéro du port pour la  LED
const int soleno1 = 9;
const int soleno2 = 8;
const int soleno3 = 7;
int tempo = 100;
int pas = 0;
int maxpas = 16;
int sol1[] [16]= {
  { 1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 }, // partition du solenoide 1 sequ 1
  { 1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0 }, // partition du solenoide 1 sequ 2
  { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1 }  // partition du solenoide 1 sequ 3
};
int sol2[][16] = {
  { 0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0 }, // partition du solenoide 2 sequ 1
  { 0,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0 }, // partition du solenoide 2 sequ 2
  { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1 }  // partition du solenoide 2 sequ 3
};
int sol3[] [16]= {
  { 0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0 }, // partition du solenoide 3 sequ 1
  { 0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0 }, // partition du solenoide 3 sequ 2
  { 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1 }  // partition du solenoide 3 sequ 3
};
int seq = 0;
  
void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(soleno1, OUTPUT);
  pinMode(soleno2, OUTPUT);
  pinMode(soleno3, OUTPUT);  
}
  
void loop(){
  // chainage des sequences
  // numéro de séquence et nombre de répétitions de chaque séquence
  sequence(0, 2);
  sequence(1, 3);
  sequence(2, 5);
  // delay (5000);
  while(1); // tant que 1 = 1 boucle infinie = arreter à la fin
}
  
void sequence(int numseq, int repet) { // numéro de séquence et nombre de répétitions de chaque séquence
  for (int i = 0; i < repet; i++) {
    for(pas = 0; pas < maxpas; pas++) {
      if (sol1[numseq][pas] == 1) {
        digitalWrite(soleno1, HIGH);
      }
      if (sol2[numseq][pas] == 1) {
        digitalWrite(soleno2, HIGH);
      }
      if (sol3[numseq][pas] == 1) {
        digitalWrite(soleno3, HIGH);
      }
      delay(50);
      digitalWrite(soleno1, LOW);
      digitalWrite(soleno2, LOW);
      digitalWrite(soleno3, LOW);
      digitalWrite(ledPin, HIGH);
      delay (tempo/2);
      digitalWrite(ledPin, LOW);
      delay (tempo/2);
    }
  }
}

Réalisation

Un projet conçu et réalisé par Cécile Babiole avec l'aide de Sylvain Blocquaux + Open atelier Labomedia

http://babiole.net/spip.php?article92

Liens externes