aide casque ironman

Bonjour tout le monde, moi c'est loïc j'ai 32 ans et je fabrique des costumes "de luxe" de superhero et je me suis mis dans la tête de les motoriser ou de leur donner des séquences lumineuses .

J'ai un souci sur mon casque iron man que je souhaite motoriser, je n'ai jamais touché au arduino et bien sûr je pars sur un programme pas très simple....

Je vous joint le schéma grossié de mon installation ainsi que 2 photos de mes casques.

donc le principe reste assez simple, casque ouvert, j'appuis sur le bouton down de ma télécommande MP3 InfrRouge, le casque ce ferme et les yeux scintille 3 fois puis reste fixe.
J'appui sur UP les yeux s’éteignent et le casque s'ouvre. si j'appuis sur power pendant que le casque est fermé je peu éteindre puis rallumer les yeux.

J'ai récupéré les codes de ces 3 boutons qui sont :

UP 20BB7EE6
Down 33D1A035
power 93E08BAF

j'ai aussi un code a peu prêt bon que j'ai récupérer sur instructable mais la commande ce fait a l'aide d'un bouton et lui avait 2 servo, j'ai modifier le code pour que les pin correspondent a mon montage et j'ai supprimer le deuxième servo, en espérant e pas avoir fais de bêtise.

#include <Servo.h>
//servo 1 
Servo myservo; 
int val; // variable for reading the pin status
int val2; // variable for reading the delayed/debounced status
int buttonState;
int pos = 0;
int pos1 = 180;
int servostatus = 0;
int switchPin =2; // Switch connected to digital pin 2
int ledPin = 10;
int ledPin2 = 11;
void setup() // run once, when the sketch starts
{
//servo 1 

myservo.attach(6); 
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT); 
buttonState = digitalRead(switchPin); 
myservo.write(0);
pinMode(ledPin2, OUTPUT);
}

void loop() // run over and over again

//servo 1
{
val = digitalRead(switchPin); // read input value and store it in val
delay(10); // 10 milliseconds is a good amount of time
val2 = digitalRead(switchPin); // read the input again to check for bounces
if (val == val2) { // make sure we got 2 consistant readings!
if (val != buttonState) { // the button state has changed!
if (val == LOW) { // check if the button is pressed
if (servostatus == 0) { // is the light off?
servostatus = 1; // turn light on!

myservo.write(0);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);


// fading
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue); 
delay(30); 


}

} else {
servostatus = 0; // turn light off!


digitalWrite(ledPin, LOW);
delay(15);
digitalWrite(ledPin2, LOW);
myservo.write(180);






}
}
}
buttonState = val; // save the new state in our variable
} 
}

que pensez vous du code et comment rajouter mes 3 boutons svp ?

merci d'avance, loic

Je pense avoir trouvé, qu'en pensez vous ?

#include <IRremote.h>
#include <Servo.h>
//servo 1 
Servo myservo; 

int RECV_PIN = 2;   //Pin 2 reception données IR
IRrecv irrecv(RECV_PIN);
decode_results results;

int val; // variable for reading the pin status
int val2; // variable for reading the delayed/debounced status
int buttonState;
int pos = 0;
int pos1 = 180;
int servostatus = 0;
int ledPin = 10;
int ledPin2 = 11;

void setup() // run once, when the sketch starts
{
//servo 1 

  myservo.attach(6);
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(ledPin, OUTPUT); 
  pinMode(ledPin2, OUTPUT); 
  myservo.write(0);
}


void loop()  {
  if (irrecv.decode(&results)) {  // Si un signal est reçu...
    irrecv.resume(); // En attente de la prochaine valeur
  if (val == val2) { // make sure we got 2 consistant readings!
  if (val != buttonState) { // the button state has changed!
  if (val == LOW) { // check if the button is pressed
  if (servostatus == 0) { // is the light off?
servostatus = 1; // turn light on!
     
   switch (val)
     {
  //ferme
  case 2081: 
     pos1 = 180;
  break; 
  
  // ouvre
  case 2080: 
     pos = 0;  
  break; 
  //A eteint  
     case 2060:   
        digitalWrite(ledPin, LOW);
        digitalWrite(ledPin2, LOW);
        Serial.println ("eteint");                       
  break; 
  
myservo.write(0);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);


// fading
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue); 
delay(30); 

}

servostatus = 0; // turn light off!


digitalWrite(ledPin, LOW);
delay(15);
digitalWrite(ledPin2, LOW);
myservo.write(180);

}
}
}
}
}
}
}

Bonjour,

honnêtement, peu de chance que cela fonctionne !
un programme juste à 99,9% a 0,0% de chance de fonctionner

