test librairie accel stepper
bonjour a tous, j'essaye d'utiliser depuis un moment cette librairie, mais certaine fonction me pose des problemes.
j'ai fais donc un code tout bete, avec le bouton up, je lance le moteur (ça marche), avec le bouton down, je l arrete (ça marche pas)
l'idée est de tester plus tard, le lancement d'un moteur, et des qu'une entrée est active, le moteur s arrete
voici le code
#include <AccelStepper.h>
//#include <MultiStepper.h>
AccelStepper stepper1(1, 11, 12); // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
#include <LiquidCrystal.h>
// Variables pour utiliser l'ecran
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Definir les pins utilisees par le LCD
int lcd_key = 0;
int adc_key_in = 0;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
/************************************************************************************************************/
// Fonction lire les boutons
/************************************************************************************************************/
int read_LCD_buttons()
{
adc_key_in = analogRead(0); // Lire les valeurs du capteurs
// Les valeurs renvoyees sont sensees etre: 0, 144, 329, 504, 741
// Il y a une erreur possible de 50
if (adc_key_in > 1000) return btnNONE; // Nous découpons les valeurs possibles en zone pour chaque bouton
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 144) return btnUP;
if (adc_key_in < 329) return btnDOWN;
if (adc_key_in < 504) return btnLEFT;
if (adc_key_in < 741) return btnSELECT;
return btnNONE; // On renvoie cela si l'on est au dessus de 850
}
int s1=0;
int v1=0;
// Variables du programme Adrien
// ENTREES
// SORTIES
int g1 = 0;
void printG1()
{
char bufG1[10];
lcd.setCursor(13, 0);
sprintf(bufG1, "%d", g1);
lcd.print(bufG1);
}
void setup() {
// put your setup code here, to run once:
lcd.begin(16, 2); // Demarrer la librairie ecran
//pinmode
}
void loop() {
// put your main code here, to run repeatedly:
stepper1.setMaxSpeed(1500); //vitesse en hertz
stepper1.setAcceleration(1500); //pas/s²
stepper1.moveTo(s1);
stepper1.run();
int value= analogRead(A0);
if (g1==0 and 144 < value and value < 329) //btnUp
{
s1=stepper1.currentPosition()+50000;
g1=10;
printG1();
}
else if (g1==10 and stepper1.isRunning() ) //btnUp
{
g1=20;
printG1();
}
else if (g1==20 and 329 <value and value < 504) //btndown
{
stepper1.stop();
g1=30;
printG1();
}
else if (g1==30 and !stepper1.isRunning()) //btndown
{
g1=0;
printG1();
}
}
pour le test des boutons j ai fais au plus court et plus simple
en fait j ai l'impression qu'il faut switcher stepper1.run() par stepper1.stop() pour que l arret se fasse, c est pas super clair