Pages: 1 2 3 [4] 5 6 ... 11   Go Down
Author Topic: suite logique d'activation de solenoide pneumatique (etape "haut" "bas")  (Read 14306 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Faraday Member
**
Karma: 34
Posts: 5214
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mais c'est vraiment obligatoire d'avoir les 6 maime car elle debite pas plus de 20ma sous 12V et personnellement je m'en fou quelle clignote car je veux simplement voir si il y a une presence de tension je ne veux pas faire du pulser ou autre juste on ou off

je ne cherche pas a te contredire mais sinon il va falloir que j'en commande 6 avec les 6 résistance 1K en se qui concerne mais 2 poussoir je peut relier 1 broche a la masse et l'autre a la pin 2 pareil pour le 2eme sauf que je mais sur la pin3 cette fois si ?? (d'aprer les schéma pécher sur le net)

encore merci

bon déjà tes leds , elles ne debitent pas , elles consomment du courant  smiley
je crois que ce ne sont pas des leds , mais des assemblages "avec une led" prevus pour être alimentés en 12V .
fais quelques photos de tes leds et avant de les connecter à l'arduino refait un test de consommation (et d'illumination) sous 5V
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

voici une photo des dit led



Uploaded with ImageShack.us


ensuite sous 5V

violet = 3.90ma
bicolore clignotante vert/rouge = 5,90ma
rouge clignotente = 5ma

Logged

Offline Offline
Faraday Member
**
Karma: 34
Posts: 5214
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

voici une photo des dit led

ensuite sous 5V

violet = 3.90ma
bicolore clignotante vert/rouge = 5,90ma
rouge clignotente = 5ma

Je me disais bien que c’était des trucs comme ça  smiley-cool
Si tu es sur des mesures de consommations et qu'elles s'allument au moins un peu sous 5V tu peux les utiliser pour t'amuser .
Mais avant de te lancer , tu connecte comment ton "metrix" (sondes entre quoi et quoi) pour vérifier la consommation des "leds" ?  smiley-cool
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok parfait !!!

sorti + alim 5V > metrix borne +  sortie borne metrix - au + de la led et - de la led directe au - de l'alim (montage en serie)

ps: pour les BP le cablage je peut me permettre de mettre une patte a la masse l'autre a la pin de l'arduino ??
« Last Edit: July 13, 2012, 07:52:10 am by neodelavega » Logged

Offline Offline
Faraday Member
**
Karma: 34
Posts: 5214
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok parfait !!!

sorti + alim 5V > metrix borne +  sortie borne metrix - au + de la led et - de la led directe au - de l'alim (montage en serie)

ps: pour les BP le cablage je peut me permettre de mettre une patte a la masse l'autre a la pin de l'arduino ??
Ok
alors tu peux y aller  smiley-mr-green

pour les BP tu connecte comme tu souhaite , l'action sera déterminée soit par apparition d'un niveau haut ou d'un niveau bas et lecture par le pin de l'arduino
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors premier test avec les 6 led donc j'ai pris le code BLINK est je les améliorer voici se que j'ai fait :

Code:
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(13, OUTPUT);  
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(12, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);          
  digitalWrite(11, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);          
  digitalWrite(10, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);          
  digitalWrite(9, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);          
  digitalWrite(8, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);          
  digitalWrite(8, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  digitalWrite(9, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);    
  digitalWrite(10, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);    
  digitalWrite(11, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);    
  digitalWrite(12, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);    
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);    
}



j'ai aussi modifier le delay est sa marche bien ensuite j'ai essayer sa :


Code:
int pin = 10;
volatile int state = LOW;

void setup()
{
  pinMode(pin, OUTPUT);
  digitalWrite(2, HIGH);
  attachInterrupt(0, toggle, FALLING); // Attaching the ISR to INT0
}

void loop()
{
  // Does Nothing
}

// Interrupt Service Routine
void toggle()
{
  if(state == LOW)  {
    state = HIGH;
  } else {
    state = LOW;
  }
  digitalWrite(pin, state);
}


