16-nyckel knappsatsen avkodning med en AVR MCU (3 / 7 steg)

Steg 3: Läsa knapptryckningar på AVR




Ok, första sak du kommer att märka är att vi ska vara suger upp 8 I/O portar för detta blodiga knappsatsen. Det är en hel del I/O. I nästa steg ska jag visa dig hur du kan minska att till fyra, kanske ett par mer beroende på hur mycket kontroll du vill använda. Men för nu, vi kommer att ansluta denna sucker rätt in i åtta gratis/o-portar för våra AVR.

Jag valde PD [2..7] och PB [0.. 1] för mina anslutningar. Skygga PD [0.. 1] om du vill använda seriell kommunikation på din arduino eller andra klon. Jag hade också problem med min pins flytande, så jag använde fyra 10 k motstånd att dra ner kolumnen stiften till marken. Din AVR har förmodligen inre pull-ups, men logiken jag hade redan kommit fram till i mitt huvud fungerade bra med som. Du kommer att notera att det finns ingen PIN-kod eller hookup för makt till knappsatsen, till skillnad från växeln binära miniatyrhjul jag talade om i en tidigare instructable.

Här är den grundläggande idén. Dra de fyra kolumn stift till 0V. Ange de stift som indata. Ange din rad pins med inledande logik 0 värden. Loopa igenom varje rad, skicka en logik 1 till ro och läsa kolumnen stiften. Om det är där, så har du en knapptryckning. Notera är frågan om viktiga debounce. Genom experiment jag hittade en fungerande dröjsmål hastighet, annars får du många många knapptryckning meddelanden för varje enda knapptryckning. Beroende på hastigheten på din MCU, kan du behöva snurra det lite, alltför.

Jag har bifogat en fil längst ner som jag skrev för detta avsnitt att Visa direkt anslutning och behandlingen av knappsatsen. Om du väljer att använda den måste du ändra det som jag referensbibliotek som jag skrev för seriell kommunikation. Annat än att tror jag att det ska vara allmänt bra. Här är pseudo kod för att Visa flödet:

RADER uppsättning INPUT COLS Ställ in utgång för (någonsin) {för varje rad från 0 till 3 {Ange rad hög om Kol1 många tryckt är (4 * rad) annars om COL2 många tryckt är ((4 * rad) + 1) om COL3 höga tal tryckte är (4 * rad) + 3) om COL4 höga tal tryckte är ((4 * rad) + 3) fördröjning för Dämpningstid ange rad låg}}

OBS! Siffrorna är deras logiska nummer från 0 till 15, inte det faktiska antalet på den nyckel som trycktes. För att göra detta, måste du antingen lägga till mer logik i din "numret tryckte är..." avsnitt eller mappa den till en matris, som är bara ett par steg bort. Första, låt oss se hur man kan minska antalet I/O pins detta knappsatsen tar på våra mikrokontroller.

Se Steg
Relaterade Ämnen

Med Minimus AVR med Arduino IDE

The Minimus AVR är en USB-ansluten mikrokontroller, som använder ATMEL 90USB192 mikrokontroller. Dess en billig åter programmerbara mikrokontroller med 21 digital input/output stift.De har använts av människor som mod spelkonsoler konsoler, för att l...

Hur du använder Dragon Rider 500 med din AVR Dragon

detta instructable är en snabbkurs i hur man använder några av funktionerna av Dragon Rider 500 från Ecros Technologies. Tänk att det finns en mycket detaljerad Användarhandbok tillgänglig på webbplatsen Ecros.Dragon Rider är ett gränssnittskort för...

Kör en Stepper Motor med en AVR mikroprocessor

fick några Rota stepper motors från skrivare/disk drives/etc liggande?Vissa sondering med en ohmeter, följt av lite enkel förare kod på din mikroprocessor och du kommer att kliva i stil.Steg 1: Få veta Steppers i princip, du kommer att behöva räkna u...

Hur man använder en 74HC595 SKIFT Register med en AVR ATtiny13

om du har spelat med mikrokontroller och elektronik så du har förmodligen sett LED dot matrix-displayer och andra projekt som använder SKIFT register som 7-segment visar och mer. Detta instructable går över en snabb intro till 74HC595 8-bitars serail...

Från Arduino och perfboard att PCB med fristående MCU

Detta Instructable är en direkt efterföljare av denna. I slutet av detta bygga upp är min skivspelare projekt nästan klar (äntligen).Målet är att utveckla en snygg och arbetar PCB med SMD elektronisk med en arbetande ATtiny85 + programvara!Så är det...

