code non reconnu

bonjour
j'ai installé la librairie accelStepper mais le compilateur ne valide pas le code j'ai essayé de mettre un espace entre Stepper1 donc Stepper 1 mais rien non plus
est-ce que vous pourriez m'aider
désolé si je vous dérange encore une fois
voici mon code

#include <AccelStepper.h>

AccelStepper1(26, 27, 28, 29);
AccelStepper2(38, 39, 40, 41);
AccelStepper3(50, 51, 52, 53);

int bouton1 = 2; //marche avant rapide axe AD
int bouton2 = 3; //marche arrière rapide axe AD
int bouton3 = 4; //marche avant rapide axe DEC
int bouton4 = 5; //marche arrière rapide axe DEC
int bouton5 = 6; //marche avant moteur de MAP
int bouton6 = 7; //marche arrière moteur de MAP

void setup (){
  
  Serial.begin(9600);
  
  pinMode (bouton1, INPUT_PULLUP);
  pinMode (bouton2, INPUT_PULLUP);
  pinMode (bouton3, INPUT_PULLUP);
  pinMode (bouton4, INPUT_PULLUP);
  pinMode (bouton5, INPUT_PULLUP);
  pinMode (bouton6, INPUT_PULLUP);

  Stepper.setMaxSpeed(360);
  Stepper.setSpeed(14.4);
  
}

void loop(){
  
  bouton1=digitalRead(bouton1);
  if(bouton1==HIGH){
    Stepper1.setSpeed(360);//si j'appuis sur le bouton le moteur AD accélère
    Stepper.runSpeed();
  }
  else{
    Stepper1.setSpeed(14.4);//si je n'appuis pas sur le bouton le moteur AD continu la vitesse normale
  }
  bouton2=digitalRead(bouton2);
  if(bouton2==HIGH){
    Stepper1.setSpeed(-360);//si j'appuis sur le bouton le moteur AD recule
    Stepper.runSpeed();
  }
  else{
    Stepper1.setSpeed(14.4);//si je n'appuis pas sur le bouton le moteur AD continu la vitesse normale
  }
  bouton3=digitalRead(bouton3);
  if(bouton3==HIGH){
    Stepper2.setSpeed(180);//si j'appuis sur le bouton le moteur DEC accélère
    Stepper.runSpeed();
  }
  else{
    Stepper2.stop();//si je n'appuis pas sur le bouton le moteur DEC s'éteint
  }
  bouton4=digitalWrite(bouton4);
  if(bouton4==HIGH){
    Stepper2.setSpeed(-180);//si j'appuis sur le bouton le moteur DEC recule
    Stepper.runSpeed();
  }
  else{
   Stepper2.stop();//si je n'appuis pas sur le bouton le moteur DEC s'éteint ou s'arrête
  }
  bouton5=digitalRead(bouton5)
  if(bouton5==HIGH){
    Stepper3.setSpeed(10);//si j'appuis sur le bouton le moteur déplace le PO pour faire la MAP
    Stepper.runSpeed();
  }
  else{
    Stepper3.stop();//si je n'appuis pas sur le bouton le moteur de la MAP s'arrête ou s'éteint
  }
  bouton6=digitalWrite(bouton6)
  if(bouton6==HIGH){
    Stepper3.setSpeed(10);//si j'appuis sur le bouton le moteur déplace le PO pour faire la MAP
    Stepper.runSpeed();
  }
  else{
    Stepper3.stop();//si je n'appuis pas sur le bouton le moteur de la MAP s'arrête ou s'éteint
  }
}

encore un grand merci
cdt

Il serait urgent de consulter un exemple de la librairie pour voir comment on déclare un objet AccelStepper, et même un objet C++ en général.

ok merci je vais voir
cdt

Désolé mais maintenant il me met "FULL4WIRE IS NOT A MEMBER OF ACCELSTEPPER"
mon nouveau code est

#include <AccelStepper.h>
#include <MultiStepper.h>

