Början Microcontrollers del 8: Lägga till en knapp till mikrokontroller och göra det göra något



En mycket enkel och lätt sätt att tillhandahålla för mänsklig interaktion med mikrokontroller är att infoga en knapp i kretsen. Att kommunicera med datorer som använder två viktigaste inmatningsenheter: musen och tangentbordet. Ett tangentbord är inget annat än en massa knappar som är uppbyggda för att tillåta användaren att input (ASCII) tecken till datorn. Om du avlysningen din huvud på ASCII-del, oroa dig inte--representerar det bara koden för varje tecken.

Genom denna punkt i vår resa, bör du redan setup din dator med WINAVR (eller AVR-GCC för Linux) och att kunna programmera din mikrokontroller. Du bör även ha en krets byggd med en lysdiod ansluten till mikrokontroller. Du gjorde också den LED blinkar i den tidigare handledningen.

Du lägger till en knapp eller omkopplare till kretsen kan mikrokontroller att få människors input. Andra former av input för microcontrollers inkluderar (men begränsas inte till) ett tangentbord eller en mus, knappar, brytare, ljud (via mikrofoner), touch skärm förevisningarna och digitizers. Det finns naturligtvis många andra enheter som kan ge input till en mikrokontroller, men dessa kan inte alla aktiveras med frivilliga mänskliga insatser. Jag placera dessa andra enheter i kategorin "avkänning", som dessa anordningar vanligtvis känna förhållanden eller händelser och agera därefter. Några sådana exempel är sensorer för tilt (accelerometrar), upptäcka infraröd energi eller övervakning temperatur.

Så här är mager på knappar och mekaniska brytare: de är perfekt! De två familjerna av mekanik och elektronik går ihop som Montagues och Capulets. Det vill säga de inte! När du trycka på en knapp, kan du förvänta dig en ren svar elektroniskt. Tja, ledsen att vara bärare av dåliga nyheter, men signalen ofta studsar en hel del innan det sätter sin rätt spänning nivå. I denna bild visar jag detta fenomen. Om spänningen ligger på 5 volt innan knappen är intryckt och sedan går till noll volt när knappen trycks, kommer det att finnas en "studsande" effekt av spänningen mellan dessa två värden. Så så varför inte alla våra Vitvaror eller våra bilar ställer ut detta problem?

Som du ska kunna se i bilden, jag har satt in en kondensator mellan två stiften. Detta kommer att jämna ut signalen. Effekten av denna kondensator kan ses på ett oscilloskop, vilket framgår i videon. Men om du inte har ett oscilloskop för din egen, då måste bara du lita på mig. Ett annat sätt vi kunde lindra detta problem är att lägga en tidsfördröjning i programmet, precis efter mikrokontroller sinnen den första knapp tryck på händelsen. Men att lägga till en diskret komponent till en krets att lösa sådan en elektronik problem, är ofta ett bättre sätt än att lägga till kod att orsaka en försening--som att koden kommer att införa en annan möjlig källa till en bugg i programmet, och kommer också att kräva mer processortid att köra. I ytterligare, denna kod kan också resultera i utvecklingen av andra problem som resten av koden fortsätter att köra.

Men vad värdet kondensator bör vi välja? Detta beror ytterst på hur dåligt knappen utför när det gäller just detta problem. Vissa knappar kan visa en enorm studsande beteende, men andra kommer att ha mycket lite. Ett lågt kondensator värde som 1.0nF (nanofarads) att reagera mycket snabbt, med liten eller ingen effekt på den studsande. Däremot en högre kondensator värde såsom 220nF (som fortfarande är ganska liten när det gäller kondensatorer) ger en långsam övergång från start till slut spänningen (dvs 5v till 0v). Övergången sett med en 220nF kapacitet är dock fortfarande ganska fort i verkliga bemärkelse, och således kan användas på dåligt utför knappar.

Du kanske har märkt av nu när skärbräda har förändrats något, för att ge kretsen ett renare utseende. De tidigare trådarna var för långa och bygga miljö började bli stökigt som jag lagt till ytterligare komponenter till kretsen. Därför var en re-design av bakbord i ordning, så jag knäppte en andra bakbord till slutet av först. Men du kan fråga--varför jag gjorde detta om det inte fanns tillräcklig anknytning kvar i andra änden? Tja, jag gjorde det för prydlighet, och jag gillade också där mikrokontroller var placerad. Du kanske kan berätta att jag har anpassat det med siffrorna så att jag inte behöver räkna pins hela tiden--jag helt enkelt låta bakbord numreringen säga mig var varje stift är på MCU. Jag också hopbundna alla för den positiva (+) skenor på båda styrelser, och gjorde samma sak till alla negativa (-) rälsen också. Detta kommer att tillåta mig att ha VCC eller GND i närheten, var som helst på en skärbräda.

