<?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=Trykknap</id>
	<title>Trykknap - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Trykknap"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Trykknap&amp;action=history"/>
	<updated>2026-10-09T15:57:54Z</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=Trykknap&amp;diff=5027&amp;oldid=prev</id>
		<title>Bar: /* Referencer */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Trykknap&amp;diff=5027&amp;oldid=prev"/>
		<updated>2022-11-22T20:21:03Z</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 22. nov. 2022, 22:21&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-l221&quot;&gt;Linje 221:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 221:&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;{{Programmering}}&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;&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;{{keyes-moduler}}&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;{{keyes-moduler}}&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:Program-klassikere]]&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:Program-klassikere]]&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=Trykknap&amp;diff=1815&amp;oldid=prev</id>
		<title>Bar med 21. okt. 2022, 18:12</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Trykknap&amp;diff=1815&amp;oldid=prev"/>
		<updated>2022-10-21T18:12:10Z</updated>

		<summary type="html">&lt;p&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 21. okt. 2022, 20:12&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-l5&quot;&gt;Linje 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 5:&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;Det kan lade sig gøre at slutte kontakten til uden andre komponenter, men der skal man sætte kontakten til stel, så man læser den som aktivt lav, og samtidigt skal man så aktivere den interne pull-up som følger:&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;Det kan lade sig gøre at slutte kontakten til uden andre komponenter, men der skal man sætte kontakten til stel, så man læser den som aktivt lav, og samtidigt skal man så aktivere den interne pull-up som følger:&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;source lang=&amp;quot;C&amp;quot;&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;source lang=&amp;quot;C&amp;quot;&amp;gt;&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;byte kontaktPin = 8;&lt;/div&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;byte kontaktPin = 8;  &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;void setup() {&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;void setup() {&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;   pinMode(kontaktPin, INPUT_PULLUP);&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;   pinMode(kontaktPin, INPUT_PULLUP);&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=Trykknap&amp;diff=1704&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Trykknap&amp;diff=1704&amp;oldid=prev"/>
		<updated>2022-10-21T12:36:36Z</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 21. okt. 2022, 14:36&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=Trykknap&amp;diff=1703&amp;oldid=prev</id>
		<title>htx_&gt;Bar: /* Niveau */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Trykknap&amp;diff=1703&amp;oldid=prev"/>
		<updated>2021-06-30T13:20:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Niveau&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Det er sjældent svært at håndtere en trykknap, hvis det man ønsker er, at når den er trykket nede, så skal der ske et eller andet. &lt;br /&gt;
==Elektrisk tilslutning==&lt;br /&gt;
Man skal være opmærksom på at man ikke bare kan slutte den ene side af kontakten til høj, og den anden til et input - det vil få indgangen til at svæve når der ikke er trykket på knappen. Man kan læse mere om dette under [[pull-down]].&lt;br /&gt;
&lt;br /&gt;
Det kan lade sig gøre at slutte kontakten til uden andre komponenter, men der skal man sætte kontakten til stel, så man læser den som aktivt lav, og samtidigt skal man så aktivere den interne pull-up som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
byte kontaktPin = 8;&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(kontaktPin, INPUT_PULLUP);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Niveau==&lt;br /&gt;
Hvis det f.x. er at en udgang skal være høj når knappen er trykket ned, og lav når den ikke er det, så er det en simpel konstruktion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 if trykknap then&lt;br /&gt;
    udgang = high&lt;br /&gt;
 else&lt;br /&gt;
    udgang = low&lt;br /&gt;
 end if&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arduino C-kode===&lt;br /&gt;
I arduino vil koden kunne løses på følgende måde&amp;lt;ref&amp;gt;http://arduino.cc/en/Reference/DigitalWrite DigitalWrite&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
digitalWrite(ledPin, digitalRead(buttonPin));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dette er en meget komprimeret måde at gøre det på, og det kunne også gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
if (digitalRead(buttonPin)) {&lt;br /&gt;
   digitalWrite(ledPin, HIGH);&lt;br /&gt;
} else {&lt;br /&gt;
   digitalWrite(ledPin, LOW);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Forkant==&lt;br /&gt;
Det er bare sjældent at det er så simpelt. Hvis man har etableret sit eget [[styresystem]], så man har gang i flere ting på en gang, så vil man typisk komme rundt i loopet mange gange i sekundet.&lt;br /&gt;
&lt;br /&gt;
[[Image:knap_tryk.png|right|thumb|Pulsdiagram for en trykknap]]&lt;br /&gt;
Hvis man f.x. ville tælle en frem hver gang der bliver trykket på en knap, så stiller det sig noget anderledes.&lt;br /&gt;
&lt;br /&gt;
Elektrisk kan trykknappen kobles op med en kontakt og en [[Pull-down]] modstand.&lt;br /&gt;
&lt;br /&gt;
Man kan godt prøve at indstille på den tid som man looper med, og i de fleste tilfælde kan man godt få det indstillet så man selv kan taste fornuftigt ind, men der vil altid ske det at man nogle gange fanger 2 gange på den samme indtastning og andre gange fanger man slet ikke indtastningen.&lt;br /&gt;
&lt;br /&gt;
Løsningen er at i softwaren fanger en forkant, ved at man husker på hvad status var af knappen sidst man kom rundt i loopet, og så forholde sig til det. Det kan løses som følger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 if trykknap then&lt;br /&gt;
    if ! last_knap then&lt;br /&gt;
       taeller = taeller + 1&lt;br /&gt;
    end if&lt;br /&gt;
    last_knap = true&lt;br /&gt;
 else&lt;br /&gt;
    last_knap = false&lt;br /&gt;
 end if&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Denne måde at løse tingene på vil virke fint, specielt hvis man har et delay i loopet på ca. 10 ms.&lt;br /&gt;
&lt;br /&gt;
Til [[Arduino]] ser koden ud som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 if (digitalRead(trykknap)) {  // Læs status på trykknappen&lt;br /&gt;
   if (! lastButton) {         // Hvis der ikke var trykket på knappen sidst&lt;br /&gt;
     cnt++;&lt;br /&gt;
     Serial.println(cnt);&lt;br /&gt;
   }&lt;br /&gt;
   lastButton = true;  // Husk status af knappen i en boolean variabel&lt;br /&gt;
 } else {&lt;br /&gt;
   lastButton = false;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bagkant==&lt;br /&gt;
Man kan også løse det ved at det er på bagkanten af signalet man tæller op. Det løses som følgende:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 if ! trykknap then&lt;br /&gt;
    if last_knap then&lt;br /&gt;
       taeller = taeller + 1&lt;br /&gt;
    end if&lt;br /&gt;
    last_knap = false&lt;br /&gt;
 else&lt;br /&gt;
    last_knap = true&lt;br /&gt;
 end if&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dette kunne også være fordi trykknappen er realiseret ved hjælp af en [[Pull-up]] modstand i stedet for en [[Pull-down]].&lt;br /&gt;
&lt;br /&gt;
Til [[Arduino]] ser koden ud som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 if (! digitalRead(trykknap)) {  // Læs status på trykknappen&lt;br /&gt;
   if (lastButton) {         // Hvis der var trykket på knappen sidst&lt;br /&gt;
     cnt++;&lt;br /&gt;
     Serial.println(cnt);&lt;br /&gt;
   }&lt;br /&gt;
   lastButton = false;  // Husk status af knappen i en boolean variabel&lt;br /&gt;
 } else {&lt;br /&gt;
   lastButton = true;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Prel==&lt;br /&gt;
Hvis man kigger på hvordan en kontakt opfører sig i det tidspunkt hvor den slutter forbindelse, og tilsvarende når den afbrydes, så kan der opstå det der hedder prel, som er at kontakten sluttes og afbrydes igen mange gang inden den endelig er helt sluttet. Det kan specielt opstå når kontakter bliver slidte.&lt;br /&gt;
[[Image:knap_prel.png|right|thumb|Trykknap med prel]]&lt;br /&gt;
&lt;br /&gt;
Specielt hvis man looper hurtigt rundt i loopet (1 ms eller derunder), så vil man kunne opleve at et tryk måske kan resultere i 2-3 tællinger, hvilket jo ikke er heldigt.&lt;br /&gt;
&lt;br /&gt;
Hvis man kan tillade at der kommer lidt ekstra delay ind i programmet, lige når man trykker, så kan det løses som følger:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 if trykknap then&lt;br /&gt;
    if ! last_knap then&lt;br /&gt;
       delay_1ms(10)&lt;br /&gt;
       if trykknap then&lt;br /&gt;
          taeller = taeller + 1&lt;br /&gt;
       end if&lt;br /&gt;
    end if&lt;br /&gt;
    last_knap = true&lt;br /&gt;
 else&lt;br /&gt;
    last_knap = false&lt;br /&gt;
 end if&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Til [[Arduino]] ser koden ud som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 if (digitalRead(trykknap)) {  // Læs status på trykknappen&lt;br /&gt;
   if (! lastButton) {         // Hvis der ikke var trykket på knappen sidst&lt;br /&gt;
     delay(10);&lt;br /&gt;
     cnt++;&lt;br /&gt;
     Serial.println(cnt);&lt;br /&gt;
   }&lt;br /&gt;
   lastButton = true;  // Husk status af knappen i en boolean variabel&lt;br /&gt;
 } else {&lt;br /&gt;
   lastButton = false;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Koden her kan dog have en tendens til også at tælle på bagkanten.&lt;br /&gt;
&lt;br /&gt;
Hvis programmet er meget afhængigt af at man kommer hurtigt rundt, så kan man lave en lidt anderledes konstruktion:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 if trykknap then&lt;br /&gt;
    if tryk_count &amp;lt; 25 then&lt;br /&gt;
       tryk_count = tryk_count + 1&lt;br /&gt;
    else&lt;br /&gt;
       taeller = taeller + 1&lt;br /&gt;
    end if&lt;br /&gt;
 else&lt;br /&gt;
    tryk_count = 0&lt;br /&gt;
 end if&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Med denne konstruktion vil man holde tryk_count på 0 så længe der ikke er trykket på knappen, og så længe man ikke kommer forbi mere end 25 gange i en af de små perioder inden signalet er stabilt, så vil der ikke blive talt op i taeller, man må så heller ikke have mere end 25 gange i de små perioder ved bagkanten.&lt;br /&gt;
&lt;br /&gt;
Til [[Arduino]] ser koden ud som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
 if (digitalRead(trykknap)) {  // Læs status på trykknappen&lt;br /&gt;
   if (! lastButton) {         // Hvis der ikke var trykket på knappen sidst&lt;br /&gt;
     edge = millis();          // Registrer tidspunktet for kanten&lt;br /&gt;
   } else {&lt;br /&gt;
     if ((millis() - edge) &amp;gt; debounceTime) { // Hvis knappen har været trykket længe nok&lt;br /&gt;
       if (! counted) {        // og der ikke har været talt op før&lt;br /&gt;
         cnt++;&lt;br /&gt;
         Serial.println(cnt);&lt;br /&gt;
         counted = true;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   lastButton = true;  // Husk status af knappen i en boolean variabel&lt;br /&gt;
 } else {&lt;br /&gt;
   lastButton = false;&lt;br /&gt;
   counted = false;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arduino C-kode===&lt;br /&gt;
I arduino vil koden kunne løses på følgende måde&amp;lt;ref&amp;gt;http://arduino.cc/en/Tutorial/Debounce Debounce&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void loop() {&lt;br /&gt;
  // read the state of the switch into a local variable:&lt;br /&gt;
  int reading = digitalRead(buttonPin);&lt;br /&gt;
&lt;br /&gt;
  // check to see if you just pressed the button &lt;br /&gt;
  // (i.e. the input went from LOW to HIGH),  and you&amp;#039;ve waited &lt;br /&gt;
  // long enough since the last press to ignore any noise:  &lt;br /&gt;
&lt;br /&gt;
  // If the switch changed, due to noise or pressing:&lt;br /&gt;
  if (reading != lastButtonState) {&lt;br /&gt;
    // reset the debouncing timer&lt;br /&gt;
    lastDebounceTime = millis();&lt;br /&gt;
  } &lt;br /&gt;
  &lt;br /&gt;
  if ((millis() - lastDebounceTime) &amp;gt; debounceDelay) {&lt;br /&gt;
    // whatever the reading is at, it&amp;#039;s been there for longer&lt;br /&gt;
    // than the debounce delay, so take it as the actual current state:&lt;br /&gt;
&lt;br /&gt;
    // if the button state has changed:&lt;br /&gt;
    if (reading != buttonState) {&lt;br /&gt;
      buttonState = reading;&lt;br /&gt;
&lt;br /&gt;
      // only toggle the LED if the new button state is HIGH&lt;br /&gt;
      if (buttonState == HIGH) {&lt;br /&gt;
        ledState = !ledState;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  // set the LED:&lt;br /&gt;
  digitalWrite(ledPin, ledState);&lt;br /&gt;
&lt;br /&gt;
  // save the reading.  Next time through the loop,&lt;br /&gt;
  // it&amp;#039;ll be the lastButtonState:&lt;br /&gt;
  lastButtonState = reading;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Referencer==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{keyes-moduler}}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Program-klassikere]]&lt;/div&gt;</summary>
		<author><name>htx_&gt;Bar</name></author>
	</entry>
</feed>