<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://infvo.nl/basis/index.php?action=history&amp;feed=atom&amp;title=Arduino-opdrachten%2FButton-1</id>
	<title>Arduino-opdrachten/Button-1 - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://infvo.nl/basis/index.php?action=history&amp;feed=atom&amp;title=Arduino-opdrachten%2FButton-1"/>
	<link rel="alternate" type="text/html" href="https://infvo.nl/basis/index.php?title=Arduino-opdrachten/Button-1&amp;action=history"/>
	<updated>2026-05-12T23:48:09Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://infvo.nl/basis/index.php?title=Arduino-opdrachten/Button-1&amp;diff=559&amp;oldid=prev</id>
		<title>Eelco: Nieuwe pagina aangemaakt met &#039;{{Zijbalk Arduino-opdrachten}}  == Button-1 ==    {{Leerdoelen|schakelaar met pulldown-weerstand; IF; toestand}} {{Voorkennis|Arduino-opdrachten/Button-0}} {{On...&#039;</title>
		<link rel="alternate" type="text/html" href="https://infvo.nl/basis/index.php?title=Arduino-opdrachten/Button-1&amp;diff=559&amp;oldid=prev"/>
		<updated>2016-05-24T09:08:09Z</updated>

		<summary type="html">&lt;p&gt;Nieuwe pagina aangemaakt met &amp;#039;{{Zijbalk Arduino-opdrachten}}  == Button-1 ==    {{Leerdoelen|schakelaar met pulldown-weerstand; IF; toestand}} {{Voorkennis|&lt;a href=&quot;/basis/index.php?title=Arduino-opdrachten/Button-0&quot; title=&quot;Arduino-opdrachten/Button-0&quot;&gt;Arduino-opdrachten/Button-0&lt;/a&gt;}} {{On...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Zijbalk Arduino-opdrachten}}&lt;br /&gt;