Så då, hur programmerar vi ATmega32 mikrokontroller (eller andra MCU som du kan tillämpa till detta experiment) att göra användning av den nya knappen? Det är väl egentligen ganska enkelt! Vi har bara att lägga till två linjer som inträffade strax före den oändlig loopen, och ett enda villkor block inom slingan. De två initiering raderna lagts innan loopen inkluderar ett uttalande att ange PINB1 för indata genom att tilldela den en "0" så här:

DDRB & = ~ (1 << PINB1);

Vi kommer också ange pin B1 "hög", vilket innebär den PIN-kod kommer att läsa 5 volt tills knappen trycks; då läser stiftet noll volt. Om du vill ange PIN-koden på en hög spänning på 5 volt, lägger vi denna kodrad:

PORTB | = 1 << PINB1;

Inom programmet, det måste finnas ett beslut: beslut om att köra några kod när knappen trycks, eller köra några andra kod om knappen inte är intryckt. Denna uppgift är i form av en villkorssats kallas en "om annat" uttalande. Den gör exakt vad är säger. Precis som den engelska motsvarigheten... om (knappen är intryckt), hoppa upp och ner, annars stå på huvudet. åtgärden "hoppa upp och ner" kommer att hända när knappen är nedtryckt. Men medan knappen inte är intryckt, den andra åtgärden "stå på huvudet" kommer att hända. Om uttalande koden:

om (bit_is_clear (PINB, 1))

anger ett test för ett villkor som anges inom parentes. Namnet "bit_is_clear" representerar en funktion som tar två argument. I detta fall är det första argumentet PINB, som beskriver en uppsättning stift som vi anger. Det andra argumentet representerar vilka stift som vi kontrollerar och i detta fall handlar pin #1 i set.

Du kanske undrar vilka typer av saker kan vi sätta i kodblocket kontrolleras av villkoret "om"? Att allt beror på vad du vill att dina program (och krets) att göra. I detta fall, som ett sätt att visa att denna knapp gör något och fungerar, har jag lysdioden blinkar långsamt (varje 100 ms) medan knappen inte är intryckt, och blinkar snabbare (varje 10ms) när nedtryckt.

Här är de ändringar som gjorts i tidigare LED blinkande programmet:

#include < avr/io.h >
#include < util/delay.h >
int main(void)
{
DDRB | = 1 << PINB0;
DDRB & = ~ (1 << PINB1);
PORTB | = 1 << PINB1;
samtidigt (1)
{
PORTB ^ = 1 << PINB0;
om (bit_is_clear (PINB, 1))
{
_delay_ms(10); Snabb
}
annat
{
_delay_ms(100); Långsam, från tidigare
}
}
}

Det är det! Det finns mycket lite programmering krävs för att använda en knapp, LED och göra saker blinka!

Relaterade Ämnen

BaW-Bot del 3: Lägga till syn och Touch till Bot

detta är den tredje delen av vår BaW-Bot (klockor och visselpipor Bot) bygga-5 separata instructables som undersöka olika Arduino-relaterade tekniker, kombinera för att skapa en Bot med alla klockor-och-visselpipor.Del 1: Bygga en Arduino på ett bräd...

Början Microcontrollers del 5: Provning programmeraren och bygga den första kretsen

Så långt, bör du ha alla mjukvaran installerad och konstruerade det gränssnitt som kommer att ge en bekväm anslutning från programmeraren till mikrokontroller (MCU). För nästa steg måste en skärbräda (de med siffror är mycket bra), en LED och ett mot...

Skapa anpassade titlar i iMovie 09 - lägga till logotyper och transparenta bilder till Video projekt!

Vill du lägga till anpassade rubriker och transparent bildlager ska video iMovie-projekt? Denna tutorial lär dig hur du lägger till transparent png-bildfiler kan imovie och överlagra dem över din video. Detta kan användas för att lägga till logotyper...

Lägga till filter och linser till Canon SX100is

ett par år sedan köpte jag en Canon SX100is och alltid velat lägga till filter och linser till det, så vill du göra på dyrare kameror.Ungefär en månad sedan jag snubblade över detta instructable och beslöt att göra något liknande för min kamera.Steg...

Pyrography: Hur lägga till skuggning och textur till blad

I den här videon Visa jag dig hur att lägga till skuggning och konsistens Eklöv och ekollon. Jag kombinera olika tekniker för att lägga till textur och dimension till bilden.Mer information om Pyrography och lära sig att bränna måste du registrera di...

Början Microcontrollers del 2: Att skapa ett SPI gränssnitt från programmeraren till mikrokontroller

