<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
	<id>https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Programafvikling_i_Arduino</id>
	<title>Programafvikling i Arduino - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Programafvikling_i_Arduino"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;action=history"/>
	<updated>2026-08-22T06:07:14Z</updated>
	<subtitle>Versionshistorie for denne side i HTX Arduino</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=4366&amp;oldid=prev</id>
		<title>Bar: /* Referencer */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=4366&amp;oldid=prev"/>
		<updated>2022-10-31T19:25:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Referencer&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 31. okt. 2022, 21:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l172&quot;&gt;Linje 172:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 172:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Referencer==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Referencer==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{start-Arduino}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:Oprindelige Dokumenter]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:Oprindelige Dokumenter]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:Programmering af Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:Programmering af Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=1036&amp;oldid=prev</id>
		<title>Bar: /* Grunddele i Programmet */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=1036&amp;oldid=prev"/>
		<updated>2022-10-20T14:26:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Grunddele i Programmet&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 20. okt. 2022, 16:26&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot;&gt;Linje 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[fil:program-fig1.png|400px|Startvindue i Arduino IDE]]&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[fil:program-fig1.png|400px|Startvindue i Arduino IDE]]&amp;lt;br /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;Figur 1. Startvindue i Arduino IDE.&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;Figur 1. Startvindue i Arduino IDE.&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[fil:program-fig1.png|400px|]]&amp;lt;br /&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Man kan på figur 1 også se, at der er to linjer med almindelig læsbar engelsk tekst. Disse to linjer starter begge med //  og disse to slash-tegn betyder, at alt hvad der står til højre på den linje, ikke bliver tolket som programkode, men i stedet for kan anvendes som kommentarer og beskrivelser af selve programkoden.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Man kan på figur 1 også se, at der er to linjer med almindelig læsbar engelsk tekst. Disse to linjer starter begge med //  og disse to slash-tegn betyder, at alt hvad der står til højre på den linje, ikke bliver tolket som programkode, men i stedet for kan anvendes som kommentarer og beskrivelser af selve programkoden.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=993&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=993&amp;oldid=prev"/>
		<updated>2022-10-20T13:49:21Z</updated>

		<summary type="html">&lt;p&gt;1 version importeret&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 20. okt. 2022, 15:49&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;da&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen forskel)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=992&amp;oldid=prev</id>
		<title>ard_&gt;Bar med 22. okt. 2018, 21:19</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Programafvikling_i_Arduino&amp;diff=992&amp;oldid=prev"/>
		<updated>2018-10-22T21:19:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[fil:Program-Video.png|500px|right|thumb|Video med forklaring til kapitlet|link=https://www.powtoon.com/online-presentation/ewzTiS5gVaq/?mode=movie]]&lt;br /&gt;
&lt;br /&gt;
For at få Arduinoen til at gøre noget, skal man have lavet et program til den. Programmet er ligesom en bageopskrift; Den beskriver helt konkret, hvad der skal ske, og hvornår det skal ske. Arduinoen udfører 100% det der står i programmet, modsat bageren, der godt kan slække lidt på nøjagtigheden når bageopskriften skal fortolkes…&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Grunddele i Programmet==&lt;br /&gt;
Et Arduino program er som minimum opdelt i to dele:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Del 1&amp;#039;&amp;#039;&amp;#039; bruges til at lave diverse opsætninger for programmet, og denne del bliver kun afviklet idet Arduinoboardet startes. Del 1 kaldes for setup i selve programkoden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Del 2&amp;#039;&amp;#039;&amp;#039; er selve programmet der skal afvikles. Del 2 starter så snart del 1 er afviklet, og afvikles igen og igen, indtil man slukker for Arduinoboardet. Del 2 kaldes for loop i selve programkoden.&lt;br /&gt;
&lt;br /&gt;
På figur 1 ses Arduino IDE når man starter på et nyt program; der er allerede skrevet nogle linjer programkode. Det er “skelettet” til de to dele som programmet som minimum skal deles op i, og man kan se, at der bruges Tuborg-tegn ved hver del: &amp;lt;code&amp;gt;{  }&amp;lt;/code&amp;gt; . Disse Tuborg-tegn beskriver, at der henholdsvis starter &amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt; og slutter &amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt; en del eller et “afsnit”.&lt;br /&gt;
&lt;br /&gt;
[[fil:program-fig1.png|400px|Startvindue i Arduino IDE]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Figur 1. Startvindue i Arduino IDE.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[fil:program-fig1.png|400px|]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Man kan på figur 1 også se, at der er to linjer med almindelig læsbar engelsk tekst. Disse to linjer starter begge med //  og disse to slash-tegn betyder, at alt hvad der står til højre på den linje, ikke bliver tolket som programkode, men i stedet for kan anvendes som kommentarer og beskrivelser af selve programkoden.&lt;br /&gt;
&lt;br /&gt;
==Gennemgang af programeksemplet Blink==&lt;br /&gt;
Det følgende er en gennemgang af programeksemplet Blink, der hentes i Arduino IDE under:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fil - Eksempler - 01. Basics - Blink&amp;#039;&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;[https://www.arduino.cc/en/Tutorial/Blink Arduino - Blink] 2015&amp;lt;/ref&amp;gt;. Programmet får en lysdiode, koblet til portben 13, til at blinke.&lt;br /&gt;
&lt;br /&gt;
Hele programmet er gengivet her, og de forskellige afsnit i koden er markeret med farver:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot; style=&amp;quot;border:3px dashed red&amp;quot;&amp;gt;/*&lt;br /&gt;
  Blink&lt;br /&gt;
  Turns on an LED on for one second, then off for one second, repeatedly.&lt;br /&gt;
 &lt;br /&gt;
  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and   ZERO it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to the correct LED pin independent of which board is used.&lt;br /&gt;
  If you want to know what pin the on-board LED is connected to on your Arduino model, check the Technical Specs of your board  at https://www.arduino.cc/en/Main/Products&lt;br /&gt;
 &lt;br /&gt;
  This example code is in the public domain.&lt;br /&gt;
 &lt;br /&gt;
  modified 8 May 2014&lt;br /&gt;
  by Scott Fitzgerald&lt;br /&gt;
 &lt;br /&gt;
  modified 2 Sep 2016&lt;br /&gt;
  by Arturo Guadalupi&lt;br /&gt;
 &lt;br /&gt;
  modified 8 Sep 2016&lt;br /&gt;
  by Colby Newman&lt;br /&gt;
*/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // the setup function runs once when you press reset or power the board&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot; style=&amp;quot;border:3px dashed blue&amp;quot;&amp;gt;void setup() {&lt;br /&gt;
  // initialize digital pin LED_BUILTIN as an output.&lt;br /&gt;
  pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 // the loop function runs over and over again forever&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot; style=&amp;quot;border:3px dashed green&amp;quot;&amp;gt;void loop() {&lt;br /&gt;
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
  delay(1000);                       // wait for a second&lt;br /&gt;
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
  delay(1000);                       // wait for a second&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
===Dokumentationsdel===&lt;br /&gt;
Den første del &amp;lt;source inline style=&amp;quot;border:3px dashed red&amp;quot;&amp;gt;markeret med rødt ovenfor&amp;lt;/source&amp;gt; er en beskrivende tekst om selve programkoden. Den starter med &amp;lt;code&amp;gt;/*&amp;lt;/code&amp;gt; og afsluttes med &amp;lt;code&amp;gt;*/&amp;lt;/code&amp;gt;.  Alt det der står mellem disse to “koder”, bliver ikke tolket som programkode, og man kan dermed skrive lige hvad man ønsker.&lt;br /&gt;
&lt;br /&gt;
Det er altid en god idé at gøre sig den ulejlighed at skrive sådan en dokumenterende tekst i toppen af sit program, da man så har et godt overblik over hvad det egentlig er, programmet udfører. Især, hvis andre skal se ens kode.&lt;br /&gt;
&lt;br /&gt;
===Setup() del===&lt;br /&gt;
Den næste del &amp;lt;source inline style=&amp;quot;border:3px dashed blue&amp;quot;&amp;gt;markeret med blåt ovenfor&amp;lt;/source&amp;gt; er &amp;lt;code&amp;gt;setup()&amp;lt;/code&amp;gt; delen. Det er den del, der kun bliver afviklet én gang - lige når man starter (eller genstarter) sit Arduinoboard. Der er kun én linje med programkode:&lt;br /&gt;
&lt;br /&gt;
 pinMode(LED_BUILTIN, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
Denne linje fortæller, at man ønsker at bruge portbenet &amp;lt;code&amp;gt;LED_BUILTIN&amp;lt;/code&amp;gt; som et Output. Det er umiddelbart lidt svært at se, hvilket portben der er tale om, men det er portben 13. Det vil sige, at man i stedet for kunne have skrevet:&lt;br /&gt;
&lt;br /&gt;
 pinMode(13, OUTPUT);&lt;br /&gt;
&lt;br /&gt;
Man skal for hvert portben man ønsker at anvende, skrive en linje kode hvor man med funktionen &amp;lt;code&amp;gt;pinMode()&amp;lt;/code&amp;gt; definerer om portbenet skal være &amp;lt;code&amp;gt;OUTPUT&amp;lt;/code&amp;gt; eller &amp;lt;code&amp;gt;INPUT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Loop() del===&lt;br /&gt;
Den tredje del &amp;lt;source inline style=&amp;quot;border:3px dashed green&amp;quot;&amp;gt;markeret med grønt ovenfor&amp;lt;/source&amp;gt; er &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; delen. Denne del gentages igen og igen, så længe der er strøm til Arduinoboardet. Der er fire linjer programkode, og kigger man på dem, ses det, at linje 1 og 3 ligner hinanden meget, mens linje 2 og 4 er identiske.&lt;br /&gt;
&lt;br /&gt;
Hvis vi starter med linje 1 af &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; delen, så står der:&lt;br /&gt;
&lt;br /&gt;
 digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
&lt;br /&gt;
Funktionen &amp;lt;code&amp;gt;digitalWrite()&amp;lt;/code&amp;gt; bruges til at få et givent portben til at tænde eller slukke. Her tændes der så for lysdioden der er koblet til portben 13. Husk på, at &amp;lt;code&amp;gt;LED_BUILTIN&amp;lt;/code&amp;gt; betyder portben 13.&lt;br /&gt;
&lt;br /&gt;
Efter portben 13 er blevet tændt, skal der holdes en pause, inden portbenet igen slukkes. Til det formål bruges funktionen &amp;lt;code&amp;gt;delay()&amp;lt;/code&amp;gt;, der får Arduino’en til at holde pause i det antal millisekunder, som man har specificeret. Det vil sige, at programkoden:&lt;br /&gt;
&lt;br /&gt;
 delay(1000);&lt;br /&gt;
&lt;br /&gt;
får Arduino’en til at holde 1000 millisekunders pause (dvs. pause i 1 sekund). &lt;br /&gt;
&lt;br /&gt;
Derefter slukkes for portben 13 i linje 3 af &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; delen:&lt;br /&gt;
&lt;br /&gt;
 digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
&lt;br /&gt;
Eneste forskel i forhold til linje 1, hvor portben 13 blev tændt, er at der her står &amp;lt;code&amp;gt;LOW&amp;lt;/code&amp;gt; i stedet for &amp;lt;code&amp;gt;HIGH&amp;lt;/code&amp;gt;. Så &amp;lt;code&amp;gt;LOW&amp;lt;/code&amp;gt; slukker og &amp;lt;code&amp;gt;HIGH&amp;lt;/code&amp;gt; tænder.&lt;br /&gt;
&lt;br /&gt;
Fjerde linje er magen til anden linje, og er igen et delay, der får Arduino’en til at holde 1000 milllisekunders pause.&lt;br /&gt;
&lt;br /&gt;
Når fjerde programkodelinje i &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; er blevet udført, startes forfra ved første programkodelinje i &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt;, og dermed har vi forløbet:&lt;br /&gt;
&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &amp;lt;br /&amp;gt;&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &amp;lt;br /&amp;gt;&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &amp;lt;br /&amp;gt;&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &amp;lt;br /&amp;gt;&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &amp;lt;br /&amp;gt;&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &amp;lt;br /&amp;gt;&lt;br /&gt;
Tænd lysdiode → Hold 1 sekund pause → Sluk lysdiode → Hold 1 sekund pause → &lt;br /&gt;
&lt;br /&gt;
… og så videre, lige indtil man tager strømmen fra Arduinoboardet.&lt;br /&gt;
&lt;br /&gt;
==Programafviklingshastighed==&lt;br /&gt;
Når man nu laver et program der kan blinke med en lysdiode, så kan man måske få tanken, at lysdioden kommer til at blinke uden man bruger &amp;lt;code&amp;gt;delay()&amp;lt;/code&amp;gt; funktionen. Hvis man nu forkortede &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; delen fra Blink programmet til at se sådan ud:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;    &lt;br /&gt;
void loop() {&lt;br /&gt;
   digitalWrite(LED_BUILTIN, HIGH);&lt;br /&gt;
   digitalWrite(LED_BUILTIN, LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
… så vil det se ud til, at lysdioden lyser hele tiden. Det skyldes, at tiden det tager at udføre en linje kode, er meget meget kort. Helt præcist afhænger den af hvilken funktion eller kommando man skal have udført, men et &amp;lt;code&amp;gt;digitalWrite()&amp;lt;/code&amp;gt; funktionskald tager omkring 4 µsek. at udføre &amp;lt;ref&amp;gt;[http://htx-elev.ucholstebro.dk/wiki/index.php?title=Arduino_Output_Tidsforhold Arduino Output Tidsforhold] 2017&amp;lt;/ref&amp;gt;. Det går derfor så hurtigt at tænde og slukke for lysdioden, at det menneskelige øje slet ikke når at detektere det. I stedet for vil man se lysstyrken let dæmpet, da lysdioden halvdelen af tiden er slukket. Mere om dette i af afsnittet Pulse Width Modulation (PWM) output i dokumentet [[Tips til anvendelse af ben på Arduino UNO]].&lt;br /&gt;
&lt;br /&gt;
==Opdeling af programmet==&lt;br /&gt;
Når man skriver et lidt mere kompliceret program end det gennemgåede, så vil man stadig have de to grundlæggende dele &amp;lt;code&amp;gt;setup()&amp;lt;/code&amp;gt;, der som beskrevet bliver kaldt én gang efter reset og &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt;, der kaldes igen og igen indtil Arduinoen slukkes.&lt;br /&gt;
&lt;br /&gt;
For at holde styr på de forskellige dele af koden kan det være en god ide at dele koden op i funktioner, som beskrevet i [[Dokumentation med Kode og Flowchart]], hvor opdelingen laves ud fra de forskellige ting som programmet skal løse.&lt;br /&gt;
&lt;br /&gt;
Dette skal man ikke forstå som at programmet laver forskellige ting på samme tid - det kan et arduino-program IKKE. Man kan godt programmere det sådan at det ser ud som om tingene sker samtidigt. Det er nærmere beskrevet i [[Tid og Samtidighed i Software]], men som det også er dokumenteret der, så er det ud fra at Arduinoen kan lave ting rigtigt hurtigt, og at alle ting tjekkes meget hurtigt efter hinanden, at det ser ud som om tingene sker samtidigt.&lt;br /&gt;
&lt;br /&gt;
===Sekventiel afvikling af programkode===&lt;br /&gt;
Det at programkode afvikles en linje ad gangen, og at en programlinje afsluttes før den næste afvikles betegnes som sekventiel&amp;lt;ref&amp;gt;[http://htx-elev.ucholstebro.dk/wiki/index.php?title=Sekvens Sekventiel Kodeafvikling] 2015&amp;lt;/ref&amp;gt; program-afvikling.&lt;br /&gt;
&lt;br /&gt;
At noget er sekventielt siger netop at det afvikles i en sekvens, altså et trin ad gangen. Vender vi tilbage til Blink-eksemplet, så er det jo netop at det første der sker efter reset er, at &amp;lt;code&amp;gt;setup()&amp;lt;/code&amp;gt; kaldes hvor et ben sættes til output. Herefter kaldes &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; igen og igen, hvor &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; består af sekvensen tænd lysdiode - 1 sekunds pause - sluk lysdiode - 1 sekund pause. Der kan altså ikke ske andet i det program, så længe det er kodeindholdet.&lt;br /&gt;
&lt;br /&gt;
Hvis vi tænker os at vi sætter følgende funktion ind før &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt;, så vil dette ikke have nogen effekt på programmets opførsel.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
// Funktion der tænder en lysdiode ud fra en indgang&lt;br /&gt;
void kontaktSense() {&lt;br /&gt;
  if (digitalRead(kontaktInput) == HIGH) {&lt;br /&gt;
    digitalWrite(LED_2, HIGH);&lt;br /&gt;
  } else {&lt;br /&gt;
    digitalWrite(LED_2, LOW);    &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Forklaringen på at det ikke har nogen effekt på programmets opførsel er, at funktionen &amp;lt;code&amp;gt;kontaktSense()&amp;lt;/code&amp;gt; aldrig bliver aktiveret, så koden kommer altså ikke ind i program-sekvensen.&lt;br /&gt;
&lt;br /&gt;
Hvis vi så sætter et kald til &amp;lt;code&amp;gt;kontaktSense()&amp;lt;/code&amp;gt; ind i &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt; et sted, fx. før &amp;lt;code&amp;gt;digitalWrite(LED_BUILTIN, HIGH);&amp;lt;/code&amp;gt;, så får vi en oplevelse af af programmet måske nok virker, men ikke lige som vi gerne ville have det til, nemlig at LED_2 tænder når der trykkes på kontakten forbundet til kontaktInput-benet.&lt;br /&gt;
Forklaringen på dette er at afviklingen af funktionen &amp;lt;code&amp;gt;kontaktSense()&amp;lt;/code&amp;gt; sker meget hurtigt set i forhold til de to gange 1 sekunds pause der ellers afvikles i &amp;lt;code&amp;gt;loop()&amp;lt;/code&amp;gt;. Det vi vil se er at vi skal holde kontakten nede indtil funktionen bliver kaldt, og der kan i værste tilfælde gå 2 sekunder. Når så først LED_2 er tændt, så vil den være tændt i ca. 2 sekunder inden den slukkes igen, selvom vi slipper kontakten hurtigt.&lt;br /&gt;
&lt;br /&gt;
Hvordan dette løses er beskrevet i [[Tid og Samtidighed i Software]], det kræver mere forståelse.&lt;br /&gt;
&lt;br /&gt;
===Interrupt[[fil:svaert.png|80px]]=== &lt;br /&gt;
Nogle gange har man brug for at en del af programkoden skal kunne reagere rigtigt hurtigt, hvilket man kan gøre ved hjælp af interrupt &amp;lt;ref&amp;gt;[http://htx-elev.ucholstebro.dk/wiki/index.php?title=Interrupt Interrupt - På PIC-Processorer] 2013&amp;lt;/ref&amp;gt; der er det engelske ord for at afbryde, altså noget der kan afbryde den sekvens der kører.&lt;br /&gt;
&lt;br /&gt;
I Arduinoen er det specielt elektriske signaler der kan programmeres til at give interrupt &amp;lt;ref&amp;gt;[https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/ Arduino Reference - Interrupt] 2017&amp;lt;/ref&amp;gt; ved at man skriver en speciel interrupt-rutine, der ikke kaldes direkte fra koden, men som hægtes på et interrupt med &amp;lt;code&amp;gt;attachInterrupt()&amp;lt;/code&amp;gt;, som så sørger for at kalde funktionen umiddelbart som det angivne ben går højt eller hvad man nu har angivet.&lt;br /&gt;
&lt;br /&gt;
Denne form for programmering hører til det mere avancerede, men er med til at forklare hvordan sekvens fungerer og hvordan det kan omgås.&lt;br /&gt;
&lt;br /&gt;
Til forklaringen omkring interrupt hører også, at tidsfunktionen &amp;lt;code&amp;gt;millis()&amp;lt;/code&amp;gt; bliver vedligeholdt ved hjælp af interrupt, samt opsamlingen af karakterer fra den serielle port sker ved hjælp af interrupt.&lt;br /&gt;
&lt;br /&gt;
Der er mere information omkring anvendelse af interrupt i dokumentet [[Tid og Samtidighed i Software]].&lt;br /&gt;
==Multitasking[[fil:svaert.png|80px]]==&lt;br /&gt;
For at få det til at se ud som om en computer afvikler flere programmer samtidigt, så laver man et styresystem, der kan håndtere flere programmer på en gang og fordele tiden mellem dem &amp;lt;ref&amp;gt;[https://en.wikipedia.org/wiki/Computer_multitasking Computer Multitasking - Wikipedia] 2018&amp;lt;/ref&amp;gt;. Dette kan etableres på mange forskellige måder, men det kræver både meget processorkraft og en del hukommelse.&lt;br /&gt;
&lt;br /&gt;
Arduinoen kan ikke håndtere egentlig multitasking, men man kan få den til at gøre noget der minder om det &amp;lt;ref&amp;gt;[https://learn.adafruit.com/multi-tasking-the-arduino-part-1/overview Multi-Tasking the Arduino - Part 1] 2015&amp;lt;/ref&amp;gt; som det er beskrevet i kilden og de 6 efterfølgende sider.&lt;br /&gt;
&lt;br /&gt;
==Opgaver==&lt;br /&gt;
Udvid programmet Blink, så det kan blinke med 4 lysdioder, i stedet for kun 1 lysdiode. Brug portbenene: 10, 11, 12 og 13 til formålet, og lav følgende versioner af blinkemønstre:&lt;br /&gt;
* Alle 4 lysdioder blinker sammen (alle 4 tændt → Hold 1 sekund pause → alle 4 slukket → Hold 1 sekund pause).&lt;br /&gt;
* Blinker parvis.&lt;br /&gt;
* Løbelys, hvor kun én lysdiode er tændt ad gangen. F.eks. som lysstriben på &amp;#039;&amp;#039;KITT&amp;#039;&amp;#039; fra &amp;#039;&amp;#039;Knight Rider&amp;#039;&amp;#039; TV serierne fra 80’erne.&lt;br /&gt;
&lt;br /&gt;
==Referencer==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Oprindelige Dokumenter]]&lt;br /&gt;
[[Kategori:Programmering af Arduino]]&lt;/div&gt;</summary>
		<author><name>ard_&gt;Bar</name></author>
	</entry>
</feed>