&lt;br /&gt;
== Button-1 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Leerdoelen|schakelaar met pulldown-weerstand; IF; toestand}}&lt;br /&gt;
{{Voorkennis|[[Arduino-opdrachten/Button-0]]}}&lt;br /&gt;
{{Onderdelen| &lt;br /&gt;
[[Arduino/LED|LED]], &lt;br /&gt;
[[Arduino/Weerstand|weerstand]] 220 ohm (rood-rood-bruin-goud),&lt;br /&gt;
[[Arduino/Weerstand|weerstand]] 10k ohm (bruin-zwart-oranje-goud),&lt;br /&gt;
[[Arduino/Button|drukknopschakelaar]]}}&lt;br /&gt;
{{Libraries en functies| &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Inleiding ==&lt;br /&gt;
[[Bestand:Button1-schets.png|thumb|right|250px|Schakel LED aan en uit]]&lt;br /&gt;
&lt;br /&gt;
In de vorige sketch hebben we een drukknopschakelaar (button) op een erg eenvoudige manier gebruikt: de LED brandt alleen als je de schakelaar ingedrukt houdt.&lt;br /&gt;
&lt;br /&gt;
In deze sketch leer je hoe je met een enkele schakelaar de LED aan- en uit kunt schakelen.&lt;br /&gt;
&lt;br /&gt;
Hiervoor moet je de toestand van de LED bijhouden: als deze uit was, moet je die aanzetten; als deze aan was, moet je die uitzetten. Voor het bijhouden van de toestand van de LED gebruik je een variabele (&amp;lt;code&amp;gt;ledState&amp;lt;/code&amp;gt;). Door middel van een toekenning (in de blokjestaal: &amp;quot;Set&amp;quot;, in de Arduino-taal &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;) kun je de waarde van die variabele veranderen.&lt;br /&gt;
&lt;br /&gt;
== Opbouwen van de schakeling ==&lt;br /&gt;
[[Bestand:Button1_bb.png|thumb|right|250px|Button met interne pullup weerstand]]&lt;br /&gt;
&lt;br /&gt;
Deze schakeling is gelijk aan de schakeling van Button-0.&lt;br /&gt;
# Plaats een LED met serieweerstand op het breadboard;&lt;br /&gt;
# Verbind de LED met pin 13 van de Arduino;&lt;br /&gt;
# Plaats een schakelaar (4 pootjes) over de lege middenrij;&lt;br /&gt;
# Verbind de linkerkolom van de schakelaar met pin 2 van de Arduino.&lt;br /&gt;
# Plaats een weerstand van 10k Ohm tussen deze linkerkolom en de 0V rij (pulldown-weerstand).&lt;br /&gt;
# Verbind de rechterkolom van de schakelaar met de 5V-rij.&lt;br /&gt;
# Verbind de voedingsrijen (0V, 5V) van het breadboard met de bijbehorende pinnen van de Arduino.&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
[[Bestand:Button1-schema.png|thumb|right|250px|Button met pulldown-weerstand]]&lt;br /&gt;
&lt;br /&gt;
== Programma ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
int led = 13;&lt;br /&gt;
int button = 2;&lt;br /&gt;
&lt;br /&gt;
int ledState = LOW;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(led, OUTPUT);&lt;br /&gt;
  pinMode(button, INPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (digitalRead(button) == HIGH) {&lt;br /&gt;
    if (ledState == LOW) {&lt;br /&gt;
      ledState = HIGH;&lt;br /&gt;
    } else {&lt;br /&gt;
      ledState = LOW;&lt;br /&gt;
    }&lt;br /&gt;
    delay(200);&lt;br /&gt;
  }&lt;br /&gt;
  digitalWrite(led, ledState);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Uitleg van het programma ==&lt;br /&gt;
&lt;br /&gt;
We gebruiken hier een schakelaar met een externe pulldown-weerstand. &lt;br /&gt;
* in &amp;lt;code&amp;gt;setup&amp;lt;/code&amp;gt; initialiseren we de button-pin met &amp;lt;code&amp;gt;pinMode(button, INPUT);&amp;lt;/code&amp;gt;&lt;br /&gt;
* het lezen van deze pin via &amp;lt;code&amp;gt;digitalRead(button)&amp;lt;/code&amp;gt; geeft de waarde &amp;lt;code&amp;gt;HIGH&amp;lt;/code&amp;gt; als de knop ingedrukt is.&lt;br /&gt;
** &amp;quot;active HIGH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Met dit programma kun je de LED met één knop aan- en uitzetten.&lt;br /&gt;
&lt;br /&gt;
We houden de toestand van de LED (aan: HIGH of uit: LOW) bij in de variabele &amp;lt;code&amp;gt;ledState&amp;lt;/code&amp;gt;, met als waarden &amp;lt;code&amp;gt;LOW&amp;lt;/code&amp;gt; en &amp;lt;code&amp;gt;HIGH&amp;lt;/code&amp;gt;. Als de knop ingedrukt is, keren we de waarde van deze variabele om.&lt;br /&gt;
&lt;br /&gt;
We schrijven de waarde van deze variabele naar de output (LED).&lt;br /&gt;
&lt;br /&gt;
=== IF-statement ===&lt;br /&gt;
&lt;br /&gt;
We gebruiken hier twee voorbeelden van het if-statement. Dit heeft de vorm:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
if (conditie) {&lt;br /&gt;
  opdracht1;&lt;br /&gt;
} else {&lt;br /&gt;
  opdracht2;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
De betekenis hiervan is:&lt;br /&gt;
# reken de waarde van de conditie uit&lt;br /&gt;
# als deze waarde &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; is, voer dan &amp;lt;code&amp;gt; opdracht1&amp;lt;/code&amp;gt; uit;&lt;br /&gt;
# als deze waarde &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; is, voer dan &amp;lt;code&amp;gt;opdracht2&amp;lt;/code&amp;gt; uit.&lt;br /&gt;
&lt;br /&gt;
Met andere woorden: slechts één van deze twee opdrachten wordt uitgevoerd.&lt;br /&gt;
&lt;br /&gt;
Een voorbeeld van een conditie is: &amp;lt;code&amp;gt;ledState == HIGH&amp;lt;/code&amp;gt;. Het teken &amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt; staat voor &amp;quot;is gelijk aan&amp;quot;. Deze vergelijking heeft &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; als resultaat wanneer &amp;lt;code&amp;gt;ledState&amp;lt;/code&amp;gt; gelijk is aan &amp;lt;code&amp;gt;HIGH&amp;lt;/code&amp;gt;; in alle andere gevallen is het resultaat &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
=== Toestand van de uitvoer ===&lt;br /&gt;
&lt;br /&gt;
We houden de toestand van de uitvoer (LED) bij in de variabele &amp;lt;code&amp;gt;ledState&amp;lt;/code&amp;gt;. Aan de hand van de invoer en aan de hand van de vorige toestand berekenen we dan de nieuwe toestand. Deze kopiëren we naar de uitvoer (LED).&lt;br /&gt;
&lt;br /&gt;
Deze vorm zullen we vaker tegenkomen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
if (input == X) {&lt;br /&gt;
  state = newState(state, X);&lt;br /&gt;
  setOutput(state);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Complement ===&lt;br /&gt;
&lt;br /&gt;
Merk op dat je het if-statement voor het omdraaien van &amp;lt;code&amp;gt;ledState&amp;lt;/code&amp;gt; ook kunt schrijven als: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;ledState = 1 - ledState;&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
(zie de opdrachten).&lt;br /&gt;
&lt;br /&gt;
== Vragen en opdrachten ==&lt;br /&gt;
&lt;br /&gt;
=== Eerste experimenten ===&lt;br /&gt;
&lt;br /&gt;
* kun je de opdracht &amp;lt;code&amp;gt;digitalWrite(led, ledState);&amp;lt;/code&amp;gt; ook binnen het (buitenste) IF-statement plaatsen? Maakt dit verschil in het gedrag van het programma?&lt;br /&gt;
&lt;br /&gt;
=== Verdiepingsvragen ===&lt;/div&gt;</summary>
		<author><name>Eelco</name></author>
	</entry>
</feed>