Arduino all-in-One Getting Started Guide (4 / 5 stap)

Stap 4: Programmeren van het Project

Nu hebben we afgesloten van bedrading van ons project, het is tijd om te schrijven wat code. Ik ben met inbegrip van de onderstaande code, maar zal spreken over de theorie een beetje eerste.

De code die ik heb verstrekt wordt gecompileerd tot 1560 bytes in grootte. De Arduino grepen programma's maximaal 14336 bytes in grootte. Dit kleine project neemt meer dan 10% van de capaciteit van de Arduino, maar dit is echt geen optimale code. Het is een tutorial, dus ik heb het geprobeerd duidelijk in plaats van efficiënt. Ik zou niet helemaal verrast om te vinden dat het in de helft van de ruimte kan worden herschreven of minder.

Elke Arduino "schets" heeft twee verplichte gebieden: setup en lus. Setup worden eenmaal uitgevoerd nadat het programma is gestart. Dit kunt u het configureren van de beginstaat van de board: welke pinnen zijn ingangen, uitgangen zijn, en of uitgangen beginnen hoog of laag. De lus is het gedeelte van het programma executived herhaaldelijk zodra setup is voltooid. Er is geen "end"- of "exit" naar een Arduino-programma--geen om af te sluiten om! Hebt u ervaring programmering, zult u onmiddellijk herkennen de taal die wordt gebruikt voor het programmeren van de Arduino is onze goede oude vriend C. Als dat niet het geval is, u kunt afhalen de basis gewoon door te gaan over mijn code en de andere voorbeelden in de development kit. Veel grote C tutorials zijn ook beschikbaar op het web.

U kunt kopiëren en plak de code in uw ontwikkelomgeving Arduino, dan controleren en uploaden. Als alles u moet krijgen van blinky lichten en kunnen variëren van de snelheid klopt door te drukken.

Nu een sectie-door-sectie uitsplitsing van de schets:

1) beginnen we door het definiëren van bepaalde variabelen. Veel van dit gebied is voor menselijke begrip en omwille van de efficiëntie kan worden overgeslagen. Ik heb bijvoorbeeld een variabele met de naam "ledPinRed" gedefinieerd en stel deze gelijk aan 13 (ik gebruikte drie kleuren van LEDs--de rode is aangesloten op de digitale pin 13). Ik zou kunnen hebben gebruikt "13" rechtstreeks in het programma, maar dat maakt het veel moeilijker te begrijpen. De opmerkingen naast de variabelen opmerking wat elk is voor.

2) setup. Hier heb ik de pin waarop de drukknop is aangesloten als een input pin ingesteld. De Arduino zal kijken voor het ontvangen van informatie (hoge of lage signalen) er. Ik heb het opzetten van de LED-verbindingen worden uitgangen waar de Raad van bestuur de spanning wordt ingesteld als hoog of laag (5V of 0V) zo nodig. Tot slot, ik draaide me op mijn groene geleid en zorgde ervoor dat de anderen werden uitgeschakeld.

3) getButton: een functie (slechts een container voor code voor elke niet-programmeurs dit leest) die kunnen worden aangeroepen vanuit de hoofdlus om erachter te komen als we de knop hebt ingedrukt. Houdt het spoor van de huidige status van de knop en de vorige status van de knop de laatste keer dat we keken naar het. Dit laat ons toe om alleen reageren op afzonderlijke knooppersen: Houd de knop ingedrukt alleen telt als één pers. Dit is belangrijk wanneer de lichten zeer snel veranderen opdat het zijn zelfs woesteling voor controle.

4) changeLights: een andere functie. Deze wordt aangeroepen wanneer we nodig om naar de volgende van één LED. Degene die aanstaat wordt uitgeschakeld en de volgende dia in de reeks wordt ingeschakeld. Het werkt ook de variabele "currentLED", zodat we kunnen bijhouden van die LED momenteel actief is.

5) lus: de hoofdlus. Hier maken we eerst een oproep om te controleren op de knop. Als we vinden was niet de knop wordt ingedrukt, maar nu is, voegen we aan de variabele "currentSpeed". Als we gaan echt snel, reset we currentSpeed terug naar 1--lus rond, dus kunnen we terug naar lage snelheden. Na dat...

