<?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_Input_H%C3%B8j-Lav</id>
	<title>Arduino Input Høj-Lav - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=Arduino_Input_H%C3%B8j-Lav"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Arduino_Input_H%C3%B8j-Lav&amp;action=history"/>
	<updated>2026-10-14T12:43:10Z</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_Input_H%C3%B8j-Lav&amp;diff=3929&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_Input_H%C3%B8j-Lav&amp;diff=3929&amp;oldid=prev"/>
		<updated>2022-10-26T12:50:07Z</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 26. okt. 2022, 14:50&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_Input_H%C3%B8j-Lav&amp;diff=3928&amp;oldid=prev</id>
		<title>htx_&gt;Bar: /* Koden til måling af hysteresen */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=Arduino_Input_H%C3%B8j-Lav&amp;diff=3928&amp;oldid=prev"/>
		<updated>2022-03-16T08:59:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Koden til måling af hysteresen&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
En Arduino har grænser for, hvor den skifter mellem et logisk højt og lavt input. Hvilket kan bruges under programmering af en Arduino til at konvertere strøm til en digital værdi. Der skal være en bestemt spænding til stede før en Arduino anser inputtet, den modtager som 1 eller 0.&lt;br /&gt;
&lt;br /&gt;
Grænsen kan findes ved at lave en opstilling, hvor Arduinoen viser spændingen ved et skift fra HØJ til LAV eller omvendt, ved at printe spændingen i den serielle monitor.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Datablad==&lt;br /&gt;
[[Fil:Arduino_HIGH-LOW_skift.PNG]]&lt;br /&gt;
&lt;br /&gt;
Tabellen er taget fra databladet&amp;lt;ref&amp;gt;[http://htx-elev.ucholstebro.dk/el/komponent/atmega328p.pdf ATMega328P datablad]&amp;lt;/ref&amp;gt; og viser hvornår et input med sikkerhed er LAV eller HØJ.&lt;br /&gt;
&lt;br /&gt;
Når inputspændingen er indenfor -0.5 og 0.2 eller 0.3 gange forsyningsspændingen, afhængig af forsyningsspændingens størrelse, er den LAV.&lt;br /&gt;
&lt;br /&gt;
Når inputspændingen er indenfor 0.6 eller 0.7 gange forsyningsspændingen og forsyningsspændningen + 0.5, er den HØJ.&lt;br /&gt;
&lt;br /&gt;
Det er et meget bredt spekter at input-niveauet angiver, men typisk vil skiftet ligge omkring 0.5 gange forsyningsspændingen.&lt;br /&gt;
&lt;br /&gt;
Der er angivet at der sidder en [[schmitt-trigger]] i indgangen på alle digitale input, dog med undtagelse af oscillator-indgangen, som ikke er tilgængelig på en Arduino. Databladet fortæller dog minimalt om hvilke spændinger den skifter på, der er dog angivet lidt omkring den serielle indgang som vist her:&lt;br /&gt;
&lt;br /&gt;
[[fil:arduino-hysterese-data.png|800px|Udsnit fra databladet, der viser hysteresen på den serielle indgang]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Udsnit fra databladet, der viser hysteresen på den serielle indgang&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
I databladet ses det at hysteresen er 0.05*Vcc, og med en Arduino der arbejder på 5V bliver det til 0.25V, hvilket eftervises længere nede på siden.&lt;br /&gt;
&lt;br /&gt;
==Test kode==&lt;br /&gt;
Billedet viser et diagram over den opstilling der er brugt. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Fil:Hoej-lav-input-opstilling.PNG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Pin 8 er det digitale input. Der er også koblet et&lt;br /&gt;
voltmeter til inden den digitale indgang, for at måle inputspændingen. Der er&lt;br /&gt;
også herfra koblet en ledning ned til den første analoge indgang på Arduinoen, denne måler også hvor&lt;br /&gt;
meget strøm, der er inden indgang.&lt;br /&gt;
&lt;br /&gt;
Koden til denne opstilling:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
//definere input pins nummer &lt;br /&gt;
int inputD = 8;&lt;br /&gt;
int inputA = A0;&lt;br /&gt;
//denne variabel indeholder den sidste digitale værdi, og nuværende hvis det er ligeefter skiftet.&lt;br /&gt;
boolean lastDigitalValue = false;&lt;br /&gt;
//sætter arduinoen op, så den kan læse værdierne af pinene, og kommunikere med computeren.&lt;br /&gt;
void setup() { Serial.begin(9600);&lt;br /&gt;
  pinMode(inputD, INPUT);&lt;br /&gt;
  pinMode(inputA, INPUT);&lt;br /&gt;
}&lt;br /&gt;
void loop() { //den digitale værdi læses og gemmes til senere brug.&lt;br /&gt;
  boolean digitalValue = digitalRead(inputD) == HIGH;&lt;br /&gt;
&lt;br /&gt;
  //den analog værdi gemmes til hvis der nu er skift hvilket ville kunne være tilfældet, hvis den først blev læst,&lt;br /&gt;
  //så der er mindst chance for at den skifter inden at den sendes til computeren,&lt;br /&gt;
  //da der kan være lidt forsinkelses fordi der sker lidt før der sendes.&lt;br /&gt;
  //den er conventere desuden fra analog værdi(0-1023) til volt(den er kallibreret efter et volt meter, hvor 1023(analog værdi) = 5V).&lt;br /&gt;
  float analogValue = ((float) analogRead(inputA))/1023*5.104;&lt;br /&gt;
&lt;br /&gt;
  //tjekker om den digitale værdi er skiftet siden sidst.&lt;br /&gt;
  if(digitalValue != lastDigitalValue){&lt;br /&gt;
    //fortæller om det er op eller ned gang, altså fra LOW til HIGH eller omvendt.&lt;br /&gt;
    if(lastDigitalValue) Serial.print(&amp;quot;Change at(1-&amp;gt;0): &amp;quot;);&lt;br /&gt;
    else Serial.print(&amp;quot;Change at(0-&amp;gt;1): &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //analog værdi tilføjes til stringen.&lt;br /&gt;
    Serial.print(analogValue);&lt;br /&gt;
    Serial.print(&amp;quot;V\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //den sidste digitale værdi opdateres.&lt;br /&gt;
    lastDigitalValue = digitalValue;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Kode fra Daniel Aarup Hasselund og Ole Van Santen&amp;#039;s Arduino aflevering&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Den ovenstående kode&amp;#039;s output vil se således ud:&lt;br /&gt;
&lt;br /&gt;
[[Fil:Arduino_udskrivning_af_hoej_lav_test.png]]&lt;br /&gt;
&lt;br /&gt;
Ud fra dette kan det ses at en Arduino har input hysterese da skiftet fra højt til lavt ikke ligger samme sted som fra lavt til højt. &lt;br /&gt;
&lt;br /&gt;
==Hysterese==&lt;br /&gt;
At det har en hysterese vil sige at systemet er afhængigt af om en variable er stigende eller aftagende. I forbindelse med arduinoens input kan dette hjælpe med at forhindre at et input ligger og svinger mellem højt og lavt hvis den for eksempel kun lige er oppe og være høj.&lt;br /&gt;
&lt;br /&gt;
[[fil:Noise_Gate_Hysteresis.svg.png]]&lt;br /&gt;
&lt;br /&gt;
Her er et eksempel hvor der øverst vises en graf med input og output uden en hysterese og nederst er der en graf hvor man kan se input og output med hysterese.&lt;br /&gt;
Som man kan se kommer outputtet af det ustabile input til at svinge meget uden en hysterese hvor at det samme input med en hysterese er meget mere stabilt.&lt;br /&gt;
&lt;br /&gt;
==Supplerende målinger==&lt;br /&gt;
For at tjekke at flere forskellige Arduinoer opfører sig på samme måde er der lavet en ekstra opstilling, som måler egenskaberne for [[schmitt-trigger]]ens hysterese.&lt;br /&gt;
&lt;br /&gt;
Opstillingen er lavet med en modstand og en kondensator, hvor en udgang styrer modstanden høj eller lav, og det vil så op- eller af-lade kondensatoren. Kondensatoren har så forbindelse til en digital og en analog indgang. Koden oplader så kondensatoren indtil den digitale indgang skifter til høj, og på det tidspunkt udskrives spændingen udregnet fra den analoge måling. Når det er sket sættes udgangen lav, så kondensatoren aflades indtil den digitale indgang bliver lav, hvor den analoge måling udskrives. Dette gentages fortløbende.&lt;br /&gt;
&lt;br /&gt;
Kredsløbet ser ud som vist her:&lt;br /&gt;
&lt;br /&gt;
[[fil:arduino_hysterese_input.png|400px|Kredsløb til måling af hysteresen på et Arduino input]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Kredsløb til måling af hysteresen på et Arduino input&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===Koden til måling af hysteresen===&lt;br /&gt;
Til måling af hysteresen er der lavet følgende kode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
byte pin = 7;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
  pinMode(12, OUTPUT);&lt;br /&gt;
  digitalWrite(12, LOW);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  Serial.begin(1000000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int analog;&lt;br /&gt;
float volt;&lt;br /&gt;
boolean digital;&lt;br /&gt;
&lt;br /&gt;
void laes() {&lt;br /&gt;
  analog = analogRead(A0);&lt;br /&gt;
  digital = digitalRead(pin);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (Serial.available()) {&lt;br /&gt;
    pin = Serial.parseInt();&lt;br /&gt;
    Serial.println(pin);&lt;br /&gt;
    while (Serial.available()) {&lt;br /&gt;
      char ch = Serial.read();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  digitalWrite(12, HIGH);&lt;br /&gt;
  laes();&lt;br /&gt;
  while(! digital) {&lt;br /&gt;
    laes();&lt;br /&gt;
  }&lt;br /&gt;
  volt = (float) analog * 5.0 / 1024.0;&lt;br /&gt;
  Serial.print(&amp;quot;Vutl\t&amp;quot;);&lt;br /&gt;
  Serial.println(volt);&lt;br /&gt;
  digitalWrite(12, LOW);&lt;br /&gt;
  laes();&lt;br /&gt;
  while(digital) {&lt;br /&gt;
    laes();&lt;br /&gt;
  }&lt;br /&gt;
  volt = (float) analog * 5.0 / 1024.0;&lt;br /&gt;
  Serial.print(&amp;quot;Vltl\t&amp;quot;);&lt;br /&gt;
  Serial.println(volt);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den første del af koden i loop er lavet til at man kan skifte det digitale input man måler på. Man gør det ved at skrive pin-nummeret ind i [[Serial Monitor]]&lt;br /&gt;
&lt;br /&gt;
===Resultater af målinger på indgangenes hysterese===&lt;br /&gt;
Der er målt på 3 forskellige Arduino UNOer, hvor det kun er den første, hvor alle input er målt igennem.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&amp;amp;nbsp;&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Klon 1&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Original&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Klon 2&lt;br /&gt;
|-&lt;br /&gt;
!Pin!!Vltl!!Vutl!!&amp;amp;nbsp;!!Vltl!!Vutl!!&amp;amp;nbsp;!!Vltl!!Vutl&lt;br /&gt;
|-&lt;br /&gt;
|2||2,23||2,51||&amp;amp;nbsp;||2,21||2,56||&amp;amp;nbsp;||2,31||2,51&lt;br /&gt;
|-&lt;br /&gt;
|3||2,24||2,52||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|4||2,24||2,53||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|5||2,21||2,50||&amp;amp;nbsp;||2,21||2,53||&amp;amp;nbsp;||2,29||2,51&lt;br /&gt;
|-&lt;br /&gt;
|6||2,20||2,52||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|7||2,20||2,51||&amp;amp;nbsp;||2,19||2,55||&amp;amp;nbsp;||2,24||2,55&lt;br /&gt;
|-&lt;br /&gt;
|8||2,21||2,49||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|9||2,15||2,43||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|10||2,17||2,44||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|11||2,13||2,44||&amp;amp;nbsp;||2,16||2,47||&amp;amp;nbsp;||2,22||2,46&lt;br /&gt;
|-&lt;br /&gt;
|13||2,10||2,43||&amp;amp;nbsp;||2,15||2,43||&amp;amp;nbsp;||2,20||2,43&lt;br /&gt;
|-&lt;br /&gt;
|A1 (15)||2,17||2,46||&amp;amp;nbsp;||2,15||2,53||&amp;amp;nbsp;||2,22||2,51&lt;br /&gt;
|-&lt;br /&gt;
|A2 (16)||2,14||2,46||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|A3 (17)||2,16||2,47||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|A4 (18)||2,14||2,47||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;||&amp;amp;nbsp;&lt;br /&gt;
|-&lt;br /&gt;
|A5 (19)||2,14||2,46||&amp;amp;nbsp;||2,14||2,52||&amp;amp;nbsp;||2,20||2,50&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Som det ses på målingerne, så er der små variationer, både i hysteresens størrelse og i hvor de ligger i spændingsområdet, men det er ganske små variationer, og det ligger fint inden for det forventede.&lt;br /&gt;
&lt;br /&gt;
==Referencer==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Arduino Elektrisk}}&lt;br /&gt;
[[Kategori:Arduino rent Elektrisk]]&lt;/div&gt;</summary>
		<author><name>htx_&gt;Bar</name></author>
	</entry>
</feed>