<?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=Arduino_Analog_Keyboard</id>
	<title>Arduino Analog Keyboard - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Arduino_Analog_Keyboard"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Arduino_Analog_Keyboard&amp;action=history"/>
	<updated>2026-08-25T17:47:00Z</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=Arduino_Analog_Keyboard&amp;diff=3523&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Arduino_Analog_Keyboard&amp;diff=3523&amp;oldid=prev"/>
		<updated>2022-10-25T19:07:51Z</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 25. okt. 2022, 21:07&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=Arduino_Analog_Keyboard&amp;diff=3522&amp;oldid=prev</id>
		<title>htx_&gt;Bar: /* Layout */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Arduino_Analog_Keyboard&amp;diff=3522&amp;oldid=prev"/>
		<updated>2017-10-06T07:56:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Layout&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[fil:analog-keyboard-detail.png|thumb|right|Det analoge keyboard på Prog-shieldet]]&lt;br /&gt;
&lt;br /&gt;
Det analoge keyboard er monteret som standard på programmerings-shieldet, og er et 12 tasters nummerisk tastatur, men kan konfigureres som man ønsker.&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Da analoge keyboards ikke er standard, så er der skrevet et bibliotek til det analoge keyboard, der kan hentes i denne [[media:analog_keypad.zip|ZIP-fil]]. Biblioteket downloades og installeres som beskrevet under [[Arduinos_Biblioteker#Tilføjelse_af_biblioteker|Arduinos biblioteker]].&lt;br /&gt;
&lt;br /&gt;
===Anvendelsen af softwaren===&lt;br /&gt;
Det der gennemgås her ligger i biblioteket under &amp;#039;&amp;#039;&amp;#039;Basic Test&amp;#039;&amp;#039;&amp;#039; eksemplet.&lt;br /&gt;
&lt;br /&gt;
Det analoge keyboard sidder på programmerings-shieldet placeret på den analoge indgang &amp;#039;&amp;#039;&amp;#039;A2&amp;#039;&amp;#039;&amp;#039;, som det er angivet her.&lt;br /&gt;
&lt;br /&gt;
Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere hvordan dette keyboard ser ud. Til sidst oprettes en instans af klassen Analog_Keypad (et keyboard-objekt):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;Analog_Keypad.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const byte NUM_KEYS = 12;&lt;br /&gt;
const byte KEYB_PIN = A2;&lt;br /&gt;
char hexaKeys[NUM_KEYS] = &lt;br /&gt;
  {&amp;#039;0&amp;#039;,&amp;#039;1&amp;#039;,&amp;#039;2&amp;#039;,&amp;#039;3&amp;#039;,&amp;#039;4&amp;#039;,&amp;#039;5&amp;#039;,&amp;#039;6&amp;#039;,&amp;#039;7&amp;#039;,&amp;#039;8&amp;#039;,&amp;#039;9&amp;#039;,&amp;#039;A&amp;#039;,&amp;#039;B&amp;#039;};&lt;br /&gt;
&lt;br /&gt;
//initialize an instance of class Analog_Keypad&lt;br /&gt;
Analog_Keypad myKeypad = Analog_Keypad(hexaKeys, KEYB_PIN, NUM_KEYS); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Inde i [[setup()]] skal der sættes gang i objektet ved hjælp af begin-metoden som vist her:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void setup() {&lt;br /&gt;
  myKeypad.begin();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Der kan sættes yderligere ting op, men for at komme i gang er dette nok.&lt;br /&gt;
&lt;br /&gt;
Herefter kan metoden getKey() anvendes som vist her. Hvis der ikke er trykket på en gyldig tast, så returneres der NO_KEY.&lt;br /&gt;
&lt;br /&gt;
En vigtig ting at nævne er at metoden kun returnerer tasten EN gang i et tastetryk, men at der skal 5 kald til metode til før den gør det. Det betyder at metoden skal kaldes så ofte som muligt (polling). Eksemplet her viser en simpel anvendelse af metoden:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
void loop() {&lt;br /&gt;
  char key = myKeypad.getKey(); // Poll for a key value&lt;br /&gt;
  if (key != NO_KEY) {  // Are a valid key pressed?&lt;br /&gt;
    Serial.println(key);  // Do something with the aquired key&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Yderligere muligheder i softwaren===&lt;br /&gt;
Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende tastaturet på:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
	  // Two different constructors for the class&lt;br /&gt;
	Analog_Keypad(char *userKeyMap, byte analogPin, byte numKeys);&lt;br /&gt;
	Analog_Keypad(char *userKeyMap, byte analogPin, byte numKeys, byte numAccept);&lt;br /&gt;
&lt;br /&gt;
	// Basic interface&lt;br /&gt;
	char getKey();&lt;br /&gt;
	void begin();&lt;br /&gt;
&lt;br /&gt;
	// Extended interface&lt;br /&gt;
	bool isPressed(char keyChar);&lt;br /&gt;
	void setDebounceTime(uint debounce);&lt;br /&gt;
	void setHoldTime(uint hold);&lt;br /&gt;
	void setHoldMode(bool mode);&lt;br /&gt;
	void setNumAccept(byte count);&lt;br /&gt;
	char waitForKey();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Princippet i det analoge keyboard er beskrevet på [[AD-tast]], der er skrevet til software med [[PIC]] mikrocontroller, men den hardwaremæssige opbygning er præcis den samme.&lt;br /&gt;
&lt;br /&gt;
===Princip-diagram for det Analoge keyboard===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
Som det kan se her, så er tastaturet baseret på en række ens modstande der sidder i serie, således at forsyningsspændingen opdeles i en række lige store dele. Antallet af ens modstande er det samme som antallet af taster.&lt;br /&gt;
&lt;br /&gt;
Hvis der ikke er trykket på nogen tast, så vil R1 sørge for at der kommer 0V ind til PIC-benet, så AD&amp;#039;en kan se at der ikke er trykket på noget. Denne modstand skal være så stor, at den ikke belaster spændingsdelingen, så den bliver skæv (det er værst midt i modstandsrækken). Den skal heller ikke være så stor at der kommer problemer med læk-strømmen ud af indgangsbenet på PIC&amp;#039;en.&lt;br /&gt;
&lt;br /&gt;
Hvis der trykkes på en tast, så kommer der en spænding ind der enten er en del af forsyningsspændingen eller selve forsyningsspændingen. Ud fra at der i definitions-filen til softwaremodulet er angivet hvor mange taster der er på tastaturet, og da modstandene i spændingsdeleren er ens, så ved softwaren hvilken spænding den skal forvente.&lt;br /&gt;
&lt;br /&gt;
Med 3 taster, så vil softwaren registrere følgende niveauer:&lt;br /&gt;
* fra 0V til 1/6 af forsyningen betyder at der ikke er nogen tast trykket.&lt;br /&gt;
* fra 1/6 til 3/6 af forsyningen betyder det at 0-tasten er trykket ned.&lt;br /&gt;
* fra 3/6 til 5/6 af forsyningen betyder det at 1-tasten er trykket ned.&lt;br /&gt;
* fra 5/6 og op til forsyningen betyder det at 2-tasten er trykket ned.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|Den spænding som en tast giver ud er givet ved den viste formel. Hvor V&amp;lt;sub&amp;gt;tast&amp;lt;/sub&amp;gt; er spændingen når der er trykket på tasten og N er det tal tasten giver i softwaren.&lt;br /&gt;
|[[image:tast-formel.png]]&lt;br /&gt;
|-&lt;br /&gt;
|De spændinger som softwaren skelner imellem, for at se hvilken tast der er trykket på er givet ved den viste formel. Hvor V&amp;lt;sub&amp;gt;tast-min&amp;lt;/sub&amp;gt; er det laveste niveau for spændingen når der er trykket på tasten og V&amp;lt;sub&amp;gt;tast-max&amp;lt;/sub&amp;gt; er det højeste niveau for spændingen når der er trykket på tasten. N er det tal tasten giver i softwaren.&lt;br /&gt;
|[[image:tast-l-formel.png]] [[image:tast-h-formel.png]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
[[Image:AD_tast_prnc.PNG|250px|Principskitse af AD-tastaturet]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beregningerne og anvendelsen af et 12 eller 16 tasters keyboard er selvfølgelig samme princip, blot at spændingerne bliver anderledes.&lt;br /&gt;
&lt;br /&gt;
==Layout==&lt;br /&gt;
Keyboardets placering på programmerings-shieldet kan ses her:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[fil:layout-analog-keyboard.png|600px]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Angivelse af de 12 tasters placering og betydning i test-koden&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{{template:prog-shield}}&lt;br /&gt;
&lt;br /&gt;
{{Arduino-Modul-Oversigt}}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Arduino Moduler]]&lt;br /&gt;
[[Kategori:Programmerings-Shield]]&lt;/div&gt;</summary>
		<author><name>htx_&gt;Bar</name></author>
	</entry>
</feed>