Enkel kalkylator baserat på Arduino MEGA (2 / 4 steg)
Steg 2: Skiss
Det första steget är säkert, att ansluta knappen för att göra en knappsats. Deras anslutning är ganska lätt och du behöver bara ta en titt på Fritzing systemet bifogas.
Obs: Kom ihåg att knapparna placeras mellan de två mellersta delarna av skärbräda att undvika kortslutning. Så, vi kommer inte att kunna placera våra knappar som en riktig rektangulär keypad men som en linje-formade.
Något riktigt användbart är att skriva knappsatsen namn på ett papper.
Länka knappar till nummer och kontrollknapparna
Knappsatsen har 12 knappar: 10 behövs för att representera tal från 0 till 9 och två kontrollera drift flödet. Tack vare några #define kan vi länka varje knapp till en särskild PIN-kod.
Knappar är normalt öppna. Det betyder att deras standardtillstånd är inställd låg. Driver dem göra sitt tillstånd blir hög. Bara när deras tillstånd är inställd på hög
Handlingen att byta tillståndet för en knapp från låg till hög bestämmer införandet av en siffra (om du trycker en key-knappen nummer) eller en "händelse" (om du trycker en av knapparna två). Vi genomfört det i readKey () -funktionen.
De två ovan nämnda staterna orsakas av circuital lösningen används för detta system. Tack vare de nedrullningsbara motstånd ansluten till marken, utgångsnivån är 0 när knapparna är släppt (öppen switch) och 1 (5 volt) när du trycker på (switch stängt).
Knappsatsen är det verktyg som tillåter oss att ge kommandon till Arduino, det är därför tryckknapp stift anges som indata till ogiltiga setup () -funktionen.
Som bekant är de två grundläggande funktionerna i en Arduino skiss ogiltig loop () och void setup (). Den första funktionen körs endast en gång och i princip gör vissa kontroller eller initierar stift och komponenter. I den andra en är den kod som körs vid upprepade tillfällen. Så för att stoppa på obestämd tid kod gjorde vi funktionen wait() . När Arduino utför går denna funktion in i ett slags "vänta staten". Detta medan loop faktiskt Tom och sant tills ingen knapp trycks. Valfri knapp trycks gör Arduino gå ut från denna loop och köra nästa instruktion.
Funktionen insertNumb)
Den mest komplexa delen av koden är säkert den ingå i funktionen void insertNumb () . Utom från en massa villkorssatser, Huvudtanken bakom denna funktion är de två for -looparna. Den första öglan skannar siffror från första nummer medan andra söker siffror från sekunder.
Som sagt ovan, ser funktionen mycket komplicerat på grund av många villkorssatser. Dessa uttalanden behövs för att hantera flödet datafångst.
I grund och botten tvinga de funktionen att avbryta sig om användaren trycker på DEL eller gå på om trycker på OK.
Till exempel, om man trycker OK medan den första öglan är igång, en villkorssats ökar värdet av "i" variabel från x till 5. Så blir om uttalande som föregår följande for -loopen sant att låta datafångst vid de andra nummer siffrorna.
Läst källkoden är det möjligt att se en hel del dröjsmål uppenbarligen sprids på slumpmässigt sätt. Faktiskt de är mycket viktiga eftersom synkronisera knappsatsen operationer. Till exempel är första försening i void insertNumb () nödvändigt att undvika tolkningen av väljarknapparna som den första siffran i det första numret.
Ogiltig loop)
Koden i funktionen kunde se lite komplicerat i korthet men vad som händer är faktiskt ganska enkelt.
Den viktigaste variabeln kallas operation. Den förutsätter endast fyra värden: 0, 1, 2 och 3 motsvarar de tidigare namngivna grundläggande beräkningarna.
När valt en operation, tack vare några villkorliga satser algoritmen går till den högra delen av koden och gör beräkningen som användaren har valt. Eftersom maximalt tillåtna värdet är 99999, kontrollera dessa villkorssatser uttalanden också om detta nummer blir omkörd.