AccelStepper stepper1(AccelStepper::FULL4WIRE, 26, 27, 28, 29);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 38, 39, 40, 41);
AccelStepper stepper3(AccelStepper::FULL4WIRE, 50, 51, 52, 53);

MultiStepper steppers;

int bouton1 = 2; //marche avant rapide axe AD
int bouton2 = 3; //marche arrière rapide axe AD
int bouton3 = 4; //marche avant rapide axe DEC
int bouton4 = 5; //marche arrière rapide axe DEC
int bouton5 = 6; //marche avant moteur de MAP
int bouton6 = 7; //marche arrière moteur de MAP

void setup() {
  
  Serial.begin(9600);

  pinMode (bouton1, INPUT_PULLUP);
  pinMode (bouton2, INPUT_PULLUP);
  pinMode (bouton3, INPUT_PULLUP);
  pinMode (bouton4, INPUT_PULLUP);
  pinMode (bouton5, INPUT_PULLUP);
  pinMode (bouton6, INPUT_PULLUP);
 
  stepper1.setMaxSpeed(360);
  stepper2.setMaxSpeed(180);
  stepper3.setMaxSpeed(240);

  stepper1.setSpeed(14.4);
  stepper2.setSpeed(0);
  stepper3.setSpeed(0);

  steppers.addStepper(stepper1);
  steppers.addStepper(stepper2);
  steppers.addStepper(stepper3)
}
void loop() {

  bouton1=digitalRead(bouton1);
  if(bouton1==HIGH){
    Stepper1.setSpeed(360);//si j'appuis sur le bouton le moteur AD accélère
    Stepper.runSpeed();
  }
  else{
    Stepper1.setSpeed(14.4);//si je n'appuis pas sur le bouton le moteur AD continu la vitesse normale
  }
  bouton2=digitalRead(bouton2);
  if(bouton2==HIGH){
    Stepper1.setSpeed(-360);//si j'appuis sur le bouton le moteur AD recule
    Stepper.runSpeed();
  }
  else{
    Stepper1.setSpeed(14.4);//si je n'appuis pas sur le bouton le moteur AD continu la vitesse normale
  }
  bouton3=digitalRead(bouton3);
  if(bouton3==HIGH){
    Stepper2.setSpeed(180);//si j'appuis sur le bouton le moteur DEC accélère
    Stepper.runSpeed();
  }
  else{
    Stepper2.stop();//si je n'appuis pas sur le bouton le moteur DEC s'éteint
  }
  bouton4=digitalWrite(bouton4);
  if(bouton4==HIGH){
    Stepper2.setSpeed(-180);//si j'appuis sur le bouton le moteur DEC recule
    Stepper.runSpeed();
  }
  else{
   Stepper2.stop();//si je n'appuis pas sur le bouton le moteur DEC s'éteint ou s'arrête
  }
  bouton5=digitalRead(bouton5)
  if(bouton5==HIGH){
    Stepper3.setSpeed(10);//si j'appuis sur le bouton le moteur déplace le PO pour faire la MAP
    Stepper.runSpeed();
  }
  else{
    Stepper3.stop();//si je n'appuis pas sur le bouton le moteur de la MAP s'arrête ou s'éteint
  }
  bouton6=digitalWrite(bouton6)
  if(bouton6==HIGH){
    Stepper3.setSpeed(10);//si j'appuis sur le bouton le moteur déplace le PO pour faire la MAP
    Stepper.runSpeed();
  }
  else{
    Stepper3.stop();//si je n'appuis pas sur le bouton le moteur de la MAP s'arrête ou s'éteint
  }
}

merci
cdt

Vous avez un exemple dans l'Arduino IDE

// MultiStepper.pde
// -*- mode: C++ -*-
//
// Shows how to multiple simultaneous steppers
// Runs one stepper forwards and backwards, accelerating and decelerating
// at the limits. Runs other steppers at the same time
//
// Copyright (C) 2009 Mike McCauley
// $Id: HRFMessage.h,v 1.1 2009/08/15 05:32:58 mikem Exp mikem $

#include <AccelStepper.h>

