{"id":333,"date":"2017-02-16T16:20:19","date_gmt":"2017-02-16T15:20:19","guid":{"rendered":"http:\/\/www.projekt-deine-zukunft.de\/?page_id=333"},"modified":"2017-02-17T11:24:12","modified_gmt":"2017-02-17T10:24:12","slug":"vcontroll-arduino-uno-software","status":"publish","type":"page","link":"http:\/\/www.projekt-deine-zukunft.de\/?page_id=333","title":{"rendered":"VControll Arduino UNO Software"},"content":{"rendered":"<div class=\"entry-container fix\">\n<div class=\"entry fix\"><strong>Aufgabenstellung:<\/strong>4 Spannungen an einer analogen Modellbahnanlage in Spur N sollen \u00fcberwacht werden. Die Messwerte der einzelnen Spannung sollen in einem Bereich (hier zwischen 5.0V und 8.5V) jeweils \u00fcber LED und LC-Display angezeigt werden.<\/p>\n<p><strong>Software:<\/strong> Die Hardware habe ich <a href=\"http:\/\/www.projekt-deine-zukunft.de\/?page_id=316\">hier<\/a> beschrieben &#8230;<strong><br \/>\n<\/strong><br \/>\nDas Programm ist zus\u00e4tzlich zu den beiden Standardfunktionen <strong>setup()<\/strong> und<strong> loop()<\/strong>, die jedes Arduino Programm erst einmal hat, mit einer Scann-Funktion und jeweils einer Ausgabe-Funktion f\u00fcr die LEDs und das LC-Display aufgebaut.<\/p>\n<p>In der setup() wird das Display initialisiert, ein kurzer Text auf dem Display ausgegeben und der Pinmode f\u00fcr die DIOs am Ardunio definiert.<\/p>\n<pre>lcd.begin(20, 2);\r\nlcd.setCursor(0, 1);\r\nlcd.print(\"Initialisierung...\");\r\n\r\n...\r\n\r\npinMode( LED_Ch1, OUTPUT);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ LED Ch1 Port PB1 f\u00fcr A0\r\npinMode( LED_Ch2, OUTPUT);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ LED Ch2 Port PB0 f\u00fcr A1\r\npinMode( LED_Ch3, OUTPUT);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ LED Ch3 Port PD7 f\u00fcr A2\r\npinMode( LED_Ch4, OUTPUT);\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ LED Ch4 Port PD6 f\u00fcr A3<\/pre>\n<p>In meiner Scann-Funktion scann_channel ( ) wird als Parameter die Kanalnummer \u00fcbergeben und die Funktion liefert einen Messwert zur\u00fcck.<\/p>\n<pre class=\"\">int scann_channel ( uint8_t channel ) {\r\n int val;\u00a0 \/\/ Bereich 0..1023 0x03FF 5V \/ 1024 = 4,9mV\r\n\r\n if ( channel = 1 ) {\r\n   val = analogRead( A0 );\u00a0\u00a0\u00a0 \/\/ read the input pin\r\n } else if ( channel = 2 ) {\r\n   val = analogRead( A1 );\u00a0\u00a0\u00a0 \/\/ read the input pin\r\n } else if ( channel = 3 ) {\r\n   val = analogRead( A2 );\u00a0\u00a0\u00a0 \/\/ read the input pin\r\n } else if ( channel = 4 ) {\r\n   val = analogRead( A3 );\u00a0\u00a0\u00a0 \/\/ read the input pin\r\n } else {\r\n   \/\/\r\n }\r\n\r\n return val;\r\n}<\/pre>\n<\/div>\n<p>F\u00fcr die Ausgabe an den LEDs habe ich die Funktion update_led() erstellt. Die Funktion bekommt die Kanalnummer und den dazugeh\u00f6rigen Messwert \u00fcbergeben. Dann wird f\u00fcr jeden Kanal die Schaltschwelle gepr\u00fcft und der Ausgang zum Kanal entweder HIGH oder LOW gesetzt.<\/p>\n<pre class=\"\">void update_led ( uint8_t channel, uint8_t value ) {\r\n\r\n if ( channel == 1 ) {\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Auswahl Channel == 1\r\n  if (( value &gt;= lower_Level ) &amp;&amp; ( value &lt;= upper_Level )) {\r\n    digitalWrite(LED_Ch1, HIGH);\u00a0 \/\/ Bei HIGH ist die LED \"gr\u00fcn\" an bei LOW \"rot\"\r\n  } else {\r\n    digitalWrite(LED_Ch1, LOW);\u00a0\u00a0 \/\/ Bei LOW ist die LED \"rot\" an bei HIGH \"gr\u00fcn\"\r\n  }\r\n } else if ( channel == 2 ) {\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Auswahl Channel == 2\r\n  if (( value &gt;= lower_Level ) &amp;&amp; ( value &lt;= upper_Level )) {\r\n    digitalWrite(LED_Ch2, HIGH);\u00a0 \/\/ Bei HIGH ist die LED \"gr\u00fcn\" an bei LOW \"rot\"\r\n  } else {\r\n    digitalWrite(LED_Ch2, LOW);\u00a0\u00a0 \/\/ Bei LOW ist die LED \"rot\" an bei HIGH \"gr\u00fcn\"\r\n  }\r\n } else if ( channel == 3 ) {\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Auswahl Channel == 3\r\n  if (( value &gt;= lower_Level ) &amp;&amp; ( value &lt;= upper_Level )) {\r\n    digitalWrite(LED_Ch3, HIGH);\u00a0 \/\/ Bei HIGH ist die LED \"gr\u00fcn\" an bei LOW \"rot\"\r\n  } else {\r\n    digitalWrite(LED_Ch3, LOW);\u00a0\u00a0 \/\/ Bei LOW ist die LED \"rot\" an bei HIGH \"gr\u00fcn\"\r\n  }\r\n } else if ( channel == 4 ) {\u00a0\u00a0\u00a0\u00a0\u00a0 \/\/ Auswahl Channel == 4\r\n  if (( value &gt;= lower_Level ) &amp;&amp; ( value &lt;= upper_Level )) {\r\n    digitalWrite(LED_Ch4, HIGH);\u00a0 \/\/ Bei HIGH ist die LED \"gr\u00fcn\" an bei LOW \"rot\"\r\n  } else {\r\n    digitalWrite(LED_Ch4, LOW);\u00a0\u00a0 \/\/ Bei LOW ist die LED \"rot\" an bei HIGH \"gr\u00fcn\"\r\n  }\r\n } else {\r\n  \/\/\r\n }\r\n\r\n return;\r\n}<\/pre>\n<p>In der loop() Funktion wird dann regelm\u00e4\u00dfig die Scann-Funktion und die Ausgabefunktionen aufgerufen.<\/p>\n<pre>void loop() {\r\n \/\/ Pause\r\n delay ( warte );\r\n\r\n \/\/ Channel 1..4 scannen\r\n \/\/ Display aktualisieren\r\n \/\/ LED aktualisieren\r\n for ( uint8_t i_loop = 1; i_loop &lt;= 4; i_loop++ ) {\r\n    int value = scann_channel( i_loop );\r\n    update_lcd( i_loop, value );\r\n    update_led( i_loop, value );\r\n }\r\n}<\/pre>\n<p>Das war eigentlich schon alles. Hier ist die ganz Datei &#8220;<a href=\"http:\/\/www.projekt-deine-zukunft.de\/wp-content\/uploads\/2017\/02\/VControl.ino_.zip\">VControl.ino<\/a>&#8220;.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aufgabenstellung:4 Spannungen an einer analogen Modellbahnanlage in Spur N sollen \u00fcberwacht werden. Die Messwerte der einzelnen Spannung sollen in einem Bereich (hier zwischen 5.0V und 8.5V) jeweils \u00fcber LED und LC-Display angezeigt werden. Software: Die Hardware habe ich hier beschrieben &#8230; Das Programm ist zus\u00e4tzlich zu den beiden Standardfunktionen setup() und loop(), die jedes Arduino [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":242,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/pages\/333"}],"collection":[{"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=333"}],"version-history":[{"count":12,"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/pages\/333\/revisions"}],"predecessor-version":[{"id":360,"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/pages\/333\/revisions\/360"}],"up":[{"embeddable":true,"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=\/wp\/v2\/pages\/242"}],"wp:attachment":[{"href":"http:\/\/www.projekt-deine-zukunft.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}