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 tutoriel, nous allons continuer notre analyse à la recherche comment le programme lineFollow.ino interprète quand le noir dans sous le capteur de gauche. Toujours en se référant à la sortie de notre readOptical.py Python programme lorsque les lectures du capteur de troisième et quatrième sont 0 x 00 et 0 x 100.

(voir le programme de readOptical.py si vous avez besoin d’un rappel. Nous allons commencer à nouveau en haut de la boucle à nouveau :

optValues = [0xff, 0 x 100, 0 x 00, 0 x 100, 0xff, 0 x 100]
pour elem dans optValues :

capteur _in = 0 x 0

Action1 = 0 x 3

Action2 = 0 x 3

sensorValue1 = 0xff

sensorValue2 = 0 x 0

0 x 0 & 0xf00

0 x 0 = 0b00000000000000000

xf00 = 0b0000111100000000

Si 0 × 0 & 0xf00 == 0

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

0 x 0 & 0xff

sensorValue1 = 0b0000000000000000

& 0b0000000011111111

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

0b0000000000000000

sensorValue1 = 0 × 0

La valeur de sensor_in est 0 × 00 et nous avons effectuez à nouveau un AND & opération avec la valeur de 0xf0. Comme nous avons dit précédemment, nous vérifions si les données de sensor_in sont une valeur 8 bits ou 16 bits. Bien sûr, 0 x 00 est une valeur 8 bits comme indiqué ci-dessus, (des zéros). Donc le & opération renvoie un 0 x 00. SensorValue1 est donc égale à 0 x 00.
Étant donné que sensorValue1 est égal à 0 x 00

nous exécutons l’if instruction

Si (sensorValue1 == 0 x 00)
à l’intérieur de sensorValue1 == 0 x 00

0 x 3 & 0xf

eaction1 = 0b0000000000000011

& 0b0000000011111110

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

0b0000000000000010

Action1 = 0 x 2

Voici maintenant un peu intéressant, vous remarquerez que de la dernière boucle action1 est 0 x 3, donc nous avons maintenant et & action1 avec 0xfe, remarquez le masque de bits, 0xfe a tous les huit bits, la valeur 1 à l’exception de la position de bit 0. Ainsi, lorsque nous AND & les deux valeurs nous obtenons action1 = 0 x 2. Comme nous l’avons dit, les valeurs de la sonde ont des significations spéciales, dans ce cas nous mettons en place notre action pour un virage à droite.
Puisque sensorValue1 n’est pas égal à 0xff on saute la fi prochaine déclaration. sensorValue2 est égal à 0 x 00 permet donc saute à l’intérieur de l’if instruction.

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

0 x 2 | 0 x 02

Action1 = 0b0000000000000010

| 0b0000000000000010

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

0b0000000000000010

Action1 = 0 x 2

Puisque action1 est désormais égale à 0 x 2, lorsque nous ou & avec 0 x 02 nous obtenons bien sûr une valeur de 0 x 02.
Le dernier si instruction bien sûr retourne false afin de nous ignorer. Nous pouvons maintenant aller le le deuxième ensemble de fi des 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 ;

Puisque action1 est égale à 0 × 02 la commande « tourner à droite » est donnée.
Nous allons passer vers le haut le haut de l’if instruction et à l’air comme la prochaine sensor_in valeur si 0 x 100.

capteur _in = 0 x 100

Action1 = 0 x 2

Action2 = 0 x 2

sensorValue1 = 0 x 0

sensorValue2 = 0 x 0

0 x 100 & 0xf00

0 x 100 = 0b00000001000000000

xf00 = 0b0000111100000000

Si 0 x 100 & 0xf00 == 0

à l’intérieur d’elif

0 x 100 & 0xff

sensorValue2 = 0b0000000100000000

& 0b0000000011111111

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

0b0000000000000000

SensorValue2 = 0 x 0

Prenez note des valeurs de l’action1, action2, sensorValue1 et sensorValue2. Comme avant ils influenceront les valeurs lorsque nous traversent la fi des déclarations à nouveau.
sensor_in est maintenant égale à une valeur de 0 x 100, comme nous le mentionnions avant il s’agit d’un nombre de 16 bits, alors quand nous évaluons le premier si déclaration l’autre si la déclaration sera vraie.

Après avoir traité l’et & opération, sensorValue2 maintenant contient la valeur de 0 x 00. Encore une fois que nous traitons le rappel de la fi des déclarations, nous avons mis les valeurs de sensorValue1 et sensorValue2.

Ainsi sensorValue1 et sensorValue2 ont les valeurs de 0 x 00 alors action1 résultat final est 0 x 02.

Maintenant comme la dernière fois, nous avons traité la seconde valeur de la sonde, action1 et action2 tous deux contiennent les mêmes valeurs, donc la commande du moteur si la déclaration est ignorée et aucune commande moteur est donnés.

À ce stade, le robot se déplace en direction de la ligne noire. Ce sont dernièrement défini des valeurs dans le programme readOptical.py simuler cette situation. Les deux capteurs lire des valeurs comme si Capteur1 et sensor2 renvoient des valeurs blancs.

Vous pouvez faire référence à la première fois, nous avons couru à travers la fi des déclarations lorsque les valeurs de la sonde étaient 0xff et 0 x 100 pour voir les résultats.

Encore une fois Gardez un oeil sur les valeurs précédentes de sensorValue1, sensorValue2, action1 et action2 que ces valeurs déterminent si le moteur si les instructions sont exécutées ou non.

Maintenant permet de jeter un regard sur les résultats de readOptical.py deuxième où nous avons les valeurs suivantes de capteur situés dans la baie d’optValues :

optValues = [0xff, 0 x 100, 0xff, 0x1ff, 0xff, 0 x 100]

Nous commençons à nouveau en supposant que le robot est chevauchant la ligne noire, alors que les courbes de la ligne noire dans un cercle, nous supposons ensuite que le capteur de droit devient noir.

Le programme readOptical.py traite ensuite la fi des déclarations et finit avec le troisième ensemble de valeurs encore simulant le robot enjambant le centre ligne à nouveau.

Ouvrez votre fichier de sortie readOptical.py que nous avons enregistré précédemment et laisser examiner la fi logique à nouveau. Puisque nous avons déjà discuté la logique des Capteur1 tant sensor2 étant blanc, simulant le robot cheval sur la ligne médiane, vous pouvez consulter ce code vous-même en regardant l’analyse antérieure.

Maintenant regardons le deuxième ensemble de valeurs lorsque le capteur droit est noir. Encore une fois Gardez un œil des valeurs précédentes de sensorValue1, sensorValue2, action1 et action2.

capteur _in = 0xff

Action1 = 0 x 3

Action2 = 0 x 3

sensorValue1 = 0xff

sensorValue2 = 0 x 0
0xFF & 0xf00

0xFF = 0b0000000011111111

0xf00 = 0b0000111100000000

Si 0xff & 0xf00 == 0

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

0xFF & 0xff

sensorValue1 = 0b0000000011111111

& 0b0000000011111111

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

0b0000000011111111

sensorValue1 = 0xff

Troisièmement, traverser la boucle à l’aide d’une valeur de sensor_in de 0xff. Notez que nous avons parcouru notre logique avant avec sensor_in étant mis à 0xff, le résultat de l’action1 est toujours 0 x 03, mais parce que les valeurs action1 et action2 sont sur les mêmes valeurs, le moteur si la déclaration n’exécute pas cette fois.

Donc aucun contrôle moteur n’est envoyé au robot.
Maintenant, nous courons dans la boucle pour la quatrième fois où la valeur de sensor_in est 0x1ff.

capteur _in = 0x1ff

Action1 = 0 x 3

Action2 = 0 x 3

sensorValue1 = 0xff

sensorValue2 = 0 x 0
0x1ff & 0xf00

0x1ff = 0b0000000111111111

0xf00 = 0b0000111100000000

Si 0x1ff & 0xf00 == 0

à l’intérieur d’elif

0x1ff & 0xff

sensorValue2 = 0b0000000111111111

& 0b0000000011111111

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

0b0000000011111111

SensorValue2 = 0xff

Comme avant, sensor_in est défini sur un nombre de 16 bits, alors nous exécutons l’ElseIf logique.
sensorValue2 valeur est maintenant définie à 0xff. Alors maintenant, sensorValue1 et sensorValue2 sont mis à 0xff.

Si (sensorValue1 == 0xFF)
Si les précédentes si l’instruction est exécutée.

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

0 x 3 | 0 x 01

Action1 = 0b0000000000000011

| 0b0000000000000001

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

0b0000000000000011

Action1 = 0 x 3

Action1 est maintenant définie à 0 x 03.

La prochaine si l’instruction est ensuite exécutée :

Si (sensorValue2 == 0xFF)

0 x 3 & 0xfd

Action1 = 0b0000000000000011

& 0b0000000011111101

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

0b0000000000000001

Action1 = 0 x 1

À la suite de l’et & opération, action1 s’apprête à une valeur de 0 x 1.
Action1 et action2 étant différentes, la logique moteur si l’instruction est exécutée, et comme vous pouvez voir l’instruction moteur de « aller à gauche » est exécutée.

Le troisième ensemble de valeurs sont les mêmes qu’avant et donner des instructions pour le robot à « Aller Foward » si vous voulez vous pouvez passer en revue la logique de votre propre chef.

Donc, nous avons évalué maintenant toute la logique qui contrôle le robot dans le programme lineFollow.ino.

Comment à procéder d’ici ?

Nous en préoccuper beaucoup pourquoi l’ingénieur conçu le moteur pilote/senor la façon dont il ou elle a fait. Pas vraiment.

Maintenant que nous comprenons que la logique fait, à l’avenir les projets qui utilisent les capteurs nous savons maintenant comment utiliser cette logique pour lire et interpréter les données Capteur1 et sensor2.

Si à l’avenir, nous voulons concevoir notre propre carte pilote puis nous pouvons regarder dans pourquoi l’ingénieur a conçu le jury de la façon dont il ou elle a fait.

Mais maintenant, vous avez suffisamment de connaissances pour écrire de nouveaux programmes d’utiliser les données du capteur avec votre robot. À l’avenir les Instructables que nous continuerons à chercher à travailler avec la marque : on Robotics Starter Kit.

Profitez.

Consulter mon blog pour plus d’informations

http://joepitz.wordpress.com/

Articles Liés

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

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

Dans notre dernier billet de blog, nous avons capturé quelques données de capteur des trois différentes positions que notre robot peut rencontrer lorsqu'il suit la ligne noire, (capteur noir, gauche droite/capteur capteur blanc, à droite noir à gauch
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