Codage pour bluetooth

bonjour
je cherche de l'aide pour installe un Bluetooth hc05 dans un programme déjà construit.
je suis débutant sur Arduino.
ci joint fichier ino du programme.
merci

focuseur_v2.ino (9,8 Ko)

petite précision j'ai essayer j'ai des erreur, mais j'ai essayer :rofl:
le contrôleur hc-05 est ok
la ligne 29 me pose problème si je broche sur 10 est 11 ?

Veuillez utiliser la langue anglaise dans les sections anglaises du forum. Votre sujet a été déplacé vers la section française du forum.

thank you

Bonjour et bienvenue,

Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.


Tu n'auras pas beaucoup de réponses, de nombreuses personnes ne vont pas vouloir prendre le risque de charger une archive depuis un site externe. Merci de faire un copié-collé du code dans le corps du message en suivant les consignes données dans les bonnes pratiques du forum.

Bonjour pascal337

Lesquelles ?

Quel problème?

Cordialement
jpbbricole


ligne 29

softwareSerial debugSeSrial(9, 10);

je veut mettre se code pour le Bluetooth dans le fichier focuseur

J'ai l'impression que tu n'as pas lu les bonnes pratiques du forum francophone, ni ma remarque sur la façon de poster du code, comme je te l'ai recommandé au #3
On ne met pas de code en copie d'écran c'est illisible et on ne peut pas l'exécuter si on veut le tester.
Il faut faire un copié-collé entre les balises code, l'icône <CODE> en haut de la fenêtre d'édition du message.

La remarque s'applique aussi pour les sorties de compilation.

oups desolé

// bluethoot loop
{
  int i = 0;
  char someChar[32] = { 0 };
  // when characters arrive over the serial port...
  if (Serial.available()) {
    do {
      someChar[i++] = Serial.read();
      delay(3);
    } while (Serial.available() > 0);
    mySerial.println(someChar);
    Serial.println(someChar);
  }
  while (mySerial.available())
    Serial.print((char)mySerial.read());
}

C:\Users\pascal-pc\Desktop\FOCUSER_ARDUINO_DIY\focuseur_v2\focuseur_v2.ino:414:1: error: expected unqualified-id before '{' token
 {
 ^

exit status 1

Compilation error: expected unqualified-id before '{' token

Erreur ligne 414. Tu ne donnes qu'un morceau du programme comment veux-tu que l'on s'y retrouve.
En plus se genre d'erreur peut être causée par une faute de frappe plus haut dans le code.
Mets le code complet.

saisissez ou collez du code ici
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <AccelStepper.h>
#include <EEPROM.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TimerOne.h>

// Définir les pins RX (11) et TX (10) pour le HC-05
#define rxPin 11  // Broche 11 en tant que RX, à raccorder sur TX du HC-05
#define txPin 10  // Broche 10 en tant que TX, à raccorder sur RX du HC-05

#define BTN_IN 7
#define BTN_OUT 8
#define BTN_STEP 32

#define PIN_DRIVER_ENABLE 4
#define PIN_DRIVER_DIR 3
#define PIN_DRIVER_STEP 5

#define ONE_WIRE_BUS 2
#define PERIOD_US 2000

// Définir SoftwareSerial pour le HC-05 et debugSerial
SoftwareSerial mySerial(rxPin, txPin);  // Bluetooth HC-05 sur pins 11 (RX) et 10 (TX)
SoftwareSerial debugSerial(9, 12);      // Debug déplacé sur pins 9 (RX) et 12 (TX)

// Initialiser le stepper
AccelStepper stepper(AccelStepper::FULL4WIRE, 6, 4, 5, 3, false);

// Capteur de température
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

// Variables pour la vitesse du moteur
int speedFactor = 16;
int speedFactorRaw = 4;
int speedMult = 30;

float t_coeff = 0;

// Variables pour les boutons et positions
unsigned long currentPosition = 0;
long targetPosition = 0;
unsigned long lastSavedPosition = 0;
long millisLastMove = 0;
const long millisDisableDelay = 15000;
bool isRunning = false;

// Variables pour la lecture des commandes
bool eoc = false;
String line;

// Déclarations de fonctions
long hexstr2long(String line);
static void intHandler();

/*************************************
 * SETUP
*************************************/
void setup() {
  // Configurer les pins pour le Bluetooth
  pinMode(rxPin, INPUT);
  pinMode(txPin, OUTPUT);

  // Démarrer les communications série
  Serial.begin(9600);       // USB
  mySerial.begin(9600);     // Bluetooth HC-05
  debugSerial.begin(9600);  // Debug

  // Initialiser les pins
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);

  // Initialiser le moteur
  debugSerial.println("init motor driver...");
  stepper.setMaxSpeed(speedFactor * speedMult);
  stepper.setAcceleration(100);
  millisLastMove = millis();

  // Lire la position sauvegardée dans l'EEPROM
  EEPROM.put(0, (long)0);  // Réinitialiser à 0 (optionnel, à retirer si non désiré)
  EEPROM.get(0, currentPosition);
  currentPosition = max(0, currentPosition);

  stepper.setCurrentPosition(currentPosition);
  lastSavedPosition = currentPosition;
  debugSerial.print("Last position in EEPROM...");
  debugSerial.println(lastSavedPosition);

  // Initialiser le capteur de température
  sensors.begin();

  // Configurer les boutons
  pinMode(BTN_IN, INPUT_PULLUP);
  pinMode(BTN_OUT, INPUT_PULLUP);

  // Initialiser le timer
  Timer1.initialize(PERIOD_US);
  Timer1.attachInterrupt(intHandler);

  debugSerial.println("Setup terminé, HC-05 sur pins 10 et 11 prêt");
}