alors tout dépend de ta démarche ?

  • tu as besoin ponctuellement et d'urgence que quelqu'un te fasse le programme pour ton costume, il faut le dire: tu trouveras peut-être une âme charitable
  • tu envisages d'autres utilisations de l'arduino (luxe oblige), et tu souhaites apprendre à faire les programmes toi-même, mais en tant que costumier tu auras besoin d'une aide fournie de la communauté: nous te dirons comment commencer etc.

Bonsoir ... On est loin des 99,9 ...

Mais c'est un projet amusant ...

Tu sais / arrive faire marcher ton servo ?
Tu sais / arrive à lire la telecommande ?

Je ferais une procédure par action (fermer+scintiller, eteindre+ouvrir, allumer, éteindre)

Dans le loop tu Surveilles le code reçu et tu appelles l'action voulue. Le Switch / case est bien utile pour ce genre de déroulement de programme.

Apres tu as pris des morceaux de programmes... Mais tout n'est plus utile par exemple tout ce qui touche à val, val2 et buttonstate n'est plus utile (c'était le bouton), toi tu dois utliser results dans le Switch (valeur du code IR)

Bonsoir et merci de vos réponses, désolé mais je n'ai pas reçu de notification c'est pour cela que je répond tard.

alors en fait je me suis mis dans la tête de motoriser toute mon armure, et aussi de motoriser les casque que l'on me commande. Donc j'ai pas vraiment d'urgence, mais plutôt de l'impatience comme un enfant attend le jour de noël pour tester ses nouveau jouet.
Je touche un peu à l’électronique mais pas a la programmation, j'aimerais vraiment savoir programmer moi même, après je suis aussi ouvert aux âmes charitable bien sûr :smiley:

J'essaye de comprendre mais bien sur je part sur du complexe, j'ai déjà fait un code de base pour mon premier casque qui lui avait un bouton, la c'est plus simple....

Je sais lire une télécommande mais le code change tout le temps et ça je ne comprend pas :wink:

j'ai fais un nouveau code :

#include <Servo.h>
#include <IRremote.h>
Servo servo1;

unsigned long Value2 = 0xDBC8CB72 ; // up where XXXXXXXX is on our your remote's values. We will call this Value 1
unsigned long Value1 = 0x25AE7EE0 ; // down where XXXXXXXX is another button on your remote
unsigned long Value3 = 0x5A33C754 ; // power

int RECV_PIN = 3;
int ledPin = 10;
int servostatus = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {              
  servo1.attach(6);
Serial.begin(9600);
  irrecv.enableIRIn(); 
  pinMode(ledPin, OUTPUT); 
  servo1.write(0);

 
}

void loop() {

if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
{

if(results.value == Value2) {
servo1.write(0);
servo1.write(180);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
}
// fading
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) { 
// sets the value (range from 0 to 255):
digitalWrite(ledPin, fadeValue); 
delay(30); 

if(results.value == Value1) {
servo1.write(180);
servo1.write (0);
digitalWrite(ledPin, LOW);
delay(15);
}

if(results.value == Value3) {
digitalWrite(ledPin, LOW);
delay(15);

}


}
}
}

bien sûr il ne fonctionne pas :smiley:
mais la ce que je ne comprend pas c'est que mon servo a grillé de suite....... et les LED sont toujours allumées.

Le pire c'est que pour mon nouveau casque j'ai prévu un easyVR3, car je le veux encore plus top que l'autre et donc intégrer un faux JARVIS qui ouvrirait le casque sur demande.

Le code la c'est pour mon ancien casque et une commande.

Je suis prêt a payer quelqu'un pour son aide a la création de ce code car je m’arrache les cheveux .

Merci de vos réponse et de votre aide :wink:

hello, tu peux tester ce code

#include <Servo.h>
#include <IRremote.h>
Servo servo1;

unsigned long Value2 = 0xDBC8CB72 ; // up where XXXXXXXX is on our your remote's values. We will call this Value 1
unsigned long Value1 = 0x25AE7EE0 ; // down where XXXXXXXX is another button on your remote
unsigned long Value3 = 0x5A33C754 ; // power

int RECV_PIN = 3;
int ledPin_1 = 10;
int ledPin_2 = 9;            // c'est la led pour le fading, elle devra s'allumer progressivement)(PWM)
int servostatus = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
//PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function
void setup()
{
  servo1.attach(6);           //attention pinoche 6 pour le servo (PWM)
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(ledPin_1, OUTPUT);
  servo1.write(0);
  digitalWrite(ledPin_1, LOW);// pour fixer l'état de la led au départ
  analogWrite(ledPin_2, 0);// pour fixer l'état de la led au départ
}

