Stap 2: De schets
Zeker, de eerste stap is het aansluiten van de drukknoppen zodat een toetsenbord. Hun verbinding is vrij gemakkelijk en alleen moet u eens een kijkje op de regeling van de Fritzing gekoppeld.
Opmerking: Vergeet niet dat de drukknoppen worden geplaatst tussen de twee middelste secties van het breadboard te voorkomen van kortsluitingen. Dus, we niet kunnen plaatsen van onze drukknoppen als een echte rechthoekig-vormige toetsenbord maar als een lijn-vormige.
Iets echt nuttig is toetsenblok om namen te schrijven op een stuk papier.
Drukknoppen koppelen aan cijfers en/of CTRL-toetsen
Het toetsenbord heeft 12 knoppen: 10 zijn nodig om het weergeven van getallen van 0 tot en met 9 en twee de transportbesturing operatie. Dankzij enkele #define zijn wij kundig voor elke knop koppelen aan een specifieke PIN.
Drukknoppen zijn normaal open. Dat betekent dat hun standaardstatus is ingesteld op lage. Het duwen van hen maken hun staat hooggeworden. Net als hun staat op hoog is ingesteld
De handeling van het schakelen van de status van een knop van laag naar hoog bepaalt de invoeging van een cijfer (indien u enkele sleutel-knop drukken zijn) of een "gebeurtenis" (als u een van de twee knoppen te drukken bent). Wij het in de readKey () functie.
De twee boven-genoemde staten worden veroorzaakt door de ampère oplossing gebruikt voor deze regeling. Dankzij de pull-down weerstanden aangesloten op de grond, het uitvoerniveau is 0 wanneer knoppen zijn vrijgegeven (open schakelaar) en 1 (5 volt) wanneer gedrukt (schakelaar gesloten).
Het toetsenbord is het instrument dat ons toelaat om het geven van opdrachten aan Arduino, thats waarom drukknop pinnen zijn ingesteld als INPUT in de void setup () functie.
Zoals bekend zijn de twee essentiële functies van een Arduino schets nietig lus () en void setup (). De eerste functie slechts één keer wordt uitgevoerd en in principe doet sommige besturingselementen en/of initialiseert PINs en onderdelen. In de tweede is er de code die wordt telkens opnieuw uitgevoerd. Dus om te stoppen voor onbepaalde tijd de codeuitvoering maakte we de functie wait() . Wanneer de Arduino voert gaat deze functie in een soort "status wait"; inderdaad, dit terwijl lus is leeg en waar totdat geen knop wordt ingedrukt. Een willekeurige toets ingedrukt maakt Arduino uit te gaan van deze lus en de volgende instructie uit te voeren.
De insertNumb () functie
Het meest complexe deel van de code is zeker degene die zijn opgenomen in de void insertNumb () functie. Behalve uit een heleboel voorwaardelijke instructies, het belangrijkste idee achter deze functie zijn de twee for -lussen. De eerste lus scant cijfers uit de eerste cijfers, terwijl de tweede één cijfers van seconden scant.
Zoals gezegd, de functie ziet er zeer complex vanwege vele voorwaardelijke verklaringen. Deze verklaringen zijn nodig voor het beheer van het opnemen van de stroom van gegevens.
Kortom, zij dwingen de functie te onderbreken zelf als de gebruiker op DEL drukt of ga op als op OKdrukt.
Bijvoorbeeld, als een op OK drukt terwijl de eerste lus wordt uitgevoerd, een voorwaardelijke instructie verhoogt de waarde van "i" variabele van x tot en met 5. Dus, is de if -instructie die voorafgaat aan de volgende for -lus wordt waar waardoor het opnemen van de gegevens van het tweede nummer cijfers.
Lezen van de broncode is het mogelijk om te zien een heleboel vertraging, dat blijkbaar verspreid op willekeurige wijze. Eigenlijk zijn ze erg belangrijk omdat synchroniseren toetsenblok operaties. Bijvoorbeeld, is de eerste vertraging in de void insertNumb () noodzakelijk om te voorkomen dat de interpretatie van selectietoetsen als het eerste cijfer van het eerste getal.
void loop)
De code in deze functie kon kijken een beetje complex in een oogopslag maar wat er gebeurt is eigenlijk vrij eenvoudig.
De belangrijkste variabele heet operatie. Het neemt slechts vier waarden: 0, 1, 2 en 3 overeenkomt met de eerder benoemde basisberekeningen.
Eenmaal gekozen voor een bewerking, dankzij enkele voorwaardelijke instructies het algoritme gaat naar het rechter gedeelte van de code en de berekening door de gebruiker gekozen heeft. Aangezien de maximaal toegestane waarde is 99999, controleren deze voorwaardelijke verklaringen ook als dit aantal wordt ingehaald.