Début de la partie microcontrôleurs 8: Ajout d’un bouton au microcontrôleur et rendant Do Something

Un moyen très simple et facile de prévoir l’interaction humaine avec le microcontrôleur est d’insérer un bouton dans le circuit. Nous communiquons avec les ordinateurs à l’aide de deux principaux dispositifs d’entrée : la souris et le clavier. Un clavier n’est rien de plus qu’un tas de boutons aménagé pour permettre à l’utilisateur de caractères (ASCII) d’entrée à l’ordinateur. Si vous êtes gratter la tête de la part de l’ASCII, ne vous inquiétez pas--il représente juste le code pour chaque caractère.

De ce point dans notre voyage, vous devriez ont déjà le programme d’installation de votre ordinateur avec WINAVR (ou AVR-GCC pour Linux) et être en mesure de programmer votre microcontrôleur. Vous devez également avoir un circuit intégré avec une LED branchée sur le microcontrôleur. Vous avez également fait le clignotement de la LED dans le tutoriel précédent.

Ajout d’un bouton ou un commutateur pour le circuit permet le microcontrôleur de recevoir la contribution humaine. Autres formes d’entrée pour les microcontrôleurs incluent (mais ne sont pas limités à) un clavier ou une souris, boutons, interrupteurs, écrans tactiles audio (au moyen de microphones) et numériseurs. Il y a bien sûr beaucoup d’autres dispositifs qui peut fournir une contribution à un microcontrôleur, mais ceux-ci peuvent pas tous être activées par l’action humaine volontaire. J’ai placer ces autres appareils dans la catégorie « télédétection », car ces dispositifs sentiment généralement les conditions ou événements et réagir en conséquence. Quelques exemples incluent les capteurs d’inclinaison (accéléromètres), énergie infrarouge de détection ou surveillance de température.

Donc, voici le maigre sur les boutons et interrupteurs mécaniques : ils sont imparfaits ! Les deux familles de la mécanique et l’électronique vont de pair comme les Montaigu et les Capulet. Autrement dit, ils ne font pas ! Lorsque vous appuyez sur un bouton, vous vous en doutez électroniquement une réponse propre. Eh bien, Désolé d’être le porteur de mauvaises nouvelles, mais le signal souvent rebondit un peu avant il s’installe à son niveau de tension correct. Dans cette image, j’explique ce phénomène. Si la tension est réglée à 5 volts avant que le bouton est pressé et se dirige ensuite vers zéro volts lorsque le bouton est enfoncé, il y aura un effet « rebondissant » de la tension entre ces deux valeurs. Alors pourquoi ne pas tous nos appareils de cuisine ou nos voitures présentent ce problème ?

Que vous devriez être en mesure de voir dans l’image, j’ai inséré un condensateur entre les deux broches. Cela va lisser le signal. L’effet de ce condensateur peut être vu sur un oscilloscope, comme le montre la vidéo. Mais si vous n’avez pas un oscilloscope de votre choix, puis vous suffira à me faire confiance. En d’autres termes, nous pourrions résoudre ce problème consiste à ajouter un temps de retard dans le programme, juste après que le microcontrôleur détecte la première Conférence de presse de bouton. Ajoutant toutefois un composant discret à un circuit pour résoudre un problème électronique, est souvent mieux que d’ajouter du code à provoquer un retard--comme ce code va introduire une autre source potentielle d’un bogue dans le programme et il faudra aussi plus de temps processeur pour exécuter. En supplémentaire, ce code peut également entraîner le développement d’autres problèmes comme le reste du code continue à s’exécuter.