void loop()
{
  if (irrecv.decode(&results))
  {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
    if (results.value == Value1)
    {
      servo1.write(180);
      delay(1000);                            //sans tempo, c'est surement trop violent
      servo1.write (0);
      digitalWrite(ledPin_1, LOW);            //éteind la led_1
      delay(15);
    }
    if (results.value == Value2)
    {
      servo1.write(0);                        //ferme
      delay(1000);                            //sans tempo, c'est surement trop violent
      servo1.write(180);                      //ouvre
      delay(1000);
      digitalWrite(ledPin_1, HIGH);
      delay(100);
      digitalWrite(ledPin_1, LOW);
      delay(100);                              // la led_1 clignote
      digitalWrite(ledPin_1, HIGH);
      delay(100);
      digitalWrite(ledPin_1, LOW);
      delay(100);
    }
    if (results.value == Value3)
    {
      digitalWrite(ledPin_1, LOW);          //éteind la led_1
      delay(15);
    }

    // à partir du moment ou il reçoit quelquechose, le robot exécute "fading"
    // exécutée si valeur reçue est 1 ou 2 ou 3
    // fading
    for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) //progressif
    {
      // sets the value (range from 0 to 255):
      //digitalWrite(ledPin_1, fadeValue);    //non,en digital c'est low ou high
      analogWrite(ledPin_2, fadeValue);       //allume progressivement la led 13 et la laisse allumée
      delay(100);
      for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) //degressif
      {
        analogWrite(ledPin_2, fadeValue);       //eteind progressivement la led 13 et la laisse éteinte
        delay(30);
      }
    }
  }
}

Merci de ton aide,

alors avec ton code, j'envoi une commande, les yeux clignote, le moteur tremble de droite a gauche mais ne bouge pas, puis après il ne reçois plus les code de la commande.
Même avec mon code il lit plus qu'un code par reset..
N'importe que commande que j'envoi cela fait le même effet, les yeux clignote puis reste fix, et le moteur tremble.
Il faut savoir qu'il y a 5 jours mon frère a branché l'accu à l'envers et ça ma grillé l'arduino et le servo, cela aurait il pu endommager le récepteur ?
Hier soir il lisait bien tout les codes je ne comprend pas :frowning:

Alors petite rectification.
Je viens d'essayer avec l'accu et non pas avec l'usb .......
Donc la effectivement impulsion sur le bouton de fermeture les yeux clignote puis le moteur bouge, par contre il fait 2 aller retour lol.
Et pareil qu'un seul code reçu.

En fait voici mon premier casque mais la j'ai acheter le mécanisme tout prêt :

Il doit faire exactement ça mais en moins violent :wink:

mets un serial.print de la valeur recue de la télécommande.

commence juste par afficher dans un code les valeurs, tu trouveras peut être un bug :wink:
si tout est bon, tu peux rajouter en dehors du if (irrecv.decode(&results)) les ordres

hello, j'ai modifié la vitesse de déplacement du servo.
ne sachant pas si valeur 1 ouvre ou ferme, il y a peut être inversion.
ton code est prévu pour t'afficher la valeur reçue sur le moniteur en 9600 bauds

#include <Servo.h>
#include <IRremote.h>
Servo servo1;

unsigned long Value2 = 0xDBC8CB72 ; // up where XXXXXXXX is on our your remote's values. We will call this Value 1
unsigned long Value1 = 0x25AE7EE0 ; // down where XXXXXXXX is another button on your remote
unsigned long Value3 = 0x5A33C754 ; // power

int RECV_PIN = 3;
int ledPin_1 = 10;
int ledPin_2 = 9;            // c'est la led pour le fading, elle devra s'allumer progressivement)(PWM)
int servostatus = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
//PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function
void setup()
{
  servo1.attach(6);           //attention pinoche 6 pour le servo (PWM)
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(ledPin_1, OUTPUT);
  servo1.write(0);
  digitalWrite(ledPin_1, LOW);// pour fixer l'état de la led au départ
  analogWrite(ledPin_2, 0);// pour fixer l'état de la led au départ
}

