Peu de frapper et booléennes mathématiques sans les mathématiques (9 / 9 étapes)

Étape 9: Bit frappant exemple

Programmation des microcontrôleurs ou essayant de désosser quel type de programme un microcontrôleur fait consiste à traiter un grand nombre d’informations binaires.  Par exemple, une façon dont microcontrôleurs communiquent avec d’autres appareils est d’utiliser une interface simple à deux fils appelé I2C, prononcé j’ai squared C.

À l’aide de I2C consiste à envoyer des données binaires vers une adresse d’un dispositif qui est à l’écoute des demandes du microcontrôleur, (appareil maître) une fois qu’une demande est reçue par l’appareil, (esclaves), l’appareil envoie un ou plusieurs octets de données vers le microcontrôleur.

En apprenant à programmer des communications aux périphériques I2C ou essayer de renverser l’ingénieur données provenant de périphériques I2C que vous devez regarder les données qu’il est la forme binaire.

Je vais vous donner un exemple simple de la façon de le faire en utilisant les méthodes que vous venez d’apprendre.

Dans l’apprentissage I2C, il est souvent judicieux d’étudier d’autres programmes, les programmeurs ont conçu, donc vous pouvez pencher comment les données sont passées entre les microcontrôleurs et dispositifs.

Donc pour notre exemple que nous allons regarder un extrait du programme de code RobotC écrit peu bang un périphérique I2C.

J’ai pris un exemple de programme C peu cogné écrit en RobotC par Xander qui anime un Blog de Robot appelé :

http://botbench.com/blog/2011/02/20/bit-banged-I2C-Master-on-robotc-for-Arduino/#comment-2674

Dans cet article de blog, il est peu frapper un programme I2C pour communiquer avec un tableau LED flash LED lumières dans une séquence.

Nous seront désosser la boucle for, qu’il utilise pour envoyer une série de bits à la matrice de LED.

Si vous n’avez jamais programmé avant, s’il vous plaît Google variables, boucles, fonctions et tout en boucles.

Voici l’extrait de code, que nous allons regarder :

tout en (vrai) {}

pour (int i = 0; i < 8; i ++) {}

PCF8574write (~ (1 << i)) ;

wait1Msec(50) ;

}

}

Normalement, je voudrais écrire un petit programme de Python pour imprimer les valeurs de la boucle for.  Mais puisque je suppose que tout le monde est nouveau pour la logique booléenne et programmation je tape manuellement sur chaque itération de la boucle for.

Note spéciale : Python ne supporte pas un type de données byte, donc dans notre peu frappant exemple nous allons utiliser le modulo opérateur pour afficher un entier comme un octet non signé.  S’il vous plaît Google inf, vous avez besoin d’aide,

Par exemple : si nous effectuons le suivant : >>> ~ (1 << 0), en Python, nous obtenons -2, si nous utilisons ensuite >>> bin(-2), nous obtenons '-0b10'.  Pour corriger le problème et montrer un type intégral 8 bits dans ce qui suit :

>>> bin (-2 % 256)

« 0b11111110 »

Afin de bien voir ce qui se passe avec des morceaux, il faut voir les 8 bits complets.

Pour toujours en boucle While, l’ignorer pour l’instant.
La boucle boucles for où la variable i est égale de 0 à 7.

PCF8574write() est une fonction personnalisée qui nous ne discuterons pas dans le cadre du présent article.  Vous pouvez consulter le code pour voir ce que cette fonction ne sur votre propre.

Ce qui nous intéresse est la valeur de i et ce nombre binaire, nous passons à la fonction PCF8574write().

Permet de traduire chaque itération de la boucle for :

Permet de taper chaque itération de la boucle en Python :

La variable j’ai commence comme 0 et extrémités vers le haut à une valeur de 7 :

>>> ~ (1 << 0)

-2

Permet de tirer cette expression dehors.  Nous sommes en effectuant une opération de bits non sur la valeur suivante.  Nous décaler à gauche la valeur 1, j’ai le temps.

C’est nous pas 1 << 0.  Nous poussons les bits de droite à gauche. Dans la première boucle, nous sommes gauche déplacement 1, 0 fois ou nous pas le bit le plus significatif.