mais la par contre sa marche très mal je doit appuyer plusieurs fois pour que sa s'allume et pour que sa s'eteind ou même defois la led flash (se code n'est pas de moi juste le premier)
« Last Edit: July 14, 2012, 03:02:03 am by Jean-François » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

salut a tous alors j'ai modifier mon code mais c'est dur dur comment on fait pour sauvegarder l’état ?? quand j'appuie sa s'allume mais quand je relâche sa s’éteint et quand je veux supprimer void loop sa me mais une erreur car je ne veux pas que mon code tourne en boucle c'est juste des étape et je pense que c'est pour sa que quand je relâche sa éteint la led car il retourne a la case départ c'est vraiment galére quand même ^^

Code:
int val1 = 0;
int val2 = 1;

void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
}

void loop() {
  
val1 = digitalRead(2);
   if (val1 == HIGH) {
    digitalWrite(13, LOW);
   } else {
    digitalWrite(13, HIGH);  
   }
 }


j'ai essayer plusieurs combinaison mais sa ne marche pas

« Last Edit: July 14, 2012, 03:01:19 am by Jean-François » Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ce serait sympa de ta part de mettre le code entre les balise de code, j'ai corrigé tes derniers messages  smiley-mr-green
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok je suis désoler JF je prend note par la même occase passer un bon week !

personne a une idée pour me dire comment je peut "sauvegarder" l’état de mon BP ?

merci
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

j'avence avec mon code j'ai donc une question comment faire avec ma int value = 2 pour la configurer avec mais 2 BP par exemple si j'apuie sur BP + sa va ajouter +1 se qui me fait int value = 3 ensuite si j'appuie sur BP - sa me fait -1 se qui me fait int value = 2

voici le code:

Code:
int val = 2;


void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
 
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
 
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
}

void loop() {
  
  digitalWrite(2, val+=1);
  digitalWrite(3, val-=1);
  
  if (val == 1) {
  digitalWrite (13, HIGH);
  }
  if (val == 3) {
  digitalWrite (12, HIGH);
  }
  if (val == 4) {
  digitalWrite (12, HIGH);
  digitalWrite (11, HIGH);
  }
  if (val == 5) {
  digitalWrite (12, HIGH);
  digitalWrite (11, HIGH);
  digitalWrite (10, HIGH);
  }
   if (val == 6) {
  digitalWrite (12, HIGH);
  digitalWrite (11, HIGH);
  digitalWrite (10, HIGH);
  digitalWrite (9, HIGH);
  }
  if (val == 7) {
  digitalWrite (12, HIGH);
  digitalWrite (11, HIGH);
  digitalWrite (10, HIGH);
  digitalWrite (9, HIGH);
  digitalWrite (8, HIGH);
  }
  
  
}



ps: sinon sans les BP quand je modifie int value = avec toute les formule sa fait exactement se que je veux faire il me manque vraiment plus que sa si quelqu’un peut m'aider !!!!
« Last Edit: July 14, 2012, 08:54:00 am by Jean-François » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour a tous je vois que personne ne ma répondu encore bref j'ai réussi a faire se que je voulez mais quelqu’un pourait il me proposer un antie rebond efficace ??? j'en et deja inclus un  mais c'est pas top sa me ralentie mon temps de commutation et des fois si je reste un peut trop longtemps sa peut m'en commuter 2 a la fois ensuite si je ralonge mon delay pour les 2 BP sa marche mais c'est beaucoup trop retarder voici le code est si quelqu'un pouvez me dire au moins se qu'il en pense.....

Code:
int val1 = 20;
int val2 = 40;