Mais quel condensateur de valeur nous devrions sélectionner ? Cela dépendra en fin de compte comment mal le bouton effectue concernant ce problème. Certains boutons peuvent d’afficher un comportement qui rebondit énorme, mais d’autres auront très peu. Une valeur faible condensateur comme 1.0nF (nanofarads) réagit très rapidement, avec peu ou pas d’effet sur le rebondissement. À l’inverse, un condensateur supérieur valeur tels que 220nF (qui est encore assez faible en termes de condensateurs) fournira une transition lente de la démarrer à la fin de tension (c'est-à-dire 5v à 0v). La transition avec une capacité de 220nF est toutefois encore assez rapide dans un sens réel et donc utilisable sur peu performants des boutons.

Vous avez peut-être remarqué par maintenant que le montage d’essai a changé un peu, pour donner le circuit un aspect plus propre. Les fils de la précédentes étaient trop longues, et l’environnement de génération ont commencé à obtenir désordre que j’ai ajouté d’autres composants du circuit. C’est pourquoi une re-conception de la maquette était en ordre, donc j’ai cassé une deuxième maquette à la fin de la première. Mais vous demandez peut-être--pourquoi j’ai fait cela si il y avait suffisamment de liens restant à l’autre bout ? Eh bien, je l’ai fait pour la propreté, et j’ai aussi aimé où le microcontrôleur a été positionné. Vous pouvez être en mesure de dire que j’ai ai il aligné avec les numéros de sorte que je n’avez pas besoin de compter des épingles tout le temps--j’ai tout simplement laisser la maquette numérotation dites-moi où chaque broche est sur la MCU. J’ai également attachés tous les rails positif (+) sur les deux cartes ensemble et a fait de même à l’ensemble des rails du négatif (-) aussi bien. Cela me permettra d’avoir VCC ou GND à proximité, n’importe où sur le montage d’essai.

Mais alors, comment nous programmer le microcontrôleur ATmega32 (ou autre MCU qui vous pouvez faire une demande à cette expérience) de faire utilisation du nouveau bouton ? Eh bien, c’est vraiment très simple ! Il suffit d’ajouter deux lignes lors de l’initialisation juste avant la boucle infinie et un bloc unique condition au sein de la boucle. Les deux lignes d’initialisation ajoutés avant la boucle incluent une déclaration pour la valeur PINB1 pour l’entrée en lui assignant un « 0 » comme ceci :

 DDRB &= ~(1 << PINB1); 

Nous placerons également pin B1 « élevé », ce qui signifie que la broche lira 5 volts jusqu'à ce que le bouton est enfoncé ; date à laquelle la broche lira zéro volts. Pour définir l’axe à une haute tension de 5 volts, on ajoute cette ligne de code :

 PORTB |= 1 << PINB1; 

Au sein du programme, il doit y avoir une décision : une décision d’exécuter du code lorsque le bouton est enfoncé, ou exécuter un autre code si le bouton n’est pas enfoncé. Cette tâche est sous la forme d’une instruction conditionnelle appelée un « si d’autre "déclaration. Il fait exactement ce qui est dit. Tout comme l’équivalent en anglais... si (la touche), sauter de haut en bas, sinon se tenir debout sur votre tête. l’action « jump up and down » va arriver que le bouton est enfoncé. Mais que le bouton n’est pas enfoncé, l’autre action « stand sur votre tête » se produira. L’if code de déclaration :

 if (bit_is_clear(PINB, 1)) 

spécifie un essai pour une condition spécifiée à l’intérieur des parenthèses. Le nom « bit_is_clear » représente une fonction qui prend deux arguments. Dans ce cas, le premier argument est PINB, qui décrit l’ensemble des pins que nous sommes spécifiant. Le deuxième argument représente quelle broche nous vérifions, et dans ce cas, nous nous intéressons à la broche #1 dans le jeu.

Vous pourriez vous demander quelles sortes de choses peut-on mettre dans le bloc de code contrôlé par la condition « if » ? Que tout dépend de ce que vous voulez, votre programme (et circuit) à faire. Dans ce cas, comme une façon de montrer que ce bouton fait quelque chose et qu’il fonctionne, j’ai la LED clignote lentement (toutes les 100 ms) tandis que la touche pas et clignote plus rapidement (chaque 10ms) tandis que pressé.

Voici les modifications apportées à l’ancien programme clignotant LED :

#include < avr/io.h > < util/delay.h > de #include int main (void) {DDRB | = 1 << PINB0 ; DDRB & = ~ (1 << PINB1) ; PORTB | = 1 << PINB1 ; while (1) {PORTB ^ = 1 << PINB0 ; #include <avr/io.h>#include <util/delay.h> int main(void){DDRB |= 1 << PINB0;DDRB &= ~(1 << PINB1); PORTB |= 1 << PINB1;while (1){ PORTB ^= 1 << PINB0; if (bit_is_clear(PINB, 1)) { _delay_ms(10); //Fast} else { _delay_ms(100); //Slow, from previous } }} 

C’est tout ! Il y a très peu de programmation requise pour utiliser un bouton, le clignotement de la LED et faire les choses !

Articles Liés

Début de la partie microcontrôleurs 12 : Intro aux interruptions

Début de la partie microcontrôleurs 12 : Intro aux interruptions

Dans cette partie du tutoriel que nous allons parler des interruptions de travail utilisant le compteur par exemple. Interruptions améliorent l'utilisation de microcontrôleurs de manière énorme. Interruptions rendre vos programmes réagissent au matér
Guide #4 débutants Hardware Arduino partie 2

Guide #4 débutants Hardware Arduino partie 2

Suite à la partie 1, cette vidéo sur Arduino Hardware pour débutants jette un regard sur certains périphériques de nouvelle Arduino matériel pour vous rendre sur la route à un projet.Nous examinons ici les écrans Afficheurs à cristaux liquides (LCD)
Guide #3 débutants Hardware Arduino partie 1

Guide #3 débutants Hardware Arduino partie 1

Parfois, c'est les petites choses dans la vie qui peut se transformer en grandes pierres d'achoppement, et cela vaut certainement pour noobs commençant leur voyage Arduino. Il était certainement si dans mon cas.Donc dans cette vidéo, j'ai aperçu quel
La GameBoy DS - jouer n’importe quel Nintendo portable de jeu (partie 1)

La GameBoy DS - jouer n’importe quel Nintendo portable de jeu (partie 1)

mon projet travaille sur cette équation, Nintendo DS, Game Boy Color + pièces GameBoy Advanced SP = GameBoy DSQuand la Nintendo DS est sorti, j'étais assez excité. J'ai été particulièrement heureux d'entendre parler de la fente de la GameBoy Advance.
Le plus simple jeu jamais

Le plus simple jeu jamais

Comme le dit Loi de Moore, transformateurs obtiennent plus rapidement. En retour, ils sont ale pour traiter davantage, ce qui signifie que les jeux vidéo deviennent plus réalistes. Mais comme microcontrôleurs et le mouvement de la machine ont été rép
Un fonctionnement 3D imprimés Interrupteur crépusculaire

Un fonctionnement 3D imprimés Interrupteur crépusculaire

Il s'agit d'un interrupteur momentané électrique pour les petit, basse tension, des projets de faible amp. Il doit continuer à être entièrement testé, mais j'ai fait déjà avec succès des projets imprimés qui intègrent des matériaux non plastiques inc
Début microcontrôleurs partie 9: Bouton et logiciel Debouncing des méthodes

Début microcontrôleurs partie 9: Bouton et logiciel Debouncing des méthodes

Dans cette partie du tutoriel, nous allons discuter le bouton et le logiciel debouncing.Nous voulons étudier le bouton debouncing premier et en détail, donc nous avons une bonne compréhension de ce qu'elle implique. Bouton debouncing est important et
Comment choisir un microcontrôleur

Comment choisir un microcontrôleur

il l'habitude d'être assez limitait le nombre de jetons de microcontrôleur différents disponibles pour les amateurs. Tu dois utiliser tout ce que vous arrivaient à acheter chez le marchand de puce de correspondance, et qui réduit le choix à un petit
Comment pour commencer avec PICAXE 08 M microcontrôleur

Comment pour commencer avec PICAXE 08 M microcontrôleur

il s'agit d'instructable pour savoir comment débuter avec PICAXE 08M microcontrôleur.Pour commencer, vous devez :-08 M Protoboard ou même genre de bord (peut être fait maison)-UN LED-AXE027 Câble USB-Alimentation 3VÉtape 1: Connectez la led à la born
Planche à roulettes avec microcontrôleur PIC et LED

Planche à roulettes avec microcontrôleur PIC et LED

ce que vous obtenez quand un ingénieur électricien génère une planche à roulettes à partir de zéro pour cadeau de Noël d'un âgé de 13 ans ? Vous obtenez une planche à roulettes avec 8 LEDs blanches (phares), huit diodes rouges (tailights) tous comman
Comment ajouter plus de sorties à votre microcontrôleur

Comment ajouter plus de sorties à votre microcontrôleur

ce Instructable vous montrera étape par étape comment ajouter 8 sorties numériques supplémentaires, en utilisant seulement 3 de sorties numériques de votre microcontrôleur.Étape 1: Quel microcontrôleur devez-vous utiliser ? Pour faire ce Instructable
Construire un Quadcopter bricolage : Guide du débutant complet

Construire un Quadcopter bricolage : Guide du débutant complet

Il s'agit d'un véritable petit clip de mon quadcopter planant de haut en bas et déplaçant latéralement. J'ai essayé de garder la hauteur aussi minimes que possible car je suis à l'intérieur de mon salon, mais comme vous pouvez le voir, même avec ça i
Comment débuter avec Eclipse et AVR

Comment débuter avec Eclipse et AVR

AVRs programmation est amusant, mais parfois les environnements de développement des fabricants font code entretien une corvée. Si vous cherchez un libre, multi-plateforme, pièce de haute qualité du logiciel de programmation AVRs Eclipse est un bon c
Quiz de contrôleur de jeu à l’aide des « Avertisseurs de lumières et de sons » et Arduino

Quiz de contrôleur de jeu à l’aide des « Avertisseurs de lumières et de sons » et Arduino

jeux de quiz style Jeopardy sont favoris pour créer l'excitation et l'enseignement en même temps.  Enseignants, conseillers de camp l'été et les éducateurs de l'industrie même trouvent ce type de jeu afin de générer l'intérêt et l'implication des par