Marque : on Robotics Starter Kit - analyse LineFollowing.ino partie 1 (2 / 2 étapes)

Étape 2: Sortie de readOptical.py

Comme je le disais dans un précédent blog, j’ai fait toutes les mathématiques et la logique pour vous, tout ce que vous avez à faire est de suivre.

Voici votre chance d’obtenir permet de lire des nombres binaires et hexadécimaux. At est tout d’abord on dirait comme charabia, mais vous obtiendrez utiles. Si vous rencontrez des problèmes,

Lire les tutoriels que j’ai fait référencent à dans mon blog précédent messages.

Si vous ne voulez pas aller dans ce grand détail, puis il suffit de regarder pour les sections de sortie lorsque les résultats indiquent soit « aller de l’avant », « tourner à gauche » ou « tournez à droite »

Permet d’analyser ce qui se passe à l’intérieur du programme :

Premier arrêt permet d’observer les observations de la méthode readOptical() dans notre programme de lineFollow.ino :

0x000 optical1 noir

0xFF optical1 blanc

optical1 0 x 100 blanc

0x1ff optical1 noir

0x2XX n’est pas prêt ; n’utilisez pas cette valeur

Notez que trois lectures du capteur optique commencent par 0 x 1 ou 0 x 2 hex.

Les autres commencent par 0 x 0 ou 0xf. Si vous convertissez ces nombres binaires, vous verrez un motif. Chargez le Python ralenti et tapez la commande suivante :

