Go Down

Topic: suite logique d'activation de solenoide pneumatique (etape "haut" "bas") (Read 15 times) previous topic - next topic

Artouste


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  :)
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

neodelavega

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


Artouste


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  8)
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" ?  8)

neodelavega

#48
Jul 13, 2012, 02:47 pm Last Edit: Jul 13, 2012, 02:52 pm by neodelavega Reason: 1
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 ??

Artouste


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

neodelavega

#50
Jul 13, 2012, 04:32 pm Last Edit: Jul 14, 2012, 10:02 am by Jean-François Reason: 1
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: [Select]
/*
 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: [Select]

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)

neodelavega

#51
Jul 14, 2012, 08:51 am Last Edit: Jul 14, 2012, 10:01 am by Jean-François Reason: 1
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: [Select]
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


Jean-François

Ce serait sympa de ta part de mettre le code entre les balise de code, j'ai corrigé tes derniers messages  :smiley-mr-green:
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

neodelavega

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

neodelavega

#54
Jul 14, 2012, 01:55 pm Last Edit: Jul 14, 2012, 03:54 pm by Jean-François Reason: 1
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: [Select]

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 !!!!

neodelavega

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: [Select]

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);
 }
 }
 


skywodd

Bonjour,

Pour ton anti-rebond :
Code: [Select]
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);
}
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

neodelavega

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

Code: [Select]

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

skywodd


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
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

neodelavega

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


Go Up