4

code schrijven

plan van aanpak

Om zelf <Code> te schrijven heb je een idee en een plan van aanpak nodig.

probleemstelling:
Ik wil dat als ik een drukknop indruk dat de LED die brandt uitgaat en een andere LED gaat branden

In dit voorbeeld heb ik één drukknop, twéé LED-lampjes, twéé 220 Ohm weerstanden, één 10 k Ohm weerstand, draden en een Arduino UNO met een breadboard nodig.

nodig

ITTT

De probleemstelling is terug te herleiden tot een 'if then else'-statement.

if then else

probleemstelling in een diagram

probleemstelling-structuur in code

if (schakelaar is ingedrukt) { // zet LED 1 uit // zet LED 2 aan } else { // zet LED 1 aan // zet LED 1 uit }

<code>

variabelen

Vóór de void setup() moeten variabelen die gebruikt worden gedefinieerd worden.

De stand van de drukknop moet vóór de void setup() gedefinieerd worden. Hiervoor kan bijvoorbeeld de variabele switchstate gebruikt worden. Deze variabele kan met behulp van een int de waarde van een heel getal krijgen.

int switchstate = 0;

pinMode()

Met behulp van pinMode() wordt gedefinieerd of de desbetreffende pin een INPUT of een OUTPUT pin wordt.

De Arduino UNO moet opgezet worden om twéé LED-lampjes aan te kunnen sturen en één drukknop.
Hiervoor moeten de pinnen van de Arduino UNO gedefineerd worden als INPUT en OUTPUT. Hiervoor wordt pinMode() gebruikt.

input & output

Omdat de LED-lampjes aangestuurd moeten worden (er stroom naar toe gaat), worden twéé pinnen als OUTPUT gedefinieerd.

pinMode(3, OUTPUT);
pinMode(4, OUTPUT);

Omdat de drukknop afgelezen moet worden (of er wel of niet stroom staat op de plek achter de schakelaar) wordt één pin gedefinieerd als INPUT.

pinMode(2, INPUT);

void setup()

De pinMode() wordt gedefinieerd in de void setup() en binnen acculades geplaatst.

digitalWrite();

Met behulp van digitalWrite(); wordt wel of geen (HIGH/LOW) stroom vanaf een bepaalde pin naar een LED-lampje toegestuurd.

digitalWrite(3, HIGH);
digitalWrite(4, LOW);

digitalRead();

Met behulp van digitalRead(); wordt afgelezen of wel of geen stroom van de drukknop afgaat. De variabele switchstate krijgt de waarde van digitalRead() op pin 2.

switchstate = digitalRead(2);

void loop()

De digitalWrite() en de digitalRead() worden gedefinieerd in de void loop() en binnen acculades geplaatst.

<code>

// definieer de beginwaarde van switchstate als 0 int switchstate = 0; void setup() { // definieer de LED pinnen als output pinMode(3, OUTPUT); pinMode(4, OUTPUT); // definieer de drukknop als input pinMode(2, INPUT); } void loop() { // lees de waarde van de drukknop switchstate = digitalRead(2); // als de drukknop niet is ingedrukt if (switchstate == LOW) { digitalWrite(3, HIGH); // LED 1 uit op pin 3 digitalWrite(4, LOW); // LED 2 aan op pin 4 } // als de drukknop wel is ingedrukt else { digitalWrite(3, LOW); // LED 1 aan op pin 3 digitalWrite(4, HIGH); // LED 2 uit op pin 4 } }

stroomschema

circuit

zelf aan de slag

Stel zelf een plan van aanpak op voor het besturen van LED-lampjes. Experimenteer met de volgende functies* en statements* en definieer variabelen. Zorg ervoor dat je <code> altijd gedocumenteerd is!

      if
      if else
      for
      int
      digitalRead
      digitalWrite en/of AnalogWrite*

Stel een stroomschema op en gebruik de volgende symbolen:

      LED
      weerstand
      drukknop
      gebruik: leeg stroomschema [↓]

Zet het stroomschema om in een concrete bouwplaat met een schematische Arduino UNO en een schematisch breadboard.

      Geef aan hoe de draden moeten lopen.
      Geef aan welke weerstanden gebruikt worden.
        220 Ohm =           www.weerstandcalculator.nl
        10 k Ohm =           www.weerstandcalculator.nl
      Geef aan waar de weerstanden geplaatst worden.
      Geef aan of het RBG-LED-lampjes zijn.
      Geef aan waar de LED-lampjes geplaatst worden.
      Geef aan waar de drukknoppen geplaatst worden.
      gebruik: bouwplaat[↓]
* = gebruik eventueel de onderstaande referenties.

!

referentie

Qweerstanden kleurkaart www.weerstandcalculator.nl

     220 Ohm = rood rood bruin goud:          

Q www.arduino.cc:

Structure

Control Structures

Further Syntax

Arithmetic Operators

  • = (assignment operator)
  • (addition)
  • - (subtraction)
  • * (multiplication)
  • / (division)
  • % (modulo)

Comparison Operators

  • == (equal to)
  • != (not equal to)
  • < (less than)
  • > (greater than)
  • <= (less than or equal to)
  • >= (greater than or equal to)

Boolean Operators

  • && (and)
  • || (or)
  • ! (not)

Pointer Access Operators

Bitwise Operators

  • & (bitwise and)
  • | (bitwise or)
  • ^ (bitwise xor)
  • ~ (bitwise not)
  • << (bitshift left)
  • >> (bitshift right)

Compound Operators

  • ++ (increment)
  • -- (decrement)
  • += (compound addition)
  • -= (compound subtraction)
  • *= (compound multiplication)
  • /= (compound division)
  • %= (compound modulo)

  • &= (compound bitwise and)
  • |= (compound bitwise or)

Variables

Constants

Data Types

Conversion

Variable Scope & Qualifiers

Utilities

Functions

Digital I/O

Analog I/O

Due & Zero only

Advanced I/O

Time

Math

Trigonometry

Characters

Random Numbers

Bits and Bytes

External Interrupts

Interrupts

Communication

USB (32u4 based boards and Due/Zero only)

!

doelen

wat moet je kunnen:

  • Je moet aan de hand probleemstelling een plan van aanpak voor een arduino-project kunnen schrijven.
  • Je moet uit het plan van aanpak eventuele 'als' 'dan' beweringen kunnen destilleren.
  • Je moet uit het plan van aanpak eventuele 'zolang' 'als' beweringen kunnen destilleren.
  • Je moet variabelen kunnen definieren en voor de void setup() plaatsen in de code.
  • Je moet in de void setup() met behulp van pinMode INPUTS en OUTPUTS kunnen definieren.
  • Je moet in de void loop() met if statements kunnen werken.
  • Je moet in de void loop() met if-else statements kunnen werken.
  • Je moet in de void loop() met for statements kunnen werken.
  • Je moet in de void loop() met digitalWrite LED-lampjes laten branden.
  • Je moet in de void loop() met AnalogWrite LED-lampjes laten branden.
  • Je moet in de void loop() met digitalRead schakellaar standen kunnen interpreteren.
  • Je moet code kunnen documenteren.
  • Je moet de juiste weerstanden op de juiste plekken kunnen gebruiken.
    220 Ohm =           & 10 k Ohm =          
  • Je moet aan de hand een analyse van de probleemstelling een stroomschema kunnen maken.
  • Je moet in een stroomschema de juiste symbolen kunnen gebruiken.
  • Je moet naar aanleiding van een stroomschema een bouwplaat kunnen produceren.