// Define some steppers and the pins the will use
AccelStepper stepper1; // Defaults to 4 pins on 2, 3, 4, 5
AccelStepper stepper2(4, 6, 7, 8, 9);
AccelStepper stepper3(2, 10, 11);

void setup()
{  
    stepper1.setMaxSpeed(200.0);
    stepper1.setAcceleration(100.0);
    stepper1.moveTo(24);
    
    stepper2.setMaxSpeed(300.0);
    stepper2.setAcceleration(100.0);
    stepper2.moveTo(1000000);
    
    stepper3.setMaxSpeed(300.0);
    stepper3.setAcceleration(100.0);
    stepper3.moveTo(1000000); 
}

void loop()
{
    // Change direction at the limits
    if (stepper1.distanceToGo() == 0)
	stepper1.moveTo(-stepper1.currentPosition());
    stepper1.run();
    stepper2.run();
    stepper3.run();
}

mais suis-je obligé de mettre moveTo() et set acceleration car j'en ai pas besoin
et il faut que je rajoute mes six boutons je les mets où alors
merci
cdt

Non tu n'a pas à utiliser moveTo()

Dans ton programme, comme je te l'avais conseillé tu utilises une librairie plus adaptée à ce que tu veux faire: AccelStepper.
Mais il y a plusieurs erreurs:

  • Il manque des ;
  • Le nom de l'objet instancié c'est stepper1 et non Stepper1. Idem pour stepper2 et stepper 3
  • Quelques fois il y a Stepper à la place de stepper1 pu stepper2 ou stepper3
  • Tu affectes la lecture d'une entrée à l'entrée elle même par exemple dans bouton1 = digitalRead(bouton1);
  • Tu utilises INPUT_PULLUP et tu considère que le bouton est actif à l'état haut. Es tu sur?
  • ...
  • Tu utilises INPUT_PULLUP et tu considère que le bouton est actif à l'état haut. Es tu sur?

Non le bouton doit être actif quand on appuis dessus
et je mets quoi à la place de INPUT_PULLUP
merci
cdt

puis j'ai modifié les stepper 1 2 et 3 par Stepper 1 2 et 3 et il me met toujours le message d'erreur
cdt

kamill:
Non tu n'a pas à utiliser moveTo()

Dans ton programme, comme je te l'avais conseillé tu utilises une librairie plus adaptée à ce que tu veux faire: AccelStepper.
Mais il y a plusieurs erreurs:

  • Il manque des ;
  • Le nom de l'objet instancié c'est stepper1 et non Stepper1. Idem pour stepper2 et stepper 3
  • Quelques fois il y a Stepper à la place de stepper1 pu stepper2 ou stepper3
  • Tu affectes la lecture d'une entrée à l'entrée elle même par exemple dans bouton1 = digitalRead(bouton1);
  • Tu utilises INPUT_PULLUP et tu considère que le bouton est actif à l'état haut. Es tu sur?
  • ...

Pourriez-vous me donner un exemple
désolé j'ai fait le code d'après conseils sur le forum de webastro
je ne vois pas où je remplace Stepper 1 par le 2 ou le 3
merci
cdt

Je te met le programme corrigé syntaxiquement, mais ça ne veut pas dire qu'il va fonctionner car en particulier j'ai de gros doute que les boutons soient actifs à l'état HIGH et je n'ai pas compris à quoi sert MultiStepper

#include <AccelStepper.h>
#include <MultiStepper.h>

AccelStepper stepper1(AccelStepper::FULL4WIRE, 26, 27, 28, 29);
AccelStepper stepper2(AccelStepper::FULL4WIRE, 38, 39, 40, 41);
AccelStepper stepper3(AccelStepper::FULL4WIRE, 50, 51, 52, 53);

MultiStepper steppers;

const int bouton1 = 2; //marche avant rapide axe AD
const int bouton2 = 3; //marche arrière rapide axe AD
const int bouton3 = 4; //marche avant rapide axe DEC
const int bouton4 = 5; //marche arrière rapide axe DEC
const int bouton5 = 6; //marche avant moteur de MAP
const int bouton6 = 7; //marche arrière moteur de MAP

