Advertentie
De laatste keer dat ik je verliet hebben opgezet Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het bord en de poort instellenDus je hebt een Arduino-starterkit voor jezelf gekocht, en mogelijk enkele andere willekeurige coole componenten - wat nu? Hoe begin je eigenlijk met het programmeren van dit Arduino-ding? Hoe stel je het in ... Lees verder uw Arduino om met Mac of Windows te werken en een eenvoudige test-app te hebben geüpload die de ingebouwde LED knipperde. Vandaag ga ik de code die je hebt geüpload, de structuur van Arduino-software en wat meer over de elektronische bits op het bord zelf uitleggen.
Dit artikel maakt deel uit van een inleiding tot de Arduino-serie. De andere artikelen in de serie tot nu toe zijn:
- Wat is Arduino en wat kun je ermee? Wat is Arduino en wat kun je ermee?De Arduino is een opmerkelijk klein elektronisch apparaat, maar als je er nog nooit een hebt gebruikt, wat zijn dat dan precies en wat kun je ermee doen? Lees verder ?
- Wat is een Arduino-starterkit en wat bevat deze? Wat zit er in een Arduino Starter Kit? [MakeUseOf Explains]Ik heb eerder de Arduino open-source hardware hier op MakeUseOf geïntroduceerd, maar je hebt meer nodig dan alleen de daadwerkelijke Arduino om er iets uit te bouwen en daadwerkelijk aan de slag te gaan. Arduino "starterkits" zijn ... Lees verder
- Meer coole componenten om te kopen met je starterkit 8 meer coole componenten voor uw Arduino-projectenDus u denkt erover om een Arduino-starterkit te kopen, maar vraagt u zich af of enkele basis-LED's en weerstanden voldoende zullen zijn om u een weekend bezig te houden? Waarschijnlijk niet. Hier zijn er nog 8 ... Lees verder
- Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het bord en de poort instellen Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het bord en de poort instellenDus je hebt een Arduino-starterkit voor jezelf gekocht, en mogelijk enkele andere willekeurige coole componenten - wat nu? Hoe begin je eigenlijk met het programmeren van dit Arduino-ding? Hoe stel je het in ... Lees verder
De hardware
Laten we eens nader bekijken wat de Arduino Uno heeft qua bits op de printplaat.
Hier is een vergroot diagram om naar te verwijzen:
- Bovenaan bevinden zich 14 digitale invoer- / uitvoerpinnen (genummerd 0-13). Dit zijn de meest veelzijdige pinnen op uw Arduino en kunnen als invoer of uitvoer fungeren en vormen de kern van uw projecten. Digitaal betekent dat het signaal dat deze pinnen kunnen schrijven of lezen, aan of uit staat.
- 6 van die digitale pinnen, die zijn gemarkeerd met het tilde-teken ~ zijn in staat om te doen wat het wordt genoemd Pulsbreedtemodulatie. Ik ben geen elektrotechnisch ingenieur, dus ik zal mezelf niet in verlegenheid brengen door de wetenschap hierachter uit te leggen, maar aan jou en mij het betekent dat we een reeks uitgangsniveaus kunnen bieden - bijvoorbeeld het dimmen van een led of het aandrijven van een motor op verschillende niveaus snelheden.
- Pin 13 is speciaal omdat het een ingebouwde LED heeft. Dit is alleen voor het gemak en voor testdoeleinden. U kunt die ingebouwde LED gebruiken, zoals u deed in de Blink-voorbeeldapp, door simpelweg uit te voeren naar pin 13 - of het kan worden gebruikt als een standaard I / O-pin.
- Rechtsonder bevinden zich 6 analoge ingangspinnen. Deze zullen de waarde aflezen van analoge sensoren zoals een lichtmeter of variabele weerstanden.
- Linksonder naast de analoge ingangspennen zitten power pins. De enige waar u zich echt zorgen over hoeft te maken, zijn de aardingspennen (GND), 3.3v en 5v stroomlijnen.
- Ten slotte is de enige schakelaar op de Arduino een resetschakelaar. Hiermee wordt elk programma opnieuw gestart dat in het geheugen is opgeslagen.
- De Arduino heeft een ingestelde hoeveelheid geheugen en als je programma te groot wordt, geeft de compiler je een foutmelding.
De structuur van een Arduino-programma
Elk Arduino-programma bestaat uit ten minste twee functies (als je niet weet wat een functie is, lees dan zeker mijn basis programmeer tutorial, deel 2 - functie- en controleverklaringen De absolute basis van programmeren voor beginners (deel 2)In deel 2 van onze absolute beginnershandleiding voor programmeren, zal ik de basis van functies, retourwaarden, loops en conditionals behandelen. Zorg ervoor dat je deel 1 hebt gelezen voordat je dit aanpakt, waar ik de ... Lees verder , en deel 1 waar we variabelen bespraken De basis van computerprogrammering 101 - Variabelen en gegevenstypenIk heb een beetje geïntroduceerd en gepraat over Object Oriented Programming voor en waar zijn naamgenoot komt van, ik dacht dat het tijd is dat we de absolute basis van programmeren doorlopen in een niet-taalspecifieke manier. Deze... Lees verder voordat u verder gaat).
De eerste is de setup-functie. Dit wordt in eerste instantie uitgevoerd - eenmalig - en wordt gebruikt om de Arduino te vertellen wat is verbonden en waar, en om eventuele variabelen die u nodig heeft in uw programma te initialiseren.
Ten tweede is de lus. Dit is de kern van elk Arduino-programma. Wanneer de Arduino draait, loopt de lus, nadat de setup-functie is voltooid, door alle code, doe dan het hele ding opnieuw - totdat ofwel de stroom uitvalt ofwel de resetschakelaar ingedrukt. De tijd die nodig is om een volledige lus te voltooien, hangt af van de code. U kunt een code schrijven met de tekst 'wacht 6 uur', in welk geval de lus zich niet vaak zal herhalen.
Hier is een snel statusdiagram om te illustreren:
Het Blink-programma onderzoeken
Kijk terug naar de programmacode van Blink en identificeer de setup- en lusfuncties.
Dit is de opzet:
ongeldige setup () { // initialiseer de digitale pin als output. // Pin 13 heeft een LED aangesloten op de meeste Arduino-kaarten: pinMode (13, OUTPUT); }
De regels die beginnen // zijn gewoon opmerkingen om de code aan een menselijke lezer uit te leggen, en ze worden niet geüpload naar de Arduino. Dus in feite is er maar één regel installatiecode in deze specifieke Arduino-app. Die regel zegt: "Zet pin 13 in output mode". 13, onthoud, is de ingebouwde LED.
Dan is er de lus:
leegte lus () { digitalWrite (13, HIGH); // zet de LED aan. vertraging (1000); // wacht even. digitalWrite (13, LOW); // zet de LED uit. vertraging (1000); // wacht even. }
De opmerkingen aan het einde van elke coderegel verklaren hun functie vrij goed. HOOG en LAAG verwijzen naar de AAN en UIT status van een digitale uitgang - in ons geval de LED. Je zou ook AAN of UIT in de code kunnen schrijven, beide zijn synoniem (net als 0 en 1 ook). Vertraging vertelt de Arduino in dit geval even te wachten 1000 milliseconden (of 1 seconde).
Tot slot nog een opmerking over de programmeertaal die hier wordt gebruikt. Merk op dat zowel setup- als loop-functies het woord hebben nietig voor hen. Dit is een speciaal woord voor niets, omdat de functie geeft niets terug wanneer het wordt aangeroepen, draait het gewoon de code erin. Laten we het voorlopig daarbij laten door te zeggen dat het codeblok van de functie is omsloten door accolades {}, en dat elke coderegel moet eindigen op een; puntkomma.
Probeer op de een of andere manier het basisprogramma te wijzigen door de precieze vertragingswaarden te wijzigen in iets groter of kleiner. Kijk hoe klein je het kunt krijgen voordat het knipperen niet meer merkbaar is. Bepaal welke waarde u wilt wijzigen om ervoor te zorgen dat deze langer aan blijft of langer uit blijft. Probeer wat meer digitalWrite- en delay-instructies toe te voegen aan de lusfunctie om een complexer knipperend patroon zoals het te creëren morsecode voor SOS. Als je een zoemer hebt, probeer deze dan ook aan te sluiten op pinnen 13 en GND (hint: de rode draad gaat naar 13, zwart naar aarde).
Dat is alles voor vandaag. De volgende keer voegen we wat meer LED's toe en schrijven we onze eigen applicatie helemaal opnieuw. Zoals altijd worden opmerkingen en aandelen zeer gewaardeerd. Ik kan me niet voorstellen dat je problemen zou hebben met de code waarnaar vandaag wordt verwezen, maar als je hebt geprobeerd de code enigszins aan te passen en Als je fouten of onverwacht gedrag tegenkomt, plaats het dan in de reacties en we zullen kijken of we het kunnen oplossen samen.
James heeft een BSc in Artificial Intelligence en is CompTIA A + en Network + gecertificeerd. Hij is de hoofdontwikkelaar van MakeUseOf en brengt zijn vrije tijd door met het spelen van VR paintball en bordspellen. Hij bouwt al pc's sinds hij een kind was.