void loop()
{
  
  if (irrecv.decode(&results))                       //si commande reçue
  {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
    
    if (results.value == Value1)                      // si fermeture du casque demandée
    {
      for (int ferme = 0 ; ferme <= 180; ferme += 5) //progressif
      {
      servo1.write(ferme);
      delay(100);
      }
    }
    
    if (results.value == Value2)                      // si ouverture du casque demandée
    {
      for (int ouvre = 180 ; ouvre >=0 ; ouvre -= 5) //progressif
      {
      servo1.write(ouvre);
      delay(100);
      }
      digitalWrite(ledPin_1, HIGH);
      delay(100);
      digitalWrite(ledPin_1, LOW);
      delay(100);                              // la led_1 clignote
      digitalWrite(ledPin_1, HIGH);
      delay(100);
      digitalWrite(ledPin_1, LOW);
      delay(100);
    }
    
    if (results.value == Value3)
    {
      digitalWrite(ledPin_1, LOW);          //éteind la led_1
      delay(15);
    }

    // à partir du moment ou il reçoit quelquechose, le robot exécute "fading"
    // exécutée si valeur reçue est valeur1 ou valeur2 ou valeur3
    // fading
    for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) //progressif
      {
      // sets the value (range from 0 to 255):
      //digitalWrite(ledPin_1, fadeValue);    //non,en digital c'est low ou high
      analogWrite(ledPin_2, fadeValue);       //allume progressivement la led 13 et la laisse allumée
      delay(100);
      }
      for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) //degressif
      {
        analogWrite(ledPin_2, fadeValue);       //eteind progressivement la led 13 et la laisse éteinte
        delay(30);
      }
    }
  }

:smiley: :smiley: :smiley:
super ça fonctionne, mais c'est très très lent :stuck_out_tongue:
donc pour la valeur 1 et 2 effectivement c'est inversé mais ce n'est pas grave du tout :wink:

Par contre je dois appuyer plusieurs fois sur le bouton pour que ça exécute, je pense que mon récepteur déconne. Et ma première n'est même plus reconnu.