Läs binär/Hex miniatyrhjul växla med en AVR Microcontroller

detta instructable visar dig hur att läsa antalet på en binär pushwheel eller miniatyrhjul växla med lysdioder eller en AVR microcontroller (jag använder en ATmega328p men detta kan anpassas för alla AVR eller förmodligen en annan mikrokontroller för...

Hur man styr en 16 x 2 LCD med en AVR ATtiny2313

om du bara får in microcontrollers finns det mycket att veta som du har sannolikt fått reda. Det finns en hel del bra online tutorials för Atmel AVR och chansen du har ser några av dem nu. Jag nyligen kom in mikrokontroller och visste inte jack om de...

Nyckel ring halsband med tyg & tråd

vad du behöver:1/4" nyckelring1" nyckelringSaxTyg för att förstoraSamordnande trådNålHalsband kedjaSteg 1: Layout Flytta nyckel ring på tyget tills du hittar en plats som du. Var noga med ditt fabric dubblat så att den kan bäras med antingen sid...

Förbättra cykel lås nyckel båge med Sugru

en cykel lås nyckel var svåra att använda, så vi tillämpas vissa röda Sugru på den, och bildade det för att täcka fören. Ursprungliga fören hade ett hål i den, för att göra det möjligt för kopplar den till en nyckelring. Med lite känslig mixtrande pr...

Styra allt med en AVR pin

detta instructable visar hur man styr en grupp av lysdioder med en mikroprocessor utgång.Jag kommer att använda micro är en Atmel Attiny2313.Steg 1: Delar och verktyg Parts:Attiny2313 (fick 5 gratis prover från Atmel)20-pin uttagMotstånd (alla storle...

Kom igång med Atmel AVR och BASCOM

Jag har sett massor av Instructables visar hur man kan arbeta med mikroprocessorer, men de alla antar att du har arbetat med dem tidigare och vet vad du gör. Jag har inte sett en Instructable som tar dig från ingenting och bygger på varje steg.Vad vi...

Mitt svar på WS2811 med en AVR sak

första off - vill sägaBra om du Alan Burlison.Detta är inte menat att uppsamlare du på något sätt. Din kod gjorde det det måste göra. Stor framgång. Min första reaktion i en forum kommentar var faktiskt riktat mot folk som när det gäller icke-arbetan...

Lätt ATTiny seriell kommunikation med liten AVR programmerare

ATTinies (som ATTiny 85) är super awesome! De är super billig, låg effekt, och de gör vad de flesta Arduino projekt utföra ändå (ge en enkel utgång eller ta i en enkel ingång).En svårighet kan snabbt se vad som händer med deras interna för enkel fels...

Redstone fackla nyckel - Redstone handledning med Andrew MC

Hej killar, jag började en You Tube-kanal om Minecraft där jag kommer att publicera redstone handledning och awesome överlevnad videor.Om du gillar min kanal lämna en liknande och tryck på Prenumerera-knappen: D!...

AVR fuse grunderna: kör en avr med en extern klocka

säkringar är bland de svåraste ämnen som jag stött på samtidigt lära sig om programmering microcontrollers. Även efter att söka och läsa flitigt, kunde jag fortfarande inte lyckas rensa mitt begrepp om dem. Men sedan jag började lära dem ta en i tage...

Bil nyckel mod med elektronik

Hej DIYers :)Inspirerad av lite enklare projekt med HotWheels bilmodell och ingen elektronik av användaren Schnurrbarten, projektet är här: Hot hjul bilnyckelså, låt oss komma igång... eller vänta... innan du åta sig att sådana bygga, se till att din...

Kom igång med ubuntu och AVR dragon

här är vad jag gjorde för att komma igång med AVR draken till programmet ATMEGA8 microcontrollers använder ubuntu (detta riktar sig till nybörjare, jag själv också är en nybörjare, så några förbättringar från mer erfarna användare är mycket uppskatta...

Programming AVR med Arduino som ISP utan bootloader och externa crystal

Hej, jag är riktronics , och detta är min första instructable. Här förklarade jag hur till bränna program i din AVR microcontroller med en Arduino. Av detta behöver du inte köpa dyra AVR programmerare om du redan har en Arduino. Och jag antar att du...

Autonoma Sumo bekämpa Robot med pneumatiska Flipper - hur man

denna Sumo Bot utformad, byggdes, programmerad och testade under en 12 veckors period för en av mitt sista år engineering klasser. Syftet var att konstruera och bygga en lätt helt självständiga sumo kämpar robot för en i klassen Sumo Bot konkurrens....