Ainsi, si nous examinons la valeur binaire-2 on obtient :

>>> bin (~ (1 << 0))

« 0b10 »

Permet de continuer, vous verrez bientôt le motif.

>>> ~ (1 << 0)

-2

>>> bin (-2 % 256)

«-0b11111110 »

>>> ~ (1 << 1)

-3

>>> bin (-3 % 256)

«-0b11111101 »

>>> ~ (1 << 2).

-5

>>> bin (-5 % 256)

«-0b11111011 »

>>> ~ (1 << 3)

-9

>>> bin (-9 % 256)

«-0b11110111 »

>>> ~ (1 << 4)

-17

>>> bin (-17 % 256)

«-0b11101111 »

>>> ~ (1 << 5)

-33

>>> bin (-33 % 256)

«-0b11011111 »

>>> ~ (1 << 6)

-65

>>> bin (-65 % 256)

« 0b10111111 »

>>> ~ (1 << 7)

-129

>>> bin (-129 % 256)

«-0b1111111 »

Le 0 est omis dans ce cas.

Il faut lire "-0b01111111"

Maintenant, si vous ne le n'avez pas déjà fait, allez à la page web et regarder la vidéo :

http://botbench.com/blog/2011/02/20/bit-banged-I2C-Master-on-robotc-for-Arduino/#comment-2674

Maintenant, regardez les modèles binaires très étroitement.

Notez que comme les pour boucle augmente que le bit 0 continue d’aller de suite à gauche.

Je vais essayer de vous confondre trop beaucoup ce moment, (il y a une autre opération de bits AND et une opération de décalage à gauche dans la fonction i2c_write()), la priorité est de comprendre les opérations booléennes et comment utiliser Python pour vous aider à comprendre ces opérations booléennes.  Si vous vous sentez lui, désosser la fonction i2c_write() de voir comment les modèles binaires sont encore traitée avant d’être envoyés à la matrice de LED.

En travaillant avec des microcontrôleurs lorsqu’un morceau est élevé, d’une valeur de 1, normalement un appareil est allumé.  Si un bit est faible, avoir un 0 valeur un périphérique est désactivé.

Notez que nous travaillons avec 8 bits et notre matrice de LED a 8 LED.  Oui, c’est correct.  Chaque fois que nous avons mis un peu sur, d’une valeur de 1, nous passons sur la LED.  Quand nous la valeur de bit la valeur 0 ou partit le bit, nous éteindre la LED.

Maintenant, regardez la vidéo à nouveau.  Maintenant l’image que les deux boucles, une dans la fonction principale et la boucle dans l’i2c_write fonction exécutent plus rapide ou plus vite que les LED clignotent.

La logique de la i2c_write() qui est en logique un peu plus complexe, utilisation de python de visualiser comment la haute ou basse peu États changent comme les 8 bits sont exécution pas à pas la boucle for.

S’il vous plaît garder à l’apprentissage microcontrôleurs et opérations booléennes, car ce sont les blocs de construction pour la programmation des microcontrôleurs.

Articles Liés

Facile et peu coûteux des revues de mathématiques

Facile et peu coûteux des revues de mathématiques

en ces jours de budgets scolaires mince ou inexistant pour les fournitures de classe, il est important d'économiser partout où nous le pouvons. Voici un moyen pour les enseignants de faire leurs propres revues de mathématiques fonctionnelle avec un a
Cinema 4D pour les débutants : modélisation d’un Die

Cinema 4D pour les débutants : modélisation d’un Die

Cinema 4D est une application de logiciel modélisation et animation 3D professionnelle.  Ce didacticiel est conçu pour ceux qui ont peu ou pas d'expérience dans la modélisation 3D à l'aide de Cinema 4D.  Si vous n'avez pas déjà de Cinema 4D installé
3D imprimés Assistant buste

3D imprimés Assistant buste

AVERTISSEMENT!!! ABS et PLA ne pas mélangent bien avec une flamme nue ! Notez les doigts fondus sur cette photo ! Si vous envisagez d'utiliser des bougies dans votre sculpture, soyez extrêmement prudent et ne viennent pas pleurer pour moi lorsque vou
Table de pique-nique de Flat-Pack de 1 planche de contreplaqué

