Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets


Een zeer eenvoudige en gemakkelijke manier te voorzien van menselijke interactie met de microcontroller is een knop invoegen in het circuit. We communiceren met computers met behulp van de twee belangrijkste invoerapparaten: de muis en het toetsenbord. Een toetsenbord is niets meer dan een stelletje knoppen gelegd-out zodat de gebruiker de tekens invoeren (ASCII) naar de computer. Als u bent je hoofd krabben op het ASCII-gedeelte, don't worry--vertegenwoordigt het gewoon de code voor elk teken.

Door dit punt in onze reis, moet u hebben al setup de computer met WINAVR (of AVR-GCC voor Linux), en kunnen uw microcontroller te programmeren. U moet ook een circuit gebouwd met een LED aangesloten op de microcontroller. U maakte ook de LED knipperen in de vorige tutorial.

Het toevoegen van een knop of schakelaar aan het circuit in staat stelt de microcontroller te ontvangen van menselijke input. Andere vormen van input voor microcontrollers omvatten (maar zijn niet beperkt tot) een toetsenbord of een muis, knoppen, schakelaars, audio (via microfoons), touch screen displays en digitizers. Er zijn natuurlijk veel andere apparaten die bijdragen aan een microcontroller kunnen bieden, maar deze kunnen niet allemaal worden geactiveerd door vrijwillige menselijk handelen. Ik plaats deze andere apparaten in de "sensing" categorie, zoals deze apparaten meestal zin omstandigheden of gebeurtenissen en dienovereenkomstig reageren. Een paar van dergelijke voorbeelden zijn sensoren voor tilt (versnellingsmeters), opsporen van de infrarood energie of temperatuur te bewaken.

Dus, hier is de magere op knoppen en mechanische schakelaars: ze onvolmaakt! De twee families van mechanica en elektronica gaan samen zoals de Montagues en de Capulets. Dat wil zeggen, ze niet! Wanneer u op een knop, zou u elektronisch een schone antwoord verwachten. Nou, sorry als de drager van slecht nieuws, maar het signaal vaak stuitert nogal een beetje voordat het afwikkelt op de juiste spanning-niveau. In dit beeld laat ik dit verschijnsel. Als de spanning op de 5 volt is vastgesteld voordat de knop wordt ingedrukt en dan naar nul Volt gaat wanneer de knop wordt gedrukt, zal er een "stuiterende" effect van de spanning tussen deze twee waarden. Dus waarom niet al onze keukentoestellen of onze auto's vertonen dit probleem?

Als u kundig voor zien in de afbeelding zitten moet, heb ik een condensator tussen de twee pinnen ingevoegd. Dit zal het signaal gladstrijken. Het effect van deze condensator kan worden gezien op een oscilloscoop, zoals aangetoond in de video. Maar als u geen een oscilloscoop van je eigen, dan gewoon zul je me vertrouwen. Een andere manier wij dit probleem kunnen verlichten is het toevoegen van een vertraging in het programma, net nadat de microcontroller de eerste knop persevenement zintuigen. Echter het toevoegen van een discrete component aan een schakeling die een elektronica probleem, op te lossen is vaak een betere manier dan code toe te voegen om het met enige vertraging--als die code een andere mogelijke bron van een bug in het programma introduceren zal en vergt ook meer processortijd uit te voeren. In extra, deze code kan ook leiden tot de ontwikkeling van andere problemen zoals de rest van de code nog steeds uitvoeren.

Maar de condensator van welke waarde moeten we kiezen? Dit zal uiteindelijk afhangen van hoe slecht de knop met betrekking tot dit specifieke probleem vervult. Sommige knoppen kan een enorme stuiterende gedrag worden weergegeven, maar anderen hebben heel weinig. Een lage condensator waarde zoals 1.0nF (nanofarads) reageert zeer snel, met weinig of geen effect op het stuiteren. Omgekeerd, een hogere condensator waarde zoals 220nF (die is nog steeds vrij klein in termen van condensatoren) zorgt voor een langzame overgang vanaf de begindatum tot de einddatum spanning (d.w.z. 5v aan 0v). De overgang gezien met een capaciteit van 220nF is echter nog steeds vrij snel in een echte wereld-gevoel, en kan dus op slecht presterende knoppen worden gebruikt.

