Bonjour !
Topic 2 car j'avais déjà fait appel à vous il y a plus de 4 mois et m'aviez remis sur de bon rail :
http://forum.arduino.cc/index.php?topic=550683.0
Je reviens avec un slider avec sa forme finale .

Mais comme vous l'aurez compris , au niveau programme ... pff ... je galère comme un âne !
Quelques infos :
Slider de 1m en alu piloter via Bluetooth par une appli Android fait avec App Inventor 2
Slider avec un moteur type Nema 17 avec réducteur ( venant d'un scanner : rapport puissance/vitesse idéal)
Moteur piloté par un driver A4998
Driver piloté par un Arduino nano
Le tout alimenter par une batterie Lipo 2S 7,4v 2500mAh
Partie de mon programme android :
Le design :
Le programme Arduino pour test :
#include <Arduino.h>
#include "BasicStepperDriver.h"
#include <SoftwareSerial.h>
#define MOTOR_STEPS 200 //1.8 degrees/pas
#define RPM 200 //vitesse moteur
#define MICROSTEPS 1 //Pas complet
#define DIR 11 // pin DIR
#define STEP 10 // pin STEP
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);
SoftwareSerial mySerial ( 6 , 7 ) ; // RX, TX
char nbphoto = "";
char interval = "";
char distance = "";
String trame = "";
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
stepper.begin(RPM, MICROSTEPS);
}
void loop() {
trame = mySerial.readStringUntil(',');
nbphoto = trame.toFloat();
Serial.println (nbphoto);
trame = mySerial.readStringUntil(',');
interval = trame.toFloat();
Serial.println (interval);
trame = mySerial.readStringUntil('f');
distance = trame.toFloat();
Serial.println (distance);
for ( int i = 0 ; i < nbphoto ; i++ )
if (nbphoto > 1)
{
stepper.move(distance); // Déplacement du chariot de X distance
delay(500);
digitalWrite(12, HIGH); // Déclenchement de la photo
delay(300);
digitalWrite(12, LOW); // arrêt du déclenchement
delay(interval); // interval entre 2 photos
}
}
Voila , voila ...
Maintenant mes soucis
:
J'ai du beaucoup de mal à comprendre les nuances et la gestions série ( et surtout les différentes types de données )
J'ai fait cette ébauche de programme pour essayé de comprendre comment ça marche .
Mais j'ai des soucis de conversions en char et String ... je vois dans mon moniteur série que j'envoie en faite avec mon prog android , par exemple :
37,122,100f ( , est le séparateur et le f pour fin de trame )
L'arduino à l'air de bien séparer la trame vers les variables , mais quand il println le résultat , je vois :
%
z
d
Je sais que le soucis vient de ma gestion de type de variable , mais j'ai beau lire les articles et tuto qui traite de cela ... une fois qu'il faut appliqué à mon programme ...pfff.
1- comment et quel type de variable utiliser , sachant que certaines valeurs pourront s’étendre de - 350 à 350 ?
2- ya t-il une meilleur méthode pour traité une trame ? je pense que oui , mais simple à comprendre pour un noob en c comme moi ?
3 - je devrais créer une fonction pour le traitement de ma trame ? si oui quand on appelle une fonction , a t-on les résultats de cette fonctions obligatoirement ou il faut t-il faire quelques chose en plus de l'appeler ? ( pas évidant à formuler celle-la ... )
4- auriez-vous des conseilles ? je part pas dans la bonne direction ?
Merci aux âmes charitables qui pourront m'aider !