void setup() {
  Serial.begin(9600);

  pinMode (bouton1, INPUT_PULLUP);
  pinMode (bouton2, INPUT_PULLUP);
  pinMode (bouton3, INPUT_PULLUP);
  pinMode (bouton4, INPUT_PULLUP);
  pinMode (bouton5, INPUT_PULLUP);
  pinMode (bouton6, INPUT_PULLUP);

  stepper1.setMaxSpeed(360);
  stepper2.setMaxSpeed(180);
  stepper3.setMaxSpeed(240);

  stepper1.setSpeed(14.4);
  stepper2.setSpeed(0);
  stepper3.setSpeed(0);

  steppers.addStepper(stepper1);
  steppers.addStepper(stepper2);
  steppers.addStepper(stepper3);
}
void loop() {
  if (digitalRead(bouton1) == HIGH) {
    stepper1.setSpeed(360);//si j'appuis sur le bouton le moteur AD accélère
    stepper1.runSpeed();
  }
  else {
    stepper1.setSpeed(14.4);//si je n'appuis pas sur le bouton le moteur AD continu la vitesse normale
  }

  if (digitalRead(bouton2) == HIGH) {
    stepper1.setSpeed(-360);//si j'appuis sur le bouton le moteur AD recule
    stepper1.runSpeed();
  }
  else {
    stepper1.setSpeed(14.4);//si je n'appuis pas sur le bouton le moteur AD continu la vitesse normale
  }

  if (digitalRead(bouton3) == HIGH) {
    stepper2.setSpeed(180);//si j'appuis sur le bouton le moteur DEC accélère
    stepper2.runSpeed();
  }
  else {
    stepper2.stop();//si je n'appuis pas sur le bouton le moteur DEC s'éteint
  }

  if (digitalRead(bouton4) == HIGH) {
    stepper2.setSpeed(-180);//si j'appuis sur le bouton le moteur DEC recule
    stepper2.runSpeed();
  }
  else {
    stepper2.stop();//si je n'appuis pas sur le bouton le moteur DEC s'éteint ou s'arrête
  }

  if (digitalRead(bouton5) == HIGH) {
    stepper3.setSpeed(10);//si j'appuis sur le bouton le moteur déplace le PO pour faire la MAP
    stepper3.runSpeed();
  }
  else {
    stepper3.stop();//si je n'appuis pas sur le bouton le moteur de la MAP s'arrête ou s'éteint
  }

  if (digitalRead(bouton6) == HIGH) {
    stepper3.setSpeed(10);//si j'appuis sur le bouton le moteur déplace le PO pour faire la MAP
    stepper3.runSpeed();
  }
  else {
    stepper3.stop();//si je n'appuis pas sur le bouton le moteur de la MAP s'arrête ou s'éteint
  }
}

merci
mais j'ai toujours le même message d'erreur https://cjoint.com/doc/21_01/KApqEzfGAfr_Capture-d%E2%80%99%C3%A9cran-2021-01-15-172933.pnghttp://
cdt

Tu as quelle version d'AccelStepper ?

celle-ci

merci
cdt

Elle commence à dater. Mets à jour ta librairie

Mets à jour ta librairie

Ainsi que le titre parce que "encore besoin d'aide" n'est pas très évocateur de la demande. En fait tous les messages de ce forum pourraient avoir ce titre. Pour changer le titre, il faut éditer le premier post.

kamill:
Elle commence à dater. Mets à jour ta librairie

je n'y connais rien j'ai débuté il y a un mois on fait comment

cdt

Menu Outils - Gérer les bibliothèques
Recherches la bibliothèque AccelStepper puis cliques sur mettre à jour.

Bonsoir
c'est fait mais toujours le même message
cdt

Ben ce doit être une autre librairie avec le même nom.

Effaces la librairie AccelStepper actuelle et installes celle ci GitHub - adafruit/AccelStepper: A small fork of AccelStepper v1.3 with AF_motor (Adafruit motor shield) support!