U misschien opgevallen door nu dat het breadboard veranderd iets, het circuit een schonere uiterlijk geven. De vorige draden waren te lang en de build-omgeving begon rommelig te krijgen, zoals ik verder onderdelen toegevoegd aan het circuit. Daarom was een re-design van het breadbord in orde, zodat ik een tweede breadboard aan het einde van de eerste beet. Maar u zou moeten vragen--waarom heb ik dit als er voldoende banden nog aan de andere kant? Nou, ik deed het voor netheid, en ik hield ook van waar de microcontroller was geplaatst. U kunt mogelijk te vertellen dat ik het met de nummers hebt uitgelijnd zodat ik niet hoef te rekenen pinnen hele tijd--ik laat gewoon de breadboard nummering vertel me waar elke pin is op de MCU. Ik ook samengebonden aller de positieve (+)-rails op beide planken, en deed hetzelfde voor alle van de negatieve (-) rails ook. Hierdoor zal me VCC of GND vlakbij, overal op het breadboard.

Zo dan, hoe we de ATmega32 microcontroller (of andere MCU die u aan dit experiment kan toepassen) programma maken gebruik van de knop Nieuw? Nou is het echt heel eenvoudig! Wij hebben slechts twee initialiseren regels vlak voor de oneindige lus en een blok van één voorwaarde binnen de lus toe te voegen. De twee initialisatie lijnen die zijn toegevoegd voordat de lus bevatten één instructie instellen PINB1 Invoerfilter door het toe te wijzen met een "0" als dit:

 DDRB &= ~(1 << PINB1); 

We zullen ook pincode B1 "hoog," wat betekent dat de pin verschijnt 5 volt totdat de knop is ingedrukt; instellen op dat moment zal de pin nul volt Lees. Om de pincode instellen op een hoogspanning van 5 volt, voegen we deze coderegel:

 PORTB |= 1 << PINB1; 

Binnen het programma, moet er een besluit: een besluit tot sommige code worden uitgevoerd wanneer op de knop wordt gedrukt, of enige andere code uitvoeren als de knop niet is ingedrukt. Deze taak wordt in de vorm van een voorwaardelijke instructie genoemd een "als anders" verklaring. Het doet precies wat zegt. Net als het Nederlands equivalent... als (de knop is ingedrukt), springen op en neer, anders staan op uw hoofd. de actie "springen op en neer" zal gebeuren terwijl de knop is ingedrukt. Maar terwijl de knop niet is ingedrukt, de andere actie "stand on your head" zal gebeuren. De if statement code:

 if (bit_is_clear(PINB, 1)) 

Hiermee geeft u een test voor een voorwaarde die opgegeven tussen de haakjes. De naam "bit_is_clear" vertegenwoordigt een functie die twee argumenten. Het eerste argument is in dit geval PINB, waarin het aantal pinnen die we opgeeft. Het tweede argument vertegenwoordigt welke pin we controleren, en in dit geval zijn wij betrokken met pin #1 in de set.

Je zou kunnen afvragen welke soorten dingen kunnen we in het codeblok gecontroleerd door de "als" conditie? Dat alles hangt af wat u willen uw programma (circuit). In dit geval, als een manier om te tonen dat deze knop iets doet en werkt, heb ik de LED knippert langzaam (elke 100 ms) terwijl de knop niet is ingedrukt, en knippert sneller (elke 10ms) zolang ingedrukt blijft.

Hier zijn de wijzigingen in de vorige knipperende LED-programma:

#include < avr/io.h > #include < util/delay.h > int main(void) {DDRB | = 1 << PINB0, DDRB & = ~ (1 << PINB1); PORTB | = 1 << PINB1; (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 } }} 

That's it! Er is zeer weinig programmeerkennis vereist gebruik van een knop, LED en maak dingen knipperen!

Gerelateerde Artikelen

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Hallo, we hopen dat u genoten deel 1 van begin Microcontrollers. We gaan beginnen te praten over interfaces en hoe u uw microcontroller om te communiceren met een computer te verplaatsen langs in deel 2.Dus, op dit punt, moet u vertrouwd met het conc
Het toevoegen van een circuit aan uw auto

Het toevoegen van een circuit aan uw auto

Misschien bent u ook in een situatie waar u één of andere extra functionaliteit in uw auto.Zij het een extra uitgang, een centrale deurvergrendeling systeem of een geïntegreerde koffie-/ theevoorzieningen.In dit instructable wil ik u laten zien hoe g
Het toevoegen van een lier aan uw 4 X 4

Het toevoegen van een lier aan uw 4 X 4

Winching:Eerder vroeger dan later, we allemaal vast komen te zitten.    Dit zijn the times wanneer u dat wenst dat u een lier in plaats van de bling bling velgen had gekocht.    Het woordenboek omschrijft een lier als "een stationaire motor aangedrev
Het toevoegen van een base aan een "derde Hand"

Het toevoegen van een base aan een "derde Hand"