/*************************************
 * LOOP
*************************************/
void loop() {
  // Vérifier les données reçues via Bluetooth ou USB
  if (mySerial.available()) {
    processSerialData(mySerial);
  }
  if (Serial.available()) {
    processSerialData(Serial);
  }

  // Traiter la commande reçue
  if (eoc) {
    debugSerial.print("Got new command: ");
    debugSerial.println(line);

    if (line.startsWith("2")) {
      debugSerial.println("Dual focuser command? Processing for first motor");
      line = line.substring(1);
    }

    String cmd, param;
    int len = line.length();
    if (len >= 2) {
      cmd = line.substring(0, 2);
    }
    if (len > 2) {
      param = line.substring(2);
    }

    debugSerial.print(cmd);
    debugSerial.print(":");
    debugSerial.println(param);

    line = "";
    eoc = false;

    // Répondre aux commandes
    if (cmd.equalsIgnoreCase("GB")) {
      Serial.print("00#");
      mySerial.print("00#");
    }
    if (cmd.equalsIgnoreCase("PH")) {
      stepper.setCurrentPosition(8000);
      stepper.moveTo(0);
      isRunning = true;
    }
    if (cmd.equalsIgnoreCase("GV")) {
      Serial.print("10#");
      mySerial.print("10#");
    }
    if (cmd.equalsIgnoreCase("GP")) {
      currentPosition = stepper.currentPosition();
      char tempString[6];
      sprintf(tempString, "%04X", currentPosition);
      Serial.print(tempString);
      Serial.print("#");
      mySerial.print(tempString);
      mySerial.print("#");
      debugSerial.print("current motor position: 0x");
      debugSerial.println(tempString);
    }
    if (cmd.equalsIgnoreCase("GN")) {
      char tempString[6];
      sprintf(tempString, "%04X", targetPosition);
      Serial.print(tempString);
      Serial.print("#");
      mySerial.print(tempString);
      mySerial.print("#");
      debugSerial.print("target motor position: ");
      debugSerial.println(tempString);
    }
    if (cmd.equalsIgnoreCase("GT")) {
      sensors.requestTemperatures();
      float temperature = sensors.getTempCByIndex(0);
      debugSerial.print("temperature: ");
      debugSerial.println(temperature);
      if (temperature > 100 || temperature < -50) {
        temperature = 0;
      }
      byte t_int = (byte)temperature << 1;
      t_int += round(temperature - (byte)temperature);
      Serial.print(t_int, HEX);
      Serial.print('#');
      mySerial.print(t_int, HEX);
      mySerial.print('#');
    }
    if (cmd.equalsIgnoreCase("GC")) {
      Serial.print((byte)t_coeff, HEX);
      Serial.print('#');
      mySerial.print((byte)t_coeff, HEX);
      mySerial.print('#');
    }
    if (cmd.equalsIgnoreCase("SC")) {
      if (param.length() > 4) {
        param = param.substring(param.length() - 4);
      }
      if (param.startsWith("F")) {
        t_coeff = ((0xFFFF - strtol(param.c_str(), NULL, 16)) / -2.0f) - 0.5f;
      } else {
        t_coeff = strtol(param.c_str(), NULL, 16) / 2.0f;
      }
      debugSerial.print("t_coeff: ");
      debugSerial.println(t_coeff);
    }
    if (cmd.equalsIgnoreCase("GD")) {
      char tempString[6];
      sprintf(tempString, "%02X", speedFactorRaw);
      Serial.print(tempString);
      Serial.print("#");
      mySerial.print(tempString);
      mySerial.print("#");
      debugSerial.print("current motor speed: ");
      debugSerial.println(tempString);
    }
    if (cmd.equalsIgnoreCase("SD")) {
      speedFactorRaw = hexstr2long(param);
      speedFactor = 32 / speedFactorRaw;
      stepper.setMaxSpeed(speedFactor * speedMult);
    }
    if (cmd.equalsIgnoreCase("GH")) {
      Serial.print("00#");
      mySerial.print("00#");
    }
    if (cmd.equalsIgnoreCase("GI")) {
      if (abs(targetPosition - currentPosition) > 0) {
        Serial.print("01#");
        mySerial.print("01#");
      } else {
        Serial.print("00#");
        mySerial.print("00#");
      }
    }
    if (cmd.equalsIgnoreCase("SP")) {
      currentPosition = hexstr2long(param);
      stepper.setCurrentPosition(currentPosition);
    }
    if (cmd.equalsIgnoreCase("SN")) {
      targetPosition = hexstr2long(param);
      debugSerial.print("new target position: ");
      debugSerial.println(targetPosition);
    }
    if (cmd.equalsIgnoreCase("FG")) {
      stepper.enableOutputs();
      stepper.moveTo(targetPosition);
    }
    if (cmd.equalsIgnoreCase("FQ")) {
      stepper.stop();
    }
  }

  // Gestion des boutons manuels et du moteur
  int btn_in = digitalRead(BTN_IN);
  int btn_out = digitalRead(BTN_OUT);

  if (stepper.distanceToGo() != 0) {
    isRunning = true;
    millisLastMove = millis();
  } else if (btn_in == LOW || btn_out == LOW) {
    stepper.enableOutputs();
    while (btn_in == LOW || btn_out == LOW) {
      if (btn_in == LOW) {
        stepper.move(BTN_STEP);
      } else {
        stepper.move(-BTN_STEP);
      }
      stepper.runSpeedToPosition();
      btn_in = digitalRead(BTN_IN);
      btn_out = digitalRead(BTN_OUT);
    }
    stepper.stop();
    stepper.disableOutputs();
    millisLastMove = millis();
    currentPosition = stepper.currentPosition();
  } else {
    isRunning = false;
    if (millis() - millisLastMove > millisDisableDelay) {
      if (lastSavedPosition != currentPosition) {
        EEPROM.put(0, currentPosition);
        lastSavedPosition = currentPosition;
        debugSerial.println("Save last position to EEPROM");
      }
      stepper.disableOutputs();
      debugSerial.println("Disabled output pins");
    }
  }

  digitalWrite(LED_BUILTIN, isRunning);
}

/*************************************
 * FONCTIONS UTILITAIRES
*************************************/
void processSerialData(Stream &serial) {
  while (serial.available() && !eoc) {
    char c = serial.read();
    if (c != '#' && c != ':') {
      line += c;
    } else if (c == '#') {
      eoc = true;
    }
  }
}

long hexstr2long(String line) {
  char buf[line.length() + 1];
  line.toCharArray(buf, line.length() + 1);
  return strtol(buf, NULL, 16);
}

static void intHandler() {
  stepper.run();
}

C'est bien le bon programme que tu as mis et il est complet?
Le compte-rendu de compilation que tu as mis un peu plus haut indique une erreur ligne 414 et le programme au-dessus n'a que 318 lignes ????

non j'ai réussi a compiler sans erreur tout est ok ,ce qui m'intéresse c'est de comprendre mes erreur.

merci

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.