... Nou, dan we een lelijke regel die bepaalt raken of het is tijd om te veranderen naar de volgende LED. Millis() is een ingebouwde Arduino-functie waarmee wordt bijgehouden hoe lang de Raad van bestuur loopt het huidige programma. Alles wat we hier doen is uitzoeken als genoeg tijd is voorbij dat we moeten veranderen aan het volgende licht. Zo ja, noemen we het "changeLights"-functie om dat te realiseren.

Tot slot, hier is de code (waarschuwing: het opmaak verloren gaat een beetje wanneer gepost hier, dus het is niet zo mooi als het zou kunnen zijn):

/*

  • Kevin's Arduino tutorial Arduino Tutorial

*

  • Deze software is ontworpen om te worden gebruikt met mijn Arduino all-in-One Getting Started Guide
  • over ten

*
*/

Merk op dat deze variabelen alle GLOBAL in omvang, zijn zodat ze binnen onze functieaanroepen werken zullen
int ledPinRed = 13; Instellen van de digitale uitgangen voor LED 's
int ledPinYellow = 12;
int ledPinGreen = 11;
int switchPin = 2; Stel t/m de schakelaar staat van de digitale ingang 2 leest
int currentLED = 1; Groen = 1, geel = 2, rood = 3
int currentSpeed = 1; Hiermee bepaalt u hoe snel we schakelen tussen lichten.
int buttonWas = 0; De stand van de schakelaar (geduwd = 1, niet duwde = 0) laatste keer we keken
int buttonIs = 0; Huidige stand van de schakelaar
niet-ondertekende lange timer = 0; Een timer om bij te houden van waar we zijn.

VOID Setup / / loopt zodra, wanneer begint het programma ("schets")
{
pinMode (switchPin, INPUT); Vertelt de Arduino voor de behandeling van de switchPin als INPUT
pinMode (ledPinRed, OUTPUT); De Arduino vertelt dat de rode LED-pin voor uitvoer is
pinMode (ledPinYellow, OUTPUT);
pinMode (ledPinGreen, OUTPUT);
digitalWrite (ledPinGreen, hoge); Groene LED brandt aan begin
digitalWrite (ledPinRed, laag); Rode LED is uit aan begin
digitalWrite (ledPinYellow, laag); Gele LED is uit aan begin
}

VOID getButton() {/ / laten we eens kijken wat de knop doet, zullen we?
buttonWas = buttonIs; De oude status van de knop om de huidige staat omdat we een nieuwe stand creëren instellen.
buttonIs = digitalRead(switchPin); Lees de knopstatus
}

VOID changeLights() {/ / schakelt u de momenteel verlichte LED en op volgende.
timer=Millis(); onze timer instellen op de huidige tijd
if(currentLED==1) {}
digitalWrite (ledPinGreen, laag);
digitalWrite (ledPinYellow, hoge);
}
if(currentLED==2) {}
digitalWrite (ledPinYellow, laag);
digitalWrite (ledPinRed, hoge);
}
if(currentLED==3) {}
digitalWrite (ledPinGreen, hoge);
digitalWrite (ledPinRed, laag);
}
currentLED ++; Toevoegen aan currentLED
Als (currentLED == 4) {currentLED = 1;}
}

void loop / / dit is onze "hoofdlus". Arduino programma's niet afsluiten--nergens om af te sluiten aan!
{
getButton();
if((buttonIs==1) & &(buttonWas==0)) {}
currentSpeed ++; Toevoegen aan de huidige vertraging omdat de knop werd ingedrukt.
if(currentSpeed==15) {currentSpeed = 1;} / / lus rond--dit onderscheidt ons terug naar een langzame draaiing.
}
Als (millis() > =timer+(1000/currentSpeed)) {/ / tijd om te veranderen van de verlichting!
changeLights();
}
}

Gerelateerde Artikelen

Een uitgebreide Intel Edison Getting Started Guide

Een uitgebreide Intel Edison Getting Started Guide

Ik heb onlangs verworven een Intel IoT Developer Kit als onderdeel van een Instructable campagne. Ik ben bekend met sommige ingesloten verwerking modellen en microcontroller omgevingen zoals de Arduino, maar ik vond krijgen up and running met de Inte
Dummy is Linkit één Getting Started Guide

Dummy is Linkit één Getting Started Guide

Sinds ik ontving mijn promotionele Linkit een boord, heb ik been playing rond met het ertoe brengen om te werken en om te verkennen van de verschillende functies. Aanvankelijk die heb ik besloten om het publiceren van mijn eerste ible met de Linkit O
LinkIt één Getting Started Guide

LinkIt één Getting Started Guide

