Eerste stappen met de Arduino Een nadere blik op de printplaat en de structuur van een programma

Eerste stappen met de Arduino Een nadere blik op de printplaat en de structuur van een programma / DIY

De laatste keer dat ik vertrok, heb je ingesteld. Aan de slag met je Arduino-starterkit - Stuurprogramma's installeren en het board en de poort instellen Aan de slag met je Arduino-starterkit - Stuurprogramma's installeren en het board en de poort instellen Dus, je hebt jezelf een Arduino starterkit 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 Meer je Arduino om met Mac of Windows te werken, en een eenvoudige testapp geüpload die de ingebouwde LED knipperde. Vandaag ga ik de code die je hebt geüpload uitleggen, de structuur van de Arduino-software en iets meer over de elektronische bits op het bord zelf.

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 doen? Wat is Arduino en wat kun je ermee doen? Wat is Arduino en wat kun je ermee doen? De Arduino is een opmerkelijk klein elektronisch apparaat, maar als je er nog nooit een hebt gebruikt, wat precies zijn ze dan, 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] 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 zult meer nodig hebben dan alleen de echte Arduino om er iets uit te bouwen en daadwerkelijk aan de slag te gaan. Arduino "starter kits" zijn ... Lees meer
  • Meer coole componenten om te kopen met je starterskit 8 Meer coole componenten voor je Arduino-projecten 8 coolere componenten voor je Arduino-projecten Dus, je denkt erover om een ​​Arduino-starterkit te krijgen, maar vraag je af of sommige basis-LED's en -weerstanden zullen worden genoeg om je het weekend bezig te houden? Waarschijnlijk niet. Hier zijn nog eens 8 ... Lees meer
  • Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het board en de poort instellen Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het board en de poort instellen Aan de slag met uw Arduino-starterkit - Stuurprogramma's installeren en het moederbord instellen & Port So, je hebt jezelf een Arduino-starterkit en mogelijk enkele andere willekeurige coole componenten gekocht - wat nu? Hoe begin je eigenlijk met het programmeren van dit Arduino-ding? Hoe stel je het in ... Lees meer

De hardware

Laten we eens nader bekijken wat de Arduino Uno heeft op het gebied van bits op de printplaat.

Hier is een vergroot diagram om te verwijzen naar:

  • Langs de bovenkant bevinden zich 14 digitale invoer / uitvoer-pinnen (genummerd van 0-13). Dit zijn de meest veelzijdige pinnen op uw Arduino en kunnen als invoer of uitvoer fungeren en de kern van uw projecten vormen. Digitaal betekent dat het signaal dat deze pennen kunnen schrijven of lezen aan of uit zal zijn.
  • 6 van die digitale pinnen, die worden gemarkeerd door het tilde-teken ~ zijn in staat om te doen wat het Pulse Width Modulation wordt genoemd. Ik ben geen elektrotechnisch ingenieur, dus ik zal mezelf niet in verlegenheid brengen door de wetenschap achter dit te verklaren, maar voor jou en ik betekent dit dat we een reeks outputniveaus kunnen bieden - bijvoorbeeld, een LED dimmen of een motor met verschillende snelheden aandrijven.
  • Pin 13 is speciaal omdat het een ingebouwde LED heeft. Dit is alleen voor het gemak en testdoeleinden. U kunt die ingebouwde LED gebruiken zoals u deed in de voorbeeld-app Blink door eenvoudig naar pin 13 te sturen - of deze kan als standaard I / O-pin worden gebruikt.
  • Rechtsonder bevinden zich 6 analoge ingangspennen. Deze zullen de waarde van analoge sensoren zoals een lichtmeter of variabele weerstanden aflezen.
  • Linksonder naast de analoge ingangspennen zitten voedingspennen. De enige waar je je echt zorgen over moet maken, zijn de aardingspennen (GND), 3.3v en 5v.
  • Ten slotte is de enige schakelaar op de Arduino een resetschakelaar. Hiermee wordt het programma in het geheugen opnieuw gestart.
  • 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 mijn basisprogrammeerhandleiding, deel 2 - functie en besturingsverklaringen De absolute grondbeginselen van programmeren voor beginners (deel 2) De absolute basis van programmeren voor beginners (deel 2) In deel 2 van onze absolute handleiding voor beginners voor het programmeren, zal ik de basisbeginselen van functies, retourwaarden, loops en conditionals behandelen. Zorg ervoor dat u deel 1 hebt gelezen voordat u dit aanpakt , waar ik de ... Lees meer, en deel 1 waarin we variabelen bespraken De grondbeginselen van computerprogrammering 101 - Variabelen en datatypes De grondbeginselen van computerprogrammering 101 - Variabelen en datatypen Na een introductie en een korte bespreking van objectgeoriënteerde programmering voor en waar naamgenoot komt van, ik dacht dat het tijd werd om de absolute basis van programmeren op een niet-taalspecifieke manier door te nemen. Dit ... Lees meer voordat je verdergaat).

