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
}
}
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
}
}
// 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
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?
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
}
}
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.