Bonjour tout le monde,
Je suis en ce moment sur un petit projet, sur lequel je manipule un Arduino et son MotorShield, un microSwitch et un moteur DC 12V.
Lorsque le moteur fait un tour, un système mécanique appuie sur le bouton du microswitch, de sorte que je puisse compter ensuite le nombre de tour que fait le moteur.
Rien de compliqué. Mon problème vient de l’attribution des pins et de mon code ensuite. (c'est la première fois que je me sers d'un arduino. Il m'est imposé)
La pin 3 est pour la PWN relié au enable du L298 du motorshield.
la pin 12 est relié au In1 et In2 du L298 pour la direction (Pour le port A que j'utilise).
J'utilise la pin 6 en Output à +5V pour mettre au port COM du microswitch, et je relie la pin 2 au port VO3 du microswitch, de sorte qu'à chaque fois que le bouton est poussé, un état haut arrive sur ce port VO3, et donc sur la pin 2 du Arduino.
En effet sur la pin 2 se trouve le registre pour faire une interruption simple à programmer, en utilisant la fonction attachInterrupt().
A chaque fois que je charge le programme dans le Arduino, le moteur fait 1 tour et s’arrête. J'ai passé une journée dessus je ne vois pas si le problème vient de mon code (je ne pense pas) ou si il vient de la pin 2, qui doit avoir une autre fonction. Quand on regarde le schéma electrique du motorShield on remarque que la pin 2 (sur le schéma la partie POWER) est relié à l'entrée nommé IOREF. Je ne sais pas à quoi cela correspond.
Voila, je met un schéma de mon montage et mon code, merci pour votre future aide
Cordialement
Moteur: https://www.digikey.fr/product-detai...085-ND/6469521
Motor Shield: https://store.arduino.cc/arduino-motor-shield-rev3 (il y a le schéma électrique de l'arduino)
Code://broche signal sens de rotation const int in1 =12; //broche +5V const int in3 = 6; //compteur unsigned int comp = 0; const byte pinInterrupt = 2; void stop_motor() { analogWrite(enable, 0); } void incrementation() { comp = comp + 1; } void setup() { pinMode(enable, OUTPUT); //PWM pinMode(in1, OUTPUT); pinMode(in3, OUTPUT); pinMode(pinInterrupt, INPUT); analogWrite(enable,200); digitalWrite(in1, HIGH); digitalWrite(6, HIGH); attachInterrupt(digitalPinToInterrupt(pinInterrupt), incrementation, HIGH); } void loop() { if(comp == 20) { stop_motor(); } }
-----