void setup()
{
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop()
{
  val1 = constrain(val1, 19, 25);
  val2 = constrain(val2, 35, 41);
int bas=digitalRead(2);
int haut=digitalRead(3);
 
 if(bas== LOW)
 {
   val1 -= 1;
   val2 += 1;
   delay (250);
 }
 
 if(haut== LOW)
 {
   val1 += 1;
   val2 -= 1;
   delay (250);
 }


  if (val1 == 19 && val2 == 41)
  {
  digitalWrite (13, HIGH);
  }
  if (val1 == 21 && val2 == 39)
  {
  digitalWrite (12, HIGH);
  }
  if (val1 == 22 && val2 == 38)
  {
  digitalWrite (11, HIGH);
  }
  if (val1 == 23 && val2 == 37)
  {
  digitalWrite (10, HIGH);
  }
   if (val1 == 24 && val2 == 36)
   {
  digitalWrite (9, HIGH);
  }
  if (val1 == 25 && val2 == 35)
  {
  digitalWrite (8, HIGH);
  }
    if (val1 == 20  && val2 == 40)
  {
  digitalWrite (13, LOW);
  }
  if (val1 == 20 && val2 == 40)
  {
  digitalWrite (12, LOW);
  }
   if (val1 == 21 && val2 == 39)
  {
  digitalWrite (11, LOW);
  }
  if (val1 == 22 && val2 == 38)
  {
  digitalWrite (10, LOW);
  }
  if (val1 == 23 && val2 == 37)
   {
  digitalWrite (9, LOW);
  }
  if (val1 == 24 && val2 == 36)
  {
  digitalWrite (8, LOW);
  }
  }
  

Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5405
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Pour ton anti-rebond :
Code:
if(digitalRead(2) == LOW) { // Lecture du bouton à l'instant t
   val1--;
   val2++;
   delay(15); // Anti rebond (entre 10 et 25ms)
   while(digitalRead(2) == LOW); // Boucle d'attente du relâchement du bouton
 } else if(digitalRead(3) == LOW) { // Else pour éviter d'avoir BP+ et BP- simultanément
   val1++;
   val2--;
   delay(15);
   while(digitalRead(3) == LOW);
 }
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors tout d’abord merci pour ta réponse j'ai donc corriger mon code est fait comme suite

Code:
int val1 = 20;
int val2 = 40;

void setup()
{
  pinMode(2, INPUT);
  digitalWrite(2, HIGH);
  pinMode(3, INPUT);
  digitalWrite(3, HIGH);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop()
{
   if(digitalRead(2) == LOW) { // Lecture du bouton à l'instant t
   val1--;
   val2++;
   delay(25); // Anti rebond (entre 10 et 25ms)
   while(digitalRead(2) == LOW); // Boucle d'attente du relâchement du bouton
 } else if(digitalRead(3) == LOW) { // Else pour éviter d'avoir BP+ et BP- simultanément
   val1++;
   val2--;
   delay(25);
   while(digitalRead(3) == LOW);
 }


  if (val1 == 19 && val2 == 41)
  {
  digitalWrite (13, HIGH);
  }
  if (val1 == 21 && val2 == 39)
  {
  digitalWrite (12, HIGH);
  }
  if (val1 == 22 && val2 == 38)
  {
  digitalWrite (11, HIGH);
  }
  if (val1 == 23 && val2 == 37)
  {
  digitalWrite (10, HIGH);
  }
   if (val1 == 24 && val2 == 36)
   {
  digitalWrite (9, HIGH);
  }
  if (val1 == 25 && val2 == 35)
  {
  digitalWrite (8, HIGH);
  }
    if (val1 == 20  && val2 == 40)
  {
  digitalWrite (13, LOW);
  }
  if (val1 == 20 && val2 == 40)
  {
  digitalWrite (12, LOW);
  }
   if (val1 == 21 && val2 == 39)
  {
  digitalWrite (11, LOW);
  }
  if (val1 == 22 && val2 == 38)
  {
  digitalWrite (10, LOW);
  }
  if (val1 == 23 && val2 == 37)
   {
  digitalWrite (9, LOW);
  }
  if (val1 == 24 && val2 == 36)
  {
  digitalWrite (8, LOW);
  }
  }
 




mais cette fois si c'est pire sa me fait les action fois 2 c'est vraiment bizarre (par contre le temps de réaction est instantanée sa doit être delay 25 qui y fait) encore merci skywodd
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5405
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

mais cette fois si c'est pire sa me fait les action fois 2 c'est vraiment bizarre (par contre le temps de réaction est instantanée sa doit être delay 25 qui y fait) encore merci skywodd
Essaye de mettre 100ms comme temps d'anti rebond et regarde si l'action est pris 2x en compte.
Si oui -> probléme dans le code (ou dans le bouton ?)
Si non -> diminue le temps, 50ms par exemple
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 228
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

alors résultat

a 100ms sa marche vraiment bien mais il faut vraiment appuyer très vite sur le bouton car sinon il me donne 2 impulsion
a 50ms sa me fait comme a 25ms quoi que je fasse sa me prend 2 impulsion (parfois je réussie a faire 1 action mais c'est pas assez fiable)

si on ne peut pas mieux faire niveau code

je peut acheter des bouton de grande qualiter est faire en sorte que quand je vais usiner mais palette au volant de façon a se que je bouge de 5mm sa fasse un système a bascule qui même si la palette et tirer vers le volant le BP n'est plus en action quand pense tu ?

merci

 
Logged

Pages: 1 2 3 [4] 5 6 ... 11   Go Up
Jump to: