Bonjour,
J'ai un programme et un montage avec une arduino uno qui font tourner un moteur pas à pas de modèle nema 19 à l'aide d'un driver A4988 lorsque l'on appuie sur un bouton poussoir. Le moteur continue de tourner tant que l'on reste appuyé sur le bouton. Sur la breadbord se trouve aussi un module blutooth HC-05 qui ne me sert pour le moment à rien:
#include "AccelStepper.h"
const char boutonNemaIng1 = 3;
const bool boutonPinEtatOn = LOW;
const char mpapDirPin = 4; // Pour driver MPAP pin pas
const char mpapStepPin = 5; // Pour driver MPAP pin direction
AccelStepper MPAP1(1, mpapStepPin, mpapDirPin);
int mpapNombreDePasAtourner = 200;
void setup() {
// put your setup code here, to run once:
MPAP1.setMaxSpeed(400);
MPAP1.setAcceleration(500);
pinMode(boutonNemaIng1, INPUT_PULLUP);
MPAP1.setPinsInverted(false, false, true);
MPAP1.enableOutputs(); // Activer les signaux du MPAP
}
void loop() {
boolean etatBouton=digitalRead(boutonNemaIng1);
if (etatBouton == boutonPinEtatOn)
{
MPAP1.move(mpapNombreDePasAtourner);
}
MPAP1.run();
}
J'ambitionne de créer une application de petit niveau afin de virtualiser le bouton poussoir sur l'écran tactile d'un appareil avec blutooth à l'aide du HC-05 sur le logiciel en ligne MIT app inventor. Voici ou j'en suis:
Le problème est que j'ai du mal à me retrouver avec les blocs et comment relier les variables arduino sur MIT app inventor. Quelqu'un pourrait-il m'aiguiller ?
Lorsque l’app sur le téléphone de lance elle doit s’appairer avec le HC-05 et ensuite vous envoyez depuis l’arduino l’état du bouton quand il change (le caractère 0 ou 1 par exemple)
Pour conserver la capacité de debug sur Arduino prenez un port SoftwareSerial à 9600 bauds pour communiquer avec le module BT
Cherchez « mit app inventor HC-05 » et vous verrez des tonnes d’exemples
Il n'y a pas beaucoup d'exemples trouvables sur le net avec des pilotages de moteur pas à pas s'approchant de ce que je voudrais faire. Je voudrais que tant que l'on reste appuyé sur le bouton virtuel, le moteur tourne et que lorsque l'on relâche le même bouton, il s'arrête. Or, actuellement le moteur ne fait que tourner d'un petit pas alors que je pensais que le tout allait marcher correctement. Qu'est-ce qui ne va pas que je devrais améliorer ?
J'ai peu pratiqué App Inventor, mais est ce que Button1 est à répétition, est ce que 1 s'affiche, de façon répétitive, dans la console de l'IDE aussi longtemps que tu "presses" sur Button1?
Je ne pense pas vu que ton moteur ne fait qu'un pas, le temps de la boucle if (Serial.available() et que MPAP1.run(); est également.dans cette boucle.
Si vous voulez tourner à une vitesse constante on peut aussi utiliser runSpeed() qui sera conditionné par la réception du 0 ou 1 (qui définit le mode - en pause ou en rotation)
Le résultat est meilleur car cette fois le moteur tourne de "mpapNombreDePasAtourner" à chaque appuie. Toutefois lorsque l'on reste appuyé sur le bouton virtuel, le moteur ne continue pas de tourner. Un 1 s'affiche dans le moniteur série, le moteur ne tourne que de "mpapNombreDePasAtourner", puis un 0 apparaît dans le moniteur série quand on relâche le bouton.
Puisque un 1 est l'équivalent d'une rotation de "mpapNombreDePasAtourner" comment pourrait-je m'y prendre afin que l'application envoie des 1 en continue tant que l'on reste appuyé sur le bouton ?
Quand vous recevez '1' vous lancez le moteur et quand vous recevez '0' vous l'arrêtez. Les 1 entre temps ne servent juste qu'à dire que la connexion est toujours là... en première approximation vous pouvez vous contenter d'un seul '1' et du '0' quand vous relâchez