Bij elektronische projecten bezig, vind ik het een "derde hand" onmisbaar. Beschikbaar van winkels zoals Harbor Freight, meestal voor onder $5.00, zijn niet een duur instrument. Helaas, de base zijn gemonteerd, is vrijwel nutteloos ter ondersteu
Het toevoegen van een dimmer aan uw DOTKLOK

Het toevoegen van een dimmer aan uw DOTKLOK

ik hou van mijn nieuwe huis-gebouwde DOTKLOK (http://aomalley.org/dotklok/), maar 's nachts, dat darn klok is ook bocht.  Heb ik besloten om het toevoegen van een fotoweerstand, ook wel een fotocel, als een dimmer en kappen de ' KLOK een beetje. Phot
Het toevoegen van een karakterdisplay aan Raspberry Pi

Het toevoegen van een karakterdisplay aan Raspberry Pi

In deze tutorial, we gonna je laten zien hoe het toevoegen van een karakterdisplay / progress indicator om uw Raspberri Pi.Stap 1: Wat die u nodig hebt om te beginnenEen Raspberry Pi met XBMC (ik gebruikte Raspbmc)Een van de Crystalfontz USB-Display
Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Ik weet dat u bent klaar om te schrijven van het eerste programma. Je hebt meegemaakt veel tot nu toe! Terwijl we op het onderwerp, recapituleer de gebeurtenissen. U ging naar buiten en gekocht van de Atmel AVR Microcontroller van uw keuze. TheATMega
Het toevoegen van een Skin aan je Minecraft-personage

Het toevoegen van een Skin aan je Minecraft-personage

Hello fello ' iblers!Dit ' ible zal je leren hoe te installeren een make u zeer eigen karakter van de volledig aanpasbare huid in het spel Minecraft. Dit is mijn eerste Instructable dus if you haters zijn gonna haat, ga ergens anders!Dit zijn alle li
Het toevoegen van een Joystick aan de Raspberry Pi

Het toevoegen van een Joystick aan de Raspberry Pi

Joysticks zijn echt leuk om te gebruiken. Ze zijn ook veel meer intuïtief dan andere invoerapparaten. Een joystick toe te voegen aan uw Raspberry Pi, wordt er een heleboel nieuwe deuren geopend. U kunt nu de Raspberry Pi en de joystick om te doen wat
Het toevoegen van een Instructable aan uw lijst van favorieten en hoe om te beoordelen van een Instructable

Het toevoegen van een Instructable aan uw lijst van favorieten en hoe om te beoordelen van een Instructable

als u wilt een Instructable toevoegen aan uw lijst met favorieten, klikt u op de "favoriete" link in de grijze balk onder de Instructable van beelden.Je lijst met favorieten kan worden gevonden op je startpagina (Klik op uw gebruikersnaam in de
Het toevoegen van een stroom aan/uit schakelen naar een USB/apparaat

Het toevoegen van een stroom aan/uit schakelen naar een USB/apparaat

dit instructable zal u tonen hoe te maken van een aan/uit-schakelaar voor uw USB-kabel/s of USB-aangedreven apparaatIK BEN NIET VERANTWOORDELIJK VOOR ENIGE SCHADE DIE JIJ OP UW APPARAAT, USB-KABELS OF COMPUTER! VOLG DEZE INSTRUCATBLE OP EIGEN RISICO!
Het toevoegen van een scharnier aan mijn replica van een Altoids tin.

Het toevoegen van een scharnier aan mijn replica van een Altoids tin.

Voordat je dit u zal moeten lezen mijn instructable op hoe maak je een Altoids tin replica leest.Heres de link.MATERIALENMijn replica van een Altoids tin voltooidPaperclipSolderen kitscisorsStap 1: wijzigen De paperclip en tin moeten eerst worden "aa
Wijzig de naam en het toevoegen van een pictogram aan uw thumbdrive

Wijzig de naam en het toevoegen van een pictogram aan uw thumbdrive

schrijven van een eenvoudige autorun-bestand voor uw thumbdrive een nieuw pictogram en de naam toewijzen.Stap 1: Stap een - uw autorun-bestand schrijven. Een nieuw Kladblok-document maken. Erin, door deze tekst te kopiëren:[autorun]label = "Naam"
Het toevoegen van meer uitgangen aan uw Microcontroller

Het toevoegen van meer uitgangen aan uw Microcontroller

dit Instructable zal u stap voor stap tonen hoe voeg 8 extra digitale uitgangen, met behulp van slechts 3 van de digitale uitgangen van uw microcontroller.Stap 1: Welke Microcontroller moet u gebruiken? Om te doen dit Instructable met uw microcontrol