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
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.
Bonjour et bienvenue,
Merci de prendre quelques minutes pour lire "Les bonnes pratiques du forum francophone" et les appliquer.
QUELQUES RÈGLES SIMPLES À LIRE IMPÉRATIVEMENT AVANT DE POSTER
Elles faciliteront la vie de tous et contribueront à rendre votre expérience la plus enrichissante possible.
Bienvenue !!!
Vous rejoignez une communauté : nous incitons très fortement les nouveaux arrivants sur la partie francophone à rédiger dans ce fil de discussion une rapide présentation personnelle.
Aidez nous à vous aider : les réponses qui sont faites sur le forum francophone arduino sont majorit…
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.
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.
// 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
system
Closed
September 10, 2025, 10:48am
17
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.