Onlangs in de Mediatek Linkit een giveaway was ik een van die 250 mensen die kreeg dit veelzijdige, klein ding. Met geweldige functies zoals ingebouwde Bluetooth, Wifi, GSM, GPS, Sd-kaartsleuf, Audio jack, de Linkit een boord is gewoon de perfecte di
Alles-in-één raspberry Pi Getting Started Guide

Alles-in-één raspberry Pi Getting Started Guide

Raspberry Pi, een van de meest ingenieuze uitvinding voor makers en hackers. Voordat we aan de slag in de nitty gritty details van het krijgen van het setup, we eerst moeten denken over de vraag wat de Raspberry Pi eigenlijk is?Raspberry Pi is een li
Arduino all-in-One Remote

Arduino all-in-One Remote

Je kun nu al de afstandsbedieningen van uw huis in een apparaat dat past in uw hand met Arduino, nooit strijd voor wie de afstandsbediening opnieuw heeft!Om het te maken zal u het volgende nodig:Arduino (ik gebruikte een goedkope kopie van de arduino
Zelfgemaakte zeep-Making Getting Started Guide

Zelfgemaakte zeep-Making Getting Started Guide

Het voelde als een nieuwe wereld, toen ik begon te leren over natuurlijke zelfgemaakte zeep te maken. Ik heb maanden gewoon doen onderzoek en proberen te voelen te maken van alle details voordat ik echt dook in het maken van zeep!Hier zijn een paar v
Raspberry Pi B + Getting Started Guide

Raspberry Pi B + Getting Started Guide

dit is een tutorial over aan de slag met een raspberry pi b + model. Als het u bevalt kunt u stemming en volgStap 1: Download Noobs Google raspberry pi noobs downloaden, zal zij het eerste resultaat. U kunt het downloaden van netwerk of off line advi
All-in-one PC van oude laptop

All-in-one PC van oude laptop

Groeten,Dit is mijn eerste turtorial ooit, en mijn moedertaal niet Engels, dus sorry als ik schrijf iets mis. Over turtorial, zal het niet stap voor stap turtorial, maar eerder een idee voor iemand die wil bouwen somethig vergelijkbaar. Dit is gewoon
All in One PC / Computer - DIY

All in One PC / Computer - DIY

My DIY All in one PCDe afgelopen jaren, was ik met behulp van een Laptop van Dell Inspiron als mijn dagelijkse computer. Hoe langzaam het toonde haar leeftijd en onderdelen leek te worden bij gebreke van een tegelijk. Ten eerste, het toetsenbord werk
DIY ALL IN ONE PC; Idee naar realiteit "volledig"

DIY ALL IN ONE PC; Idee naar realiteit "volledig"

HalloZijn mijn eerste instructable. waar ik proberen zal uit te leggen u tonen hoe kunt u een goedkope ALL IN ONE PC.Hoewel zijn niet goedkoop maar goedkoper dan Orignal product veryyyyyyOKzzz mijn eerste beeld is het beeld van een concept uit te leg
All-in-one laptop

All-in-one laptop

mijn eerste experiment voor een all in one PC vanaf een Asus laptop x58l.Magneten ondersteunen display en de dunne case.Een schroef onder het dunne case voor de aan en uit knop van de PC.het is alle verwijderbare onderdelen voor upgrades en reparatie
Mijn zelfgemaakte All in One PC

Mijn zelfgemaakte All in One PC

dit is mijn zelfgemaakte ALL IN ONE PC. Het geval gemaakt van plastic doos geschilderd in zwart en gemonteerd in de achterzijde monitor met 4 schroeven. en voeding evenals wat voet.Specificatie:Intel Pentium DualCore2GB RAM160GB harde schijf16 inch M
How To Get all-in-One Emulator op Ipod Touch niet Jailbroken

How To Get all-in-One Emulator op Ipod Touch niet Jailbroken

dit is een alles in een emulator voor n64, nes, SNES, mame, genesis, ect...Ik denk dat voor de n64-emulator moet je hebben ios 7 +Zul je de datum te wijzigen tot en met 2012 elke keer dat u start de app maar zorg ervoor dat nadat je klaar wijzigen va
Arduino op hart littlebits Quick Start

Arduino op hart littlebits Quick Start

Dit instructable zal inschakelen die u aan een eenvoudige digitale en analoge schakeling code evenals het verstrekken van een starter schets die u kunt aan de slag snel en ook om te debuggen uw circuit. Dit Instructable is gericht op beginners en oud