Pour la valeur 3 ça ne fonctionne pas, ça fait scintiller les led. c'est surement due au fait que j'ai juste les 2 led (1 par oeil ) sur le pin 10, je n'en ai pas mis sur le 9. Je n'utilise pas ce que tu a fait pour le fading, désolé :-[

J'ai rajouter :

digitalWrite(ledPin_1, HIGH);
delay(100);

a la fin de séquence de clignotement pour que les yeux restent allumé.

Je te remercie mille fois de ton aide :smiley:

infobarquee, quand j'utilise la télécommande avec juste le code de la lirary IRremote,
je me retrouve avec 4 ligne de code du genre : ( la j'ai appuyé 4 fois )

FF
Decoded JVC: FF (16 bits)
Raw (68): -28674 9000 -4250 700 -400 700 -400 700 -450 650 -450 650 -450 600 -500 600 -500 600 -500 600 -1600 600 -1650 550 -1650 550 -1650 550 -1650 550 -1650 550 -1650 600 -1650 550 -550 550 -550 550 -1650 550 -1650 550 -550 550 -600 500 -600 500 -600 500 -1700 500 -1700 500 -650 450 -600 550 -1700 500 -1700 500 -1700 500 -1700 500 
FF30CF
Decoded NEC: FF30CF (32 bits)
Raw (68): 27126 9000 -4250 700 -400 700 -400 700 -450 650 -400 700 -450 650 -450 650 -450 600 -500 600 -1600 600 -1650 550 -1650 550 -1650 550 -1650 550 -1700 500 -1700 500 -1700 500 -600 500 -600 500 -1700 550 -1700 500 -600 500 -600 500 -600 500 -600 500 -1700 500 -1700 500 -600 500 -600 550 -1700 500 -1700 450 -1750 500 -1700 500 
FF30CF
Decoded NEC: FF30CF (32 bits)
Raw (68): 32680 8800 -4500 500 -600 500 -600 500 -600 500 -600 500 -600 500 -600 500 -600 550 -550 500 -1700 550 -1700 500 -1700 500 -1700 500 -1700 500 -1700 500 -1700 550 -1700 500 -600 500 -600 500 -1700 500 -1700 500 -600 500 -600 500 -600 500 -600 550 -1700 500 -1700 500 -600 500 -600 500 -1700 500 -1700 500 -1700 550 -1700 500 
9716BE3F
Unknown encoding: 9716BE3F (32 bits)
Raw (68): 23856 8800 -4450 500 -600 550 -600 450 -650 500 -600 500 -600 500 -600 500 -600 500 -600 500 -1700 500 -1700 500 -1700 500 -1700 550 -1700 500 -1700 500 -1700 500 -1700 500 -600 500 -600 500 -1700 550 -1700 500 -600 500 -600 500 -600 500 -600 500 -1700 500 -1700 500 -600 500 -600 550 -1700 500 -1700 500 -1700 500 -1700 500

mais du coup les boutons ont quasiment tous les mêmes code c'est bizarre...

bon, j'ai modifié le sens pour être en accord avec tes touches ouverture et fermeture
j'ai modifié la vitesse des mouvements
j'ai rajouté une interdiction d'ouverture si le casque est déjà ouvert
j'ai rajouté une interdiction de fermeture si le casque est déjà fermé

il y a une contrainte à cela, tu dois mettre en marche avec le casque ouvert pour être en accord avec les témoins d'état du casque.

j'ai neutralisé le fading, (il faisait partie de ton code de départ)

j'ai commenté différents points pour te rendre autonome ex: la vitesse de mouvement.

#include <Servo.h>
#include <IRremote.h>
Servo servo1;

unsigned long Value2 = 0xDBC8CB72 ; // up where XXXXXXXX is on our your remote's values. We will call this Value 1
unsigned long Value1 = 0x25AE7EE0 ; // down where XXXXXXXX is another button on your remote
unsigned long Value3 = 0x5A33C754 ; // power
//**************************************************************************
//on initialise les flag en partant du principe que tu mets le casque ouvert
//**************************************************************************
boolean flag_ouvert=true;
boolean flag_ferme=false;
int RECV_PIN = 3;
int ledPin_1 = 10;
int ledPin_2 = 9;            // c'est la led pour le fading, elle devra s'allumer progressivement)(PWM)
int servostatus = 0;
IRrecv irrecv(RECV_PIN);
decode_results results;
//PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite() function
void setup()
{
  servo1.attach(6);           //attention pinoche 6 pour le servo (PWM)
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(ledPin_1, OUTPUT);
  servo1.write(0);
  digitalWrite(ledPin_1, LOW);// pour fixer l'état de la led au départ
  analogWrite(ledPin_2, 0);// pour fixer l'état de la led au départ
}

void loop()
{
  
  if (irrecv.decode(&results))                       //si commande reçue
  {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
    
     if ((results.value == Value1)&& (flag_ouvert==false)) // si ouverture du casque demandée
    {                                                      // et casque fermé
      for (int ouvre = 180 ; ouvre >=0 ; ouvre -= 5)       // ouverture progressive au pas de 5
      {
      servo1.write(ouvre);
      delay(10);                                          // ici on peut jouer sur la vitesse d'ouverture
      }
      flag_ouvert=true;
      flag_ferme=false;
      digitalWrite(ledPin_1, HIGH);
      delay(100);
      digitalWrite(ledPin_1, LOW);
      delay(100);                              // la led_1 clignote
      digitalWrite(ledPin_1, HIGH);
      delay(100);
      digitalWrite(ledPin_1, LOW);
      delay(100);
    }
    
    if ((results.value == Value2) && (flag_ferme==false))    // si fermeture du casque demandée
    {                                                        // et casque ouvert
      for (int ferme = 0 ; ferme <= 180; ferme += 5)         // fermeture progressive
      {
      servo1.write(ferme);
      delay(10);                                             // ici on peut jouer sur la vitesse de fermeture
      }
      flag_ouvert=false;
      flag_ferme=true;
    }
    
   
    
    if (results.value == Value3)
    {
      digitalWrite(ledPin_1, LOW);          //éteind la led_1
      delay(15);
    }
/*
    // à partir du moment ou il reçoit quelquechose, le robot exécute "fading"
    // exécutée si valeur reçue est valeur1 ou valeur2 ou valeur3
    // fading
    for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) //progressif
      {
      // sets the value (range from 0 to 255):
      //digitalWrite(ledPin_1, fadeValue);    //non,en digital c'est low ou high
      analogWrite(ledPin_2, fadeValue);       //allume progressivement la led 13 et la laisse allumée
      delay(100);
      }
      for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) //degressif
      {
        analogWrite(ledPin_2, fadeValue);       //eteind progressivement la led 13 et la laisse éteinte
        delay(30);
      }
  */    
    }
  }

super ça a l'air de fonctionner, sauf que l'accu est vide lol.
je charge et re-test demain.

du coup les touches marche mieux, ça réagit bien :wink:

Même si le casque est ouvert il se ferme automatiquement en branchant l'accu :wink:

En tout cas merci beaucoup , si je peu t'aider dit moi je te suis largement redevable :wink:

voici ma page où je présente mes créations :

Tu peux aussi faire un capteur de position en modifiant légèrement ton servo, il faut souder un fil à l'intérieur du servo qui reprend la valeur du potentiomètre et lire la valeur retournée avec une pin de l'arduino.

ok j'essaierai sur mon autre :wink:

je mettrai une vidéo lorsque j'aurai fini le montage

merci merci merci