Hej, hoppas vi du gillade del 1 av början Microcontrollers. Vi ska flytta i del 2 och börja prata om gränssnitt och hur du får din microcontroller att kommunicera med en dator.Så, vid denna punkt, du bör känna till begreppet mikrokontroller (MCU). Du...

Början Microcontrollers del 6: Skriva det första programmet till vända på en LED

Jag vet att du är redo att skriva det första programmet. Du har gått igenom en hel del hittills! Medan vi i frågan, låt oss sammanfatta händelserna. Du gick ut och köpte Atmel AVR mikrokontroller för att förstora. Jag valde theATMega32 för min använd...

Början Microcontrollers del 12: Intro till avbryter

I denna del av handledningen vi prata om avbrott arbeta till exempel med räknaren. Avbryter förbättra mikrokontroller i stort sätt. Avbryter göra din program reagerar på hårdvaran i microcontrollers, vilket kan vara en reaktion från circuit utanför m...

Början Microcontrollers del 13: Intro till LCD gränssnitt

Mikrokontroller är en underbar bit av ingenjörskonst och det kan göra många saker (med hjälp av några bra programmering), men det är fortfarande en ogenomskinlig svart låda. Om du vill att dela information, eller visa dig vad det försöker göra det, m...

Början Microcontrollers del 3: Överföra ett Program till mikrokontroller (drivrutiner)

Välkommen till del 3. Detta är en mindre handledning som kommer att behandla helt enkelt laddar drivrutiner se till din programmerare kan kommunicera med datorn ordentligt.Observera att ibland TinyISP och USBAVR enheter nu kommer förladdad med Window...

Början Microcontrollers del 11: Timers, räknare och mikrokontroller klockan

Timers och räknare är så integrerad att du kommer att se många exempel på dem i hela denna serie. Som namnet säger, används timers för tid och räkna. Inventering och timing kan du göra några mycket fina saker som kontrollerande LED brights, vinkel gr...

Början Microcontrollers del 9: Knappen och programvara Debouncing metoder

I denna del av handledningen kommer att vi diskutera knappen och programvara debouncing.Vi vill studera knappen debouncing första och i detalj så vi har en god förståelse för vad det innebär. Knappen debouncing är viktigt och bör inte vara undervärde...

Gratis Power Point Malayalam Tutorials 2011 del 7 - lägga till en ClipArt-presentation

armatur recensionerDu kan enkelt lägga till en ClipArt i till PowerPoint-presentationen. I denna Malayalam video tutorial, du börjar lära dig, att göra en presentation och sedan lägga till Clip Arts och text. Göra det ganska kommer i nästa project.pl...

Början Microcontrollers del 4: Installera programmering miljö (WinAVR)

Välkommen till nästa steg i vår serie. Vi kommer att introducera några grundläggande programmeringselement nu. Denna handledning är helt enkelt om hur du installerar din programmeringsmiljö. Den programmeringsmiljö som vi kommer att använda kallas Wi...

Början Microcontrollers del 7: Omarbetning av det första programmet att göra LED blinkar

Du har skrivit det första programmet, som visade på en LED. Ja, det var spektakulärt! Tja, inte riktigt, men låt oss införa lite galenskap till LED. Vi ska ge det en "bipolära" personlighet genom att blinka. Då vi kliver upp ett snäpp och gör de...

Att lägga till djup (och skryt) till IKEAs annars platt sexkantiga Hönefoss speglar

IKEA gör några trevliga och avgjort inte vanligt torget speglar namngivna "Hönefoss." De är sexkantig form och kommer i en låda med 10 för $15 (5 varje i två olika nyanser av brunt). Du kan läsa allt om dem på IKEA "Speglarna ser ganska bra...

Adaptiv Legal / advokat / Banker / fastigheter dokument - att lägga till initialer och signaturer i Word

i tidigare versioner av Word som du använde för att lätt kunna ändra sidhuvuden och sidfötter att visa olika saker på särskilda sidor. Jag grunda ute den hårda vägen den nyaste versionen av Word inte gör det så lätt. Efter dregging igenom massor av l...

Lägga till funktioner och ladda kameran "Disponibel"

har du någonsin känt skuld när du använder en "engångskamera"? Väl inte mer! Detta Instructable, vi kommer att lägga till funktionalitet till din engångskamera genom att lägga till:1. en förmåga att ta flera exponeringar på en bildruta i filmen,...

Lägga till hörlursuttaget i Bop det och växla på/av primära högtalare

min första Bop det inte bara hade den distinkta äran att vara min favorit leksak, en som jag spelade med varje dag i timmar medan pacing runt huset i koncentrerad trance, men även haft äran att vara mina föräldrars minst favorit leksak. Varför skulle...