De eerste is de setup-functie. Dit wordt in eerste instantie - eenmalig - uitgevoerd en wordt gebruikt om de Arduino te vertellen wat er is verbonden en waar, en om eventuele variabelen die mogelijk in uw programma nodig zijn, te initialiseren..

Ten tweede is de lus. Dit is de kern van elk Arduino-programma. Wanneer de Arduino draait, nadat de setup-functie is voltooid, zal de lus door alle code lopen en vervolgens het hele ding opnieuw doen - totdat ofwel de stroom is verloren of de resetknop is ingedrukt. De lengte van de tijd die nodig is om een ​​volledige lus in te vullen, is afhankelijk van de code die is ingesloten. Je mag een code schrijven die zegt “wacht 6 uur”, in welk geval de lus niet vaak zal herhalen.

Hier is een kort toestandsdiagram om te illustreren:

Het Blink-programma onderzoeken

Bekijk de Blink-programmacode en identificeer de setup- en loop-functies.

Dit is de setup:

void setup () // initialiseer de digitale pin als een uitvoer. // Pin 13 heeft een LED die op de meeste Arduino-kaarten is aangesloten: pinMode (13, OUTPUT); 

De lijnen die beginnen met // zijn gewoon opmerkingen om de code uit te leggen aan een menselijke lezer, en ze worden niet geüpload naar de Arduino. In feite is er maar één regel met instellingscode in deze specifieke Arduino-app. Die zin zegt “Zet pin 13 in de uitvoermodus”. 13, onthoud, is de ingebouwde LED.

Dan is er de lus:

void loop () digitalWrite (13, HIGH); // zet de LED op vertraging (1000); // wacht op een tweede digitalWrite (13, LOW); // zet de LED off delay (1000); // wacht even

De opmerkingen aan het einde van elke regel code verklaren hun functie vrij goed. HIGH en LOW verwijzen naar de AAN- en UIT-status van een digitale uitgang - in ons geval de LED. Je zou eigenlijk ook in de code ON of OFF kunnen schrijven, beide zijn synoniemen (zoals 0 en 1 ook). Vertraging vertelt de Arduino om een ​​beetje te wachten, in dit geval 1000 milliseconden (of 1 seconde).

Eindelijk een opmerking over de programmeertaal die hier wordt gebruikt. Merk op dat zowel de setup- als loop-functies het woord hebben leegte voor hen. Dit is een speciaal woord voor niets, omdat de functie geeft niets terug wanneer het wordt aangeroepen - het voert gewoon de code uit die hierin is opgenomen. Laten we voorlopig hierop blijven door te zeggen dat het codeblok van de functie is ingesloten door accolades en dat elke coderegel moet eindigen op een; puntkomma.

Probeer het basisprogramma op de een of andere manier te veranderen door de precieze vertragingswaarden te veranderen in iets groters of kleiner. Kijk hoe klein je het kunt krijgen voordat het knipperen niet meer merkbaar is. Bepaal welke waarde moet worden gewijzigd om het langer aan te laten blijven of langer uit te blijven. Probeer wat meer DigitalWrite en delay-statements toe te voegen aan de loop-functie om een ​​complexer knipperpatroon te creëren, zoals de morsecode voor SOS. Als je een zoemer hebt, probeer hem ook op pins 13 en GND aan te sluiten (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 gedeelde delen erg op prijs gesteld. Ik kan me niet voorstellen dat je problemen hebt met de code waarnaar vandaag wordt verwezen, maar als je de code enigszins hebt geprobeerd aan te passen en fouten of onverwacht gedrag tegenkomt, kun je dit in de reacties plaatsen en we zullen zien als we er samen doorheen kunnen werken.

Ontdek meer over: Arduino.