Modifier une variable avec le moniteur serie

Bonjour à tous j’aimerais créer un programme qui fait tourner un moteur pas à pas. Mon nombre de pas devrait être modifiable depuis le moniteur série je pensais donc faire comme ce-ci. Mais mon moteur ne tourne pas du nombre de pas que je rentre dans le moniteur série.
Pourriez vous m’aider je suis débutant.

test_bluetooth_mot.ino (360 Bytes)

Les parties qui me gênent dans votre code sont:

if (Serial.available())
{
    pas = Serial.read();
    Serial.write(pas); // et pas est déclaré comme un char  caractère
}
else
{
mmoteur.step(pas);// êtes vous sur que moteur.step est nourri par un caractère?
delay(500);
}

Ton code :

#include <Stepper.h>
#include <SoftwareSerial.h>

SoftwareSerial mserie(11, 10);
Stepper mmoteur (3072, 6, 7, 8, 9);
char pas;

void setup() {
  Serial.begin(9600);
  mmoteur.setSpeed(3);
}

void loop() {
  if (Serial.available())
  {
    pas = Serial.read();
    Serial.write(pas);
  }
  else
  {
    mmoteur.step(pas);
    delay(500);
  }
}

Je pense que tu devrais définir pas en int et le lire avec Serial.parseInt : à tester

#include <Stepper.h>
#include <SoftwareSerial.h>

SoftwareSerial mserie(11, 10);
Stepper mmoteur (3072, 6, 7, 8, 9);
int pas;  // <--

void setup() {
  Serial.begin(9600);
  mmoteur.setSpeed(3);
}

void loop() {
  if (Serial.available())
  {
    pas = Serial.parseInt();  // <---
    Serial.write(pas);
  }
  else
  {
    mmoteur.step(pas);
    delay(500);
  }
}

Autre possibilité :

#include <Stepper.h>
#include <SoftwareSerial.h>

SoftwareSerial mserie(11, 10);
Stepper mmoteur (3072, 6, 7, 8, 9);

void setup() {
  Serial.begin(9600);
  mmoteur.setSpeed(3);
}

void loop() {
  while (Serial.available()) {
    int pas = Serial.parseInt();
    if (Serial.read() == '\n') {
      Serial.write(pas);
      mmoteur.step(pas);
      delay(500);
    }
  }
}

Tu ne te sers pas de la liaison série logicielle ?

Alors voilà où j’en suis. Avec ce code pas de problème, j’arrive à envoyer mes données via le port serie bluetooth mais le seul petit souci c’est que je peux seulement envoyer des chiffres entre 0 et 9, si je veux mettre plus grand comme 98, seul le chiffre 8 reste comme ma valeur. Comment pourais-je régler ce problème?

#include <SoftwareSerial.h>
#include <Stepper.h>
Stepper mmoteur (3072, 6, 7, 8, 9);
SoftwareSerial Bserie(11, 10);
int donnees;
int valeur;

void setup() 
{
Serial.begin(9600); 
mmoteur.setSpeed(5); 
Bserie.begin(9600);

}

void loop() 
{


if (Bserie.available() != 0) 
      {
        donnees = Bserie.read();
        valeur = (donnees-48);
        delay(1);
        Serial.print("La donnees est: ");
        Serial.println(valeur);
      }

       
mmoteur.step(valeur);
delay(200);


}