Table de pique-nique de Flat-Pack de 1 planche de contreplaqué

Nous vivons une pâté de maisons de Greenlake à Seattle. Lors des beaux jours, si vous n'obtenez pas une table de pique-nique par 10:30, alors vous êtes hors de la chance jusqu'à ce qu'après l'obscurité. Nous aimons à charger vers le haut de la grille
Porte-revues (avec compartiment caché)

Porte-revues (avec compartiment caché)

Difficulté de la construction : 1/5Temps de construction: 5 heuresCoût : Environ $70Étant un mec aussie True-Blue, j'ai trouver voyages aux toilettes ennuyeux sans stimulation. Toutefois, j'estime qu'il est préférable de ranger livres et magazines su
Ce qui est quad copter un un peu de ce qui fait un

Ce qui est quad copter un un peu de ce qui fait un

Ce qui est un hélicoptère de Quad ?un hélicoptère sans pilote ayant quatre rotors. plus simplementMultiCopters sont aérodynamiquement instables et absolument besoin d'un ordinateur de bord (aka régulateur de vol) pour vol stable. Ainsi, ce sont les s
Math-Land ! (Jeu de société)

Math-Land ! (Jeu de société)

Il s'agit d'une bonne façon pour les gamins d'apprendre leurs faits de maths ! Si ils sont un peu jeunes, utilisez des nombres plus faciles. Pour les plus âgés, rendent difficile!!! Cela vous montrera le processus étape par étape de ce projet à domic
Frappez le bloc

Frappez le bloc

bloc de Knock : un cadre moderne de frapperL'homme a longtemps lutté avec le temps. En outre, avec la frapper sur les choses et ne pas avoir le temps de la journée. Nous proposons une plate-forme frapper à travers lequel ces besoins fondamentaux. Cec
Comment bien frapper une balle de Golf

Comment bien frapper une balle de Golf

Quand vous pensez du golf qui pensez-vous de ? Bois de tigre. Tiger Woods est la personne la plus influente dans le monde du golf. J'ai ramassé golf à cause de tigre. La première fois que j'ai balancé un club de golf, j'ai essayé de faire pivoter jus
Faire un Stand de Kayak simple, peu coûteux en moins de 15 minutes

Faire un Stand de Kayak simple, peu coûteux en moins de 15 minutes

Je ne sais pas pour vous, mais j'ai prix kayak se trouve sur un certain nombre de différents sites Web. Je n'aimais pas ce que j'ai vu. Certains de ces vendeurs veulent gratuitement des centaines de dollars pour un poids léger, portable, stand pliabl
COMMENT OBTENIR FASHIONABLY FRAPPÉ PAR LA FOUDRE !

COMMENT OBTENIR FASHIONABLY FRAPPÉ PAR LA FOUDRE !

Le week-end dernier au cours de la MakerFaire2014, ArcAttack et moi a fait quelque chose ÉLECTRISANTE, nous avons créé une robe de cage de faraday portable ! Par les présentes de notre processus sur comment une collaboration comme cela a commencé ! P
Un peu d’entretien / auto maintien écosystème et aquarium !

Un peu d’entretien / auto maintien écosystème et aquarium !

écosystèmes auto maintien m'ont toujours intéressé et j'ai pensé que c'est juste un écosystème simple donc j'ai fais ce instructable je l'espère vous plaira.J'ai décidé d'ajouter un jardin de la bouteille (une plante dans une bouteille) ou n'importe
USB alimenté interrupteur Clap - HW extrêmement peu requis !

USB alimenté interrupteur Clap - HW extrêmement peu requis !

Hi all!Nous vous remercions d'avoir un regard sur mon instructable !  Si vous avez par hasard vu mon original clap-clap / clap clap circuit instructable.  Ce circuit de battant est très différent de mon original, en ce qu'il ne faut absolument aucun
Soudage à peu de frais pour les Punks

Soudage à peu de frais pour les Punks

des soudeurs maison pas chers par rapport : bâton AC, bâton de DC, DC spoolgun. Oxygaz discussion.Le soudage est habituellement la façon plus facile et plus rapide de construire quelque chose.Vous venez de mettez les pièces côte à côte et les soudez.