Bonsoir
Je suis débutant en programmation ARDUINO et en PC et j’ai le problème suivant qui est de transmettre une valeur de type int ou word d’une variable par l’intermédiaire du bus série IDE du PC vers la carte ARDUINO UNO .
J’ai trouvé sur le web des morceaux de programmes qui fonctionnent bien mais seulement qu’ avec des caractères de type CHAR
Alors voila deux solutions se présente :
1 _ il ne peut y avoir que des transmissions de caractère de type CHAR auquel cas comment procède t’on pour convertir ces caractères en une valeur décimale ?
Exemple : je veux donner à une variable de type INT dans l’arduino (par exemple une durée de tempo = 125 ms ) .
2_ il y a une procédure ou une librairie qui permet de transmettre des valeurs décimales hexa ou binaire directement par ce bus série IDE du PC vers la carte arduino
Un bout de programme ou une explication serait la bienvenue car je m’y casse les dents si l’on puit dire .
Bonne soirée et merci d’avance
Bonsoir
Ce sous forum est exclusivement dédié à la publication et la consultation des tutoriels !!
Demandes au modérateur le déplacement de ta question dans le forum principal , la où les questions doivent être posées (cf Règles du Forum). Pour cela utilises le lien 'Report to Moderator'
Par exemple ça. Il y a plus compliqué...
char decimal [10] ; // ça ne coute pas cher
int binaire1, binaire2 ; // c'est encore moins cher
void setup() {
delay (200) ;
Serial.begin(115200);
while (!Serial) ;
delay (200) ;
}
void loop() {
binaire1 = random (10000) ;
sprintf (decimal, "%d", binaire1) ;
sscanf (decimal, "%d", &binaire2) ;
Serial.printf (" %d %s %d \r\n", binaire1, decimal, binaire2) ;
if (binaire1 != binaire2) while (true) ; // harakiri
}
bonjour
Tout d'abord merci de votre réponse .Cependant mon IDE ne veut pas compiler le programme que vous m'avez proposé gentiment .Comme je suis débutant malgré tout je suis un peu perdu tellement le niveau de programmation est haut .Alors je ne sais pas le modifier pour qu'il fonctionne .
j'ai résolu en partie mon problème de modifier la valeur d'une variable en ligne pendant le déroulement du programme à partir du PC (bus sériel de l'ide )
Je mets entre cote le programme que j'ai réalisé pour faire ce que je voulais.
on peut remarquer la programmation de bas étage mais cela fonctionne. La variable taux et la valeur d'incrément d'augmentation ou de diminution de la valeur de la variable . Avec le même principe on peut également modifier en ligne la variable d'incrément ("taux")
Pourquoi cela
pour changer des valeurs de tempo dans le logiciel en cours de mise au point sans avoir à recompiler et recharger le programme car il y a une usure du matériel me suis je entendu dire.
En tous cas c'est pratique.
/*****************************************************/
/************** COMMENTAIRES *********************/
/*****************************************************/
/* Ce programme permet de modifier une variable
entière en ligne pendant le fonctionnement du
programme et cela à l'aide du bus serie (IDE)à
partir du PC
/*****************************************************/
/*********** DECLARATIONS DES VARIABLES *************/
/*****************************************************/
char carlu = 0;//variable contenant le caractère à lire
byte cardispo = 0; /* variable contenant le nombre de
caractères disponibles dans
le buffer*/
int nombre = 0 ;/* variable à modifier à partir
du PC (IDE série )*/
byte taux = 10 ;// valeur en + ou - par pas
/***************************************************/
void setup()
/***************************************************/
{
Serial.begin(115200);
}
/***************************************************/
void loop()
/***************************************************/
{
if (Serial.available() > 0)
{
carlu = Serial.read(); // on lit le caractère
if (carlu == 'p')
{
nombre = nombre + taux ; ;
Serial.print("nombre+....="); //permet de voir
Serial.print(nombre); //la valeur
Serial.print(" carlu....=");//donnée
Serial.println(carlu);// pour info et verif
} // du caractère envoyé
if (carlu == 'm')
{
nombre = nombre -taux ;
Serial.print("nombre-....=");
Serial.println(nombre);
Serial.print(" carlu....=");//donnée
Serial.println(carlu); // pour info et verif
} // du caractère envoyé
}accolade available
cardispo = Serial.available(); /* on relit le
nombre de caractères dispo*/
}//accolade fin de loop
/***************************************************/
/********* FIN DE PROGRAMME ****************/
/***************************************************/
Effectivement l'instruction "printf" ne passe pas sur un Arduino Uno. Quelle misère, vive l'ESP32 ! La remplacer par :
Serial.print (binaire1) ; Serial.print (" ") ;
Serial.print (decimal) ; Serial.print (" ") ;
Serial.println (binaire2) ;
This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.