Calculer avec l’Arduino (2)
Les opérations sur les bits
. Par : Jean-Luc
Vous répondez à :
Entait c’est ce que je cherche a savoir !
J’essaye de faire un système LI-Fi (transport d’information par la lumière) En locurrence on transmet des 1 avec une led allumée et 0 avec une led éteinte
J’arrive à envoyer mon message et à le recevoir mais je ne sais pas comment "stocker" et convertir en lettre mon message binaire.
17 Messages
-
Calculer avec l’Arduino (2) 11 mai 2015 00:19, par hicham
q’est ce que ne donne les deux lignes d’instruction suivante :
- a=5;
- a=|a;
-
Calculer avec l’Arduino (2) 11 mai 2015 09:54, par Jean-Luc
La première met la valeur 5 dans la variable
a
.
La seconde n’est pas une expression possible en langage Arduino/C. Je suppose qu’il y a une faute de frappe et que vous vouliez écrirea |= a;
. C’est l’équivalent dea = a | a;
eta | a
est égal àa
. Donc l’expression se réduit àa = a;
-
Calculer avec l’Arduino (2) résultat des pins sur var a et var b 19 juillet 2016 21:47, par anbze
Bonjour ,Cela fait deux semaines que j’ étudie Arduino et je me casse la tête pour trouver une solution : c’ est à dire comment utiliser deux capteurs a et b , les rentrer dans deux variables (x et y) et diviser les données de "x" par les données de "y" et sortir le résultat sur les pins de l arduino. Par comparaison avec le Pic, Et encore moins comment rentrer je ne trouve pas l’ accumulateur "W" sur l arduino.
Je suis habitué aux Pics où il fallait mettre le premier chiffre dans la variable "x" et le deuxième dans la variable "y" mais avec arduino je ne sais pas comment rentrer les données des pins dans les variables "x".
et "y".
J espère que j ai été assez explicite et vous remercie de votre réponse.-
Calculer avec l’Arduino (2) résultat des pins sur var a et var b 20 juillet 2016 10:12, par dominique
Êtes-vous certain que votre question à un rapport avec le modélisme ferroviaire ?
Quel est le cadre dans lequel s’inscrit votre question ?Je pense que vous devriez commencer par lire un livre d’introduction à l’Arduino et au langage C : vous y trouverez votre réponse.
Vous avez aussi des articles sur les entrées-sorties, notamment sur le site officiel :
-
-
Convertir une valeur binaire en texte 9 mai 2019 16:56, par Romain
Bonjour,
j’essaye de convertir une suite de 1 et 0 ( par ex : x=01001000 )en une lettre ( Ici x = H)Je ne sais pas sous quel forme (char,int,..) initialiser ma variable (x) et je ne sais également pas ce qu’il faut ecrire pour convertir ma variable.
J’ai réussit a faire l’inverse mais la je bloque.Merci de votre réponse .
Programme pour convertir "Hector" en binaire :
- void loop()
- {
- String myText = "Hector";
- for(int i=0; i<myText.length(); i++)
- {
- char myChar = myText.charAt(i);
- for(int i=7; i>=0; i--)
- {
- }
- }
- }
-
Bonsoir,
X est une chaîne de caractères ?
-
Entait c’est ce que je cherche a savoir !
J’essaye de faire un système LI-Fi (transport d’information par la lumière) En locurrence on transmet des 1 avec une led allumée et 0 avec une led éteinte
J’arrive à envoyer mon message et à le recevoir mais je ne sais pas comment "stocker" et convertir en lettre mon message binaire.-
Ok, vous recevez des 0 et des 1 et vous voulez les accumuler dans un octet. Si
b
est le bit reçu etlettre
la lettre :- byte b;
- unsigned char lettre;
alors après avoir initialisé
lettre
à 0 et en supposant que vous receviez le bit de poids fort en premier, pour chaque bit, on fait :- lettre = (lettre << 1) | b;
Si par contre c’est le bit de poids faible qui est reçu en premier, on fera :
- lettre = (lettre >> 1) | (b << 7);
Il faut par contre bien recevoir 8 bits
À la fin,
lettre
contient ce que vous voulez.-
Bonsoir,
J’ai essayer votre solution mais je n’arrive pas a afficher "lettre" dans un Serial.print
Et je n’ai pas compris la ligne de code donc je ne peux pas l’adapter (Pas besoin d’expliquer si cest trop long)Merci de votre réponse.
-
Rajoutez
(char)
juste avantlettre
dans leSerial.print
-
Bon je désespère un peu, lorsque j’écrit Serial.print(lettre) j’obtiens que des 0 et pour Serial.print((char)lettre) je n’obtient rien !
Je vous laisse mon programme si vous avez des idée je suis preneur.
- boolean Start = true; //this is used to determine if the counting has started
- byte b ;
- unsigned char lettre = 0 ;
- void setup()
- {
- }
- void loop()
- {
- // read the sensor value
- for (int i=0 ; i<=7 ; i++) {
- // read the sensor value
- if (Start==true && sensorValue>850) {
- // if the counting has not yet started and the light is on
- b = 1 ;
- }
- if (Start== true && sensorValue<850) {
- // if the counting has started and the light is off
- b = 0 ;
- lettre = (lettre << 1) | b;
- }
- }
- }
-
Bonjour,
Des idées j’en ai plusieurs :
- j’ai remis l’indentation d’équerre. L’indentation ce n’est pas que pour faire beau, ça permet de trouver les bugs puisqu’elle renseigne sur la structuration du programme. Si vous ne faites pas des efforts sur l’indentation vous allez écrire des choses fausse sans le voir.
- À quoi sert la ligne 13 ?
sensorValue
n’est pas utilisé et est écrasé ligne 17. - Dans le
if
de la ligne 18 à 22, vous ne faites rien deb
. - Si
sensorValue
est exactement égal à 850, que devrait-il se passer ? - Je soupçonne que ce qui est ligne 29 devrait être deux lignes plus bas.
- On n’écrit jamais deux
if
qui sont censés être mutuellement exclusifs, on met un else à la place :
- if (Start == true) {
- if (sensorValue > 850) {
- b = 1 ;
- }
- else {
- b = 0;
- }
- lettre = (lettre << 1) | b;
- }
ou plus concis :
- if (Start == true) {
- lettre = (lettre << 1) | ((sensorValue > 850) ? 1 : 0);
- }
-
-
-
-
-
Calculer avec l’Arduino (2) 14 mai 2020 16:20, par JeeLet
-
Calculer avec l’Arduino (2) 20 mai 2020 17:57, par Nicolas
Félicitations pour vos articles. Vraiment une pédagogie sans pareil.
Je voudrais s’il vous plait si c’est possible de mettre dans chaque article ou sur quelques un pourquoi on utilise, tel ou tel élément. Par exemple pour quoi on utiliserait les opérateurs de décalage. Dans quelle but ? Comme ça on cible nos besoins et on comprends mieux pourquoi on utiliserait plus une opération qu’une autre.
Merci encore-
Bonjour,
Merci beaucoup pour votre commentaire. J’ai complété l’article avec un exemple qui illustre l’emploi du<<
et du>>
mais également du&
, du|
et du~
.
-