>>> format (oxff, « # 018 b »)

Le paramètre de format « # 018 b » indique pour afficher le nombre passé comme un nombre binaire de 16 bits, la commande format retournera ce qui suit:'0b0000000011111111′

Remarquez qu’il y a 8 zéros suivis de 8 1.

Ce nombre de 16 bits a les 8 bits les moins significatifs la valeur 1.

Si vous tapez ce qui suit en Python :

>>> hex(int('11111111′,2))

Vous obtiendrez: « 0xff »

Maintenant passons essaient ce qui suit :

>>> format (0 × 0, 018 « # b »)

Python retourne: ' 0b0000000000000000′

Permet d’essayer les deux autres valeurs que la fonction readOptical() retourne.

>>> format (0x1ff, « # 018 b »)

' 0b0000000111111111′

>>> format (0 × 100, « # 018 b »)

' 0b0000000100000000′

1 combien sont affichés dans la représentation binaire de 0x1ff ?

Quelle position est la 1, en comptant à partir de la droite, pour 0 × 100 ?

Corriger, dans les deux cas 1 s’affiche dans la neuvième position de bit de la droite.

La méthode readOptical() dans le lineFollow.ino retourne uniquement les valeurs qui ont une nette tendance.

Capteurs optiques de 1 retournent uniquement des nombres qui sont définies au sein de 8 bits.

Optiques 2 capteurs peuvent avoir des numéros qui sont définies dans la neuvième position de bit, ou 16 bits.

Nous allons commencer à regarder nos résultats du programme Python readOptical.py.

Tout d’abord, nous examinons les variables qui sont configurés dans le début du programme lineFollow.ino :

capteur _in = 0xff

Action1 = 0 x 0

Action2 = 0 x 0

sensorValue1 = 0 x 0

sensorValue2 = 0 x 0

La première valeur de capteur que nous lisons est 0xff, le reste des variables sont 0 x 0.

Le premier si instruction effectue une opération AND sur deux valeurs :

Si ((sensor_in & 0xf00) == 0)

Regardez à nouveau la sortie :

0xFF & 0xf00

0xFF = 0b0000000011111111

0xf00 = 0b0000111100000000

Si 0xff & 0xf00 == 0

à l’intérieur d’if sensor_in & 0xf00 == 00

xff & 0xff

sensorValue1 = 0b0000000011111111

& 0b0000000011111111

——————

0b0000000011111111

sensorValue1 = 0xff

Regardez attentivement l’opération de bits AND, nous vérifions pour voir si un des supérieures 8 bits de la sensor_in numéro 16 bit est défini.

Dans ce cas, la comparaison et retourner 0 qu’il n’y a aucun bit supérieur à la peur des 8 bits définis dans la variable sensor_in.

Si la première partie de la fi déclaration sera true si sensor_in contient 0x000 ou 0xff.

Depuis le premier si l’affirmation est vraie, nous exécutons la commande de :

sensorValue1 = sensor_in & 0xff ;

ANDing, un certain nombre avec lui-même nous donne la sensorValue1 numéro, même = 0xff

0xFF & 0xff

sensorValue1 = 0b0000000011111111

& 0b0000000011111111

--------------------------------

0b0000000011111111

sensorValue1 = 0xff

Passons à la deuxième si déclaration :

Si (sensorValue1 == 0 x 00)

Si nous regardons la variable sensorValue1, il contient 0xff si ce si la déclaration est fausse et ne pas exécutée.

Aller :

Si (sensorValue1 == 0xFF)

sensor_in est égal à 0xff, alors nous exécutons l’if déclaration :

Action1 = action1 | 0 x 01 ;

Dans ce cas, nous définissons la variable d’action1 égale action et appliquer l’opérateur au niveau du bit ou à la valeur de 0 x 01.

En regardant les résultats de l’OR opération action1 obtient a une valeur de 0 x 01.

à l’intérieur de sensorValue1 == 0xff

0 x 0 | 0 x 01

Action1 = 0b0000000000000000

| 0b0000000000000001

-------------------------------

0b0000000000000001

Action1 = 0 x 1

Sur la fi prochaine déclaration :

Si (sensorValue2 == 0 x 00)

Nous vérifions si sensorValue2 est égal à 0 x 00, et bien sûr actuellement sensorValue2 est égale à 0 x 00 alors nous exécutons l’if déclaration :

Action1 = action1 | 0 x 02 ;

à l’intérieur de sensorValue2 == 0 x 00

0 x 1 | 0 x 02

Action1 = 0b0000000000000001

| 0b0000000000000010

-----------------------------------

0b0000000000000011

Action1 = 0 × 3

Dans le dernier si déclaration nous vérifions :

Si (sensorValue2 == 0xFF)

sensorValue2 n’est pas égal à 0xff, alors nous passer. La valeur finale d’action1 est 0 × 03, nous sortir la fi dernière déclaration et continuez sur la la prochaine série d’if déclarations :

Si (action1! = action2)

{

Si (action1 == 3)

line_following.go_forward(50) ;

Si (action1 == 1)

line_following.line_following_turn_left(50) ;

Si (action1 == 2)

line_following.line_following_turn_right(50) ;

Si (action1 == 0)

line_following.go_forward(50) ;

}

Action2 = action1 ;

}

Action1 = 0 x 3

Action2 = 0 x 0

Nous vérifions le premier si déclaration :

Si (action1! = action2)

C’est vrai alors nous entrons dans l’if imbriqué instruction :

Action1 = 0 x 3

Si nous exécutons le true si déclaration :

line_following.go_forward(50) ;

Maintenant dans notre programme de readOptical.py nous revenons à la partie supérieure de la boucle et nous commence à nouveau avec la valeur suivante : sensor_in = 0 x 100

Action1 = 0 x 3

Action2 = 0 x 3

sensorValue1 = 0xff

sensorValue2 = 0 x 0

Dans ce cas la variable sensor_in est égale à 0 x 100

Regardons le premier si la déclaration de nouveau :

Si ((sensor_in & 0xf00) == 0)

sensorValue1 = sensor_in & 0xff ;

sinon si ((sensor_in & 0xf00) >> 8 == 1)

sensorValue2 = sensor_in & 0xff ;

Comme nous l’a souligné au cours de la dernière boucle, le premier si déclaration cherche soit 0xff ou 0 x 00.

Dans ce cas, l’if déclaration est fausse, alors nous sautons à la combinaison else-if instruction : dans ce cas, l’if déclaration fait une opération AND et une droite Maj 8 bits.

Donc nous prenant le 1 à l’emplacement de 9 bit et déplaçant vers la droite, 8 fois

0 × 100 = 0b0000000100000000

0xf00 = 0b0000111100000000

--------------------------------------

& 0b0000000100000000

Décalage vers la droite

0b0000000000000001

Cette valeur est égale à 1 si nous exécutons le cas énoncé.

sensorValue2 = sensor_in & 0xff ;

0 × 100 & 0xff

sensorValue2 = 0b0000000100000000

& 0b0000000011111111

------------------------------------

0b0000000000000000

SensorValue2 = 0 x 0

En descendant la fi des déclarations, nous vérifions la prochaine fi déclaration :

Si (sensorValue1 == 0 x 00)

sensorValue1 est égal à 0xff donc nous sauter cela si déclaration. If prochaine déclaration :

Si (sensorValue1 == 0xFF)

Action1 = action1 | 0 x 01 ;

Le si l’affirmation est vraie, alors nous exécutons l’if instruction

à l’intérieur de sensorValue1 == 0xff

0 x 3 | 0 x 01

Action1 = 0b0000000000000011

| 0b0000000000000001

----------------------------------

0b0000000000000011

Action1 = 0 x 3

If prochaine déclaration :

Si (sensorValue2 == 0 x 00)

Action1 = action1 | 0 x 02 ;

Le si l’affirmation est vraie, alors nous exécutons l’if instruction

à l’intérieur de sensorValue2 == 0 × 00

0 x 3 | 0 x 02

Action1 = 0b0000000000000011

| 0b0000000000000010

---------------------------------------

0b0000000000000011

Action1 = 0 x 3

Nous finir la fi des déclarations et se déplacer sur la la prochaine série de fi des déclarations :

Si (action1! = action2)

Dans ce cas action1 est égal à action2 donc nous sauter l’if instruction qui envoie des instructions du moteur.

Nous boucle retour autour de la boucle à nouveau et sélectionnez la valeur suivante de sensor_in.

À ce stade, nous avons envoyé le moteur et pilote un ensemble si les instructions pour aller de l’avant, comme les capteurs lisent tous les deux blanc.

Dans la prochaine Instructable, nous allons passer à la lecture des valeurs de la sonde lorsque le capteur de gauche est noir.

Articles Liés

Marque : on Robotics Starter Kit - analyse LineFollowing.ino partie 2

Marque : on Robotics Starter Kit - analyse LineFollowing.ino partie 2

Dans le dernier Instructable nous avons commencé à analyser les opérations au niveau du bit dans l'esquisse de la lineFollow.ino. Nous avons examiné comment les lectures du capteur sont interprétées pour rendre le robot à aller de l'avant.Dans ce tut
Marque : on Robotics Starter Kit

Marque : on Robotics Starter Kit

Finement, j'ai eu du temps libre pour commencer le travail sur les systèmes C/C++ embarqué et des robots. Donc dans autour de la navigation à Radio Shack, je suis tombé sur la marque : on Robotics Starter Kit. Apparemment une collaboration entre les
Marque : on Robotics Starter Kit - envoi de données de capteur sans fil

Marque : on Robotics Starter Kit - envoi de données de capteur sans fil

Dans ce Instructable, nous allons prendre ce que nous avons appris à « Make : on Robotics Starter Kit – Wireless Connectivity » et « Make : on Robotics Starter Kit – capture données capteur » et associer ces données pour capturer les données des capt
Marque : on Robotics Starter Kit-connectivité sans fil

Marque : on Robotics Starter Kit-connectivité sans fil

Dans ce blog post, nous allons prendre les informations que nous avons appris dans le précédent post de blog intitulé "Make : on Robotics Starter Kit – logiciel partie 2″ et capturer les données des capteurs en temps réel et envoyer ces données sans
Marque : on Robotics Starter Kit – Conseil pilote familiarisation

Marque : on Robotics Starter Kit – Conseil pilote familiarisation

Dans ce blog, nous prendrons un coup d'oeil à l'Office du pilote qui est livré avec le Kit de démarrage de faire : on Robotics. Il n'y a pas de documentation qui vient avec le kit de départ concernant le jury pilote autres que le schéma.Sauf si vous
Marque : on Robotics Starter Kit - compréhension au niveau du bit Math

Marque : on Robotics Starter Kit - compréhension au niveau du bit Math

Ce blog est une continuation sur mon bricolage avec le Kit de robotique Make : it. J'espère que je peux passer sur certaines des informations que j'ai appris alors il rendra plus facile pour les autres à se mettre au diapason sur le travail avec le K
Marque : on Robotics Starter Kit données de capteur de capture

Marque : on Robotics Starter Kit données de capteur de capture

Instructable dernier nous avons discuté un peu sur ce que fait le programme linefollow.ino. J'ai présenté un script Python qui nous permettra d'analyser le cas au niveau du bit des déclarations pour voir comment la valeur renvoyée par la méthode read
Capteur ambiant interactive avec Intel Edison & Grove Starter Kit Plus

Capteur ambiant interactive avec Intel Edison & Grove Starter Kit Plus

Salut, j'ai vu beaucoup de Instructables ici mais je voudrais faire un projet où vous pouvez voir l'utilisation de différents capteurs, boutons, buzzers, togheter LED et lcd!!! Ce que nous allons réaliser est un capteur ambiant INTERACTIVE dans laque
Commencer avec GearBest Starter Kit pour Arduino

Commencer avec GearBest Starter Kit pour Arduino

Si vous êtes nouveau dans le « monde Arduino » ce tutoriel vous aidera à faire vos premiers pas avec des produits électroniques et les cartes Arduino.Pour cela, nous utiliserons le « GearBest Starter Kit pour Arduino » ! Pourquoi ? Parce qu'est un ki
BRICOLAGE de Starter Kit de maquillage et bien plus encore !

BRICOLAGE de Starter Kit de maquillage et bien plus encore !

J'ai été intéressé à faire mes propres produits de soins de la peau pendant de nombreuses années. La principale raison que j'ai fait mon propre était parce que, j'ai voulu certains parfums que je ne pouvais pas trouver et j'ai eu la peau sèche et vou
Capteur de lumière de Galileo Gen 2 Intel avec Starter Kit de semences Studio

Capteur de lumière de Galileo Gen 2 Intel avec Starter Kit de semences Studio

Ici je vais vous montrer comment créer un simple projet de Gen2 Galileo Intel avec un capteur de lumière et un écran LCD.Essentiellement lorsque la lumière est l'affichage est censé afficher « Il est Light » et « Faire des trucs ». La partie « Faire
Comment faire de l’écluse de Knock pour Arduino Starter Kit

Comment faire de l’écluse de Knock pour Arduino Starter Kit

Dans ce instructable je va vous montrer une vidéo sur comment j'ai fait un verrou de frapper à l'aide de la trousse de démarrage arduino uno. J'ai rencontrer quelques problèmes le long du chemin, mais trouvé une solution après avoir réfléchi il. Il s
Arduino Starter Kit

Arduino Starter Kit

Il existe plusieurs kits de démarrage Arduino là-bas, mais la plupart viennent avec une variété de composants inutiles.Cette instructable présente le contenu d'un kit de démarrage minimal et bon marché. Toutes les choses que vous devez obtenir vous a
Hydroponique goutte à goutte de plus en plus Starter Kit (avec piment)

Hydroponique goutte à goutte de plus en plus Starter Kit (avec piment)

comme partie de la recherche pour un projet, je travaille actuellement sur j'ai essayé de faire un système hydroponique de base pour moins de £15.Donc voilà, super bon, super simple.Étape 1: Ce que vous devez 1 x pompe de réservoir de poissons (6)tub