{"id":132,"date":"2015-11-17T09:11:28","date_gmt":"2015-11-17T08:11:28","guid":{"rendered":"http:\/\/www.twobears.at\/wordpress\/diy\/?p=132"},"modified":"2015-11-17T09:11:28","modified_gmt":"2015-11-17T08:11:28","slug":"arduino-und-harwarenahes-programmieren","status":"publish","type":"post","link":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/","title":{"rendered":"Arduino und &#8222;harwarenahes&#8220; Programmieren"},"content":{"rendered":"<p style=\"text-align: justify\">Die Arduino IDE ist recht brauchbar. \u00dcberhaupt bin ich von dem Arduino Universum recht begeistert. Es gibt g\u00fcnstige Mikrokontroller Boards, die IDE ist kostenlos, es gibt eine Menge g\u00fcnstiger Hardware (Sensoren, Displays,&#8230;.) mit entsprechenden Bibliotheken, es gibt eine recht gro\u00dfe Community (viele Tutorien, Beispiele, Foren,..) und so kann man leicht versuchen seine Projekte umzusetzen.<br \/>\nLeicht wird allerdings vergessen, dass es sich hierbei um einen Mikrokontoller handelt &#8211; er ist f\u00fcr bestimmte Zwecke gebaut und f\u00fcr die ist er auch super einsetzbar.\u00a0Die IDE Sprache ist quasi C &#8211; und man hat mit den ganzen Registern und der Hardware ja nix zu tun! Super!<br \/>\nAber verschenkt man dadurch nicht M\u00f6glichkeiten? Kann man so das Potenzial des kleinen Mikrokontrollers wirklich ausnutzen?<\/p>\n<p style=\"text-align: justify\"><!--more--><\/p>\n<p style=\"text-align: justify\">Sehen wir uns mal ein Beispiel an:<br \/>\nAufgabe einen Ausgang (den 13er PIN) so schnell wie m\u00f6glich ein und ausschalten (alle folgenden Programme sind auf einem Arduino Uno Klon getestet):<\/p>\n<pre class=\"lang:arduino decode:true\">int LED = 13;                     \/\/Der Pin mit der internen LED ist 13\n\nvoid setup() {\n  pinMode(LED,OUTPUT);            \/\/Der LED-Pin wird als Ausgang festgelegt\n}\n\nvoid loop() {\n  digitalWrite(LED,HIGH);         \/\/Der Ausgang LED wird HIGH gesetzt\n  digitalWrite(LED,LOW);          \/\/Der Ausgang LED wird LOW\n}<\/pre>\n<p style=\"text-align: justify\">Daf\u00fcr brauchen wir nicht viel Code und das Oszi-Bild zeigt:<\/p>\n<p style=\"text-align: justify\"><a href=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png?ssl=1\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-152\" src=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png?resize=640%2C384&#038;ssl=1\" alt=\"NewFile5\" width=\"640\" height=\"384\" srcset=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png?resize=768%2C461&amp;ssl=1 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Das Programm macht also, was es soll. Es schreibt ein Rechtecksignal mit eine Periodenl\u00e4nge von 11.4 \u00b5s (meistens!). Man sieht links, dass die Rechecke nicht &#8222;pr\u00e4zise&#8220; sind (das Oszi mittelt \u00fcber mehrere Bilder). D.h. die Periodenl\u00e4nge ist meistens 11.4\u00b5s aber manchmal eben doch nicht (man spricht hier auch von &#8222;Jitter&#8220;). Woher kommt das? Der Mikrokontroller tut eben zwischendurch auch andere Dinge (z.B. hat er interne Timer, die, wenn sie abgelaufen sind Aktionen (sogenannte Interrupts) ausl\u00f6sen &#8211; damit werden z.B. Zeiten gemessen). Das brauchen wir aber nicht &#8211; wir wollen ja nur unseren Ausgang setzen und r\u00fccksetzen. Also schalten wir die Interrupts aus (ACHTUNG: Wie beschrieben funktioniert dann Verschiedenes, wie die Zeitmessung nicht mehr!, also Achtung wenn man das in einem gr\u00f6\u00dferen Programm macht):<\/p>\n<pre class=\"lang:arduino decode:true\">int LED = 13;                     \/\/Der Pin mit der internen LED ist 13\n\nvoid setup() {\n  pinMode(LED,OUTPUT);            \/\/Der LED-Pin wird als Ausgang festgelegt\n  noInterrupts();                 \/\/Alle Interrupts werden ausgeschaltet\n}\n\nvoid loop() {\n  digitalWrite(LED,HIGH);         \/\/Der Ausgang LED wird HIGH gesetzt\n  digitalWrite(LED,LOW);          \/\/Der Ausgang LED wird LOW\n}<\/pre>\n<p style=\"text-align: justify\">Und siehe da:<\/p>\n<p style=\"text-align: justify\"><a href=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile4.png?ssl=1\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-153\" src=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile4.png?resize=640%2C384&#038;ssl=1\" alt=\"NewFile4\" width=\"640\" height=\"384\" srcset=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile4.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile4.png?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile4.png?resize=768%2C461&amp;ssl=1 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Das Rechteck ist nun sauber! (auch \u00fcber l\u00e4ngere Zeiten, ich hab das entsprechende Bild nicht hier her getan)<br \/>\nJetzt habe ich aber noch einen kleinen &#8222;Fehler&#8220; in das Programm eingebaut, der den Ablauf etwas verz\u00f6gert!<br \/>\nHabt Ihr ihn gefunden?<br \/>\nDie Variable LED ist tats\u00e4chlich eine Variable, d.h. sie k\u00f6nnte sich im Programmablauf \u00e4ndern. Der Mikrokontroller schaut also bei jedem digitalWrite was da jetzt im Speicher steht, wohin er schreiben mu\u00df. Tats\u00e4chlich brauchen wir hier aber eine Konstante (hier ersetzt der Compiler vor dem Upload jedes LED durch 13 d.h. im Programm im Mikrokontroller kommt die Variable LED gar nicht mehr vor &#8211; macht nicht viel Unterschied, aber wenn wir es \u00e4ndern:<\/p>\n<pre class=\"lang:arduino decode:true\">int const LED = 13;               \/\/Der Pin mit der internen LED ist 13\n\nvoid setup() {\n  pinMode(LED,OUTPUT);            \/\/Der LED-Pin wird als Ausgang festgelegt\n  noInterrupts();                 \/\/Alle Interrupts werden ausgeschaltet\n}\n\nvoid loop() {\n  digitalWrite(LED,HIGH);         \/\/Der Ausgang LED wird HIGH gesetzt\n  digitalWrite(LED,LOW);          \/\/Der Ausgang LED wird LOW\n}<\/pre>\n<p style=\"text-align: justify\">kommt das raus:<\/p>\n<p style=\"text-align: justify\"><a href=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile3.png?ssl=1\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-151\" src=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile3.png?resize=640%2C384&#038;ssl=1\" alt=\"NewFile3\" width=\"640\" height=\"384\" srcset=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile3.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile3.png?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile3.png?resize=768%2C461&amp;ssl=1 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Ein sauberes Rechteck, dass jetzt etwas schneller ist. Die Periodendauer ist 10.68\u00b5s mit einer High-Zeit von 5.12 \u00b5s und einer Low-Zeit von 5.56 \u00b5s. Ist also eine Frequenz von 93.6 kHz.<\/p>\n<p style=\"text-align: justify\">Moment! Der Arduino hat eine Taktfrequenz von 16 MHz und das Schnellste was wir zusammenbringen sind nicht mal 100 kHz? &#8211; das kann doch nicht sein, oder?<\/p>\n<p style=\"text-align: justify\">Warum ist das so? &#8211; naja, die kleinen Befehle digitalWrite() sind in Wahrheit wohl gar nicht so klein. Und wir wissen ja nicht so genau, was der Compiler daraus macht und was dann der Mikrokontroller zu tun hat &#8211; aber offensichtlich eine ganze Menge. Sonst w\u00fcrde er nicht so lange brauchen.<\/p>\n<p style=\"text-align: justify\">Um schneller zu werden, m\u00fcssen wir mal kurz \u00fcberlegen, was eigentlich intern im Mikrokontoller passiert. Dort gibt es sogenannte Register, deren Inhalt z.B. auf die PINs \u00fcbertragen wird. Wenn wir ins Datenblatt f\u00fcr den ATmega328 (das ist der Mikrokontroller auf dem Arduino Uno Board) schauen, finden wir dort, dass das Register mit dem Namen PORTB daf\u00fcr zust\u00e4ndig ist. Das Register ist f\u00fcr die PINS 8-13 zust\u00e4ndig. Wenn wir hier das sechste Bit auf 1 setzten, wird auch der Ausgang \u00a0high gesetzt. Das probieren wir gleich mal aus:<\/p>\n<pre class=\"lang:arduino decode:true\">int const LED = 13;               \/\/Der Pin mit der internen LED ist 13\n\nvoid setup() {\n  pinMode(LED,OUTPUT);            \/\/Der LED-Pin wird als Ausgang festgelegt\n  noInterrupts();                 \/\/Alle Interrupts werden ausgeschaltet\n}\n\nvoid loop() {\n  PORTB = B00100000;         \/\/Der Ausgang LED wird HIGH gesetzt\n  PORTB = B00000000;         \/\/Der Ausgang LED wird LOW\n}<\/pre>\n<p style=\"text-align: justify\">Zu beachten ist hier, dass wir auch die anderen BITs in dem Register ver\u00e4ndern (also auch andere Ausg\u00e4nge). Das k\u00f6nnte st\u00f6ren! Bei unserem einfachen Beispiel tut es das aber nicht.<\/p>\n<p style=\"text-align: justify\">Als Ergebnis erhalten wir:<\/p>\n<p style=\"text-align: justify\"><a href=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile6.png?ssl=1\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-154\" src=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile6.png?resize=640%2C384&#038;ssl=1\" alt=\"NewFile6\" width=\"640\" height=\"384\" srcset=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile6.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile6.png?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile6.png?resize=768%2C461&amp;ssl=1 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Hurra! Durch diese \u00c4nderung im Programm sind wir um mehr als den Faktor 10 schneller geworden und sind jetzt schon bei \u00fcber 1 MHz!<\/p>\n<p style=\"text-align: justify\">Geht es noch schneller?<\/p>\n<p style=\"text-align: justify\">Wo liegt eigentlich jetzt das Problem? Bei einer Taktfrequenz von 16 MHz ist ein Taktzyklus 62.5 ns lang. Das ist auch ziemlich genau die Zeit, die das High-Signal dauert. Das Low Signal ist deutlich l\u00e4nger &#8211; hier wird der Ausgang zuerst auf LOW gesetzt und dann wird im Programm zum Anfang gesprungen &#8211; das Springen vom Ende der Schleife zum Anfang d\u00fcrfte also relativ lange dauern. Wenn wir das Programm etwas modifizieren und am Ende mit einer GoTo-Anweisung zur\u00fcckspringen (ja, ich wei\u00df, bei manchen ist das GoTo verp\u00f6nt, weil es schlechter Stil sei!) dann:<\/p>\n<pre class=\"lang:arduino decode:true\">int const LED = 13;\n\nvoid setup() {\n  pinMode(LED,OUTPUT);            \/\/Der LED-Pin wird als Ausgang festgelegt\n  noInterrupts();                 \/\/Alle Interrupts werden ausgeschaltet\n}\n\nvoid loop() {\n  start:\n  PORTB = B00100000;             \/\/PIN13 wird HIGH gesetzt (und alle anderen im Register auf LOW)\n  PORTB = B00000000;             \/\/PIN13 wird LOW (und alle anderen im Register!)\n  goto start;\n}<\/pre>\n<p>sieht das pl\u00f6tzlich so aus:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile2.png?ssl=1\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-150\" src=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile2.png?resize=640%2C384&#038;ssl=1\" alt=\"NewFile2\" width=\"640\" height=\"384\" srcset=\"https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile2.png?w=800&amp;ssl=1 800w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile2.png?resize=300%2C180&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile2.png?resize=768%2C461&amp;ssl=1 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" data-recalc-dims=\"1\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Jetzt sind wir schon bei 4 MHz!<br \/>\nWir brauchen einen Taktzyklus f\u00fcr das schreiben des High Signals, einen f\u00fcr das Low und dann zwei f\u00fcr den R\u00fccksprung. Und das d\u00fcrfte auch so ziemlich das Ende der Fahnenstange sein. Schneller k\u00f6nnen wir wohl auf diese Art nicht mehr werden, ohne Z\u00e4hler einzusetzen.<\/p>\n<p>Womit haben wir das erreicht?<\/p>\n<ul>\n<li>Wir haben statt des digitalWrite() direkt auf das entsprechende Register geschrieben.<\/li>\n<li>Wir haben ein GoTo statt dem &#8222;normalen&#8220; R\u00fccksprung verwendet.<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Was ist der Preis?<\/p>\n<ul>\n<li style=\"text-align: justify\">Das Programm ist schwerer lesbar (ein digitaWrite() liest sich viel leichter als Bits und Adressen).<\/li>\n<li style=\"text-align: justify\">Man mu\u00df h\u00f6llisch aufpassen, wenn man direkt in Register schreibt (denn man \u00e4ndert eventuell auch andere Dinge (Eing\u00e4nge, Ausg\u00e4nge,&#8230;.)<\/li>\n<li style=\"text-align: justify\">Bei einem anderen Mikrokontroller k\u00f6nnen die Register anders sein und das Programm mu\u00df ge\u00e4ndert werden, damit es verwendbar bleibt.<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Welche L\u00f6sung ist besser?<br \/>\nWie so oft: Das kann man so nicht sagen. Wenn man z.B. eine LED blinken lassen will, sind irgendwelche \u00b5s und ns ziemlich egal. Dann ist es besser ein gut lesbares und &#8222;sicheres&#8220; Programm zu haben.<br \/>\nWenn man aber recht schnell irgendwelche Signale erzeugen oder verarbeiten will, dann kann das helfen! Es bleibt also an Euch zu entscheiden, was in welchem Fall besser ist! &#8211; aber es gut, wenn man beide M\u00f6glichkeiten kennt!<\/p>\n<p style=\"text-align: justify\">Ich hoffe, der Artikel war verst\u00e4ndlich und ist nachvollziehbar!<br \/>\nBei Anregungen oder Fragen benutzt bitte die Kommentarfunktion.<\/p>\n<p style=\"text-align: justify\">Liebe Gr\u00fc\u00dfe<br \/>\nEuer DIYDonkey<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Arduino IDE ist recht brauchbar. \u00dcberhaupt bin ich von dem Arduino Universum recht begeistert. Es gibt g\u00fcnstige Mikrokontroller Boards, die IDE ist kostenlos, es gibt eine Menge g\u00fcnstiger Hardware (Sensoren, Displays,&#8230;.) mit entsprechenden Bibliotheken, es gibt eine recht gro\u00dfe Community (viele Tutorien, Beispiele, Foren,..) und so kann man leicht versuchen seine Projekte umzusetzen. Leicht &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eArduino und &#8222;harwarenahes&#8220; Programmieren\u201c<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2,3],"tags":[5,10,25],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.14 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Arduino und &quot;harwarenahes&quot; Programmieren - TwoBears DIY<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arduino und &quot;harwarenahes&quot; Programmieren - TwoBears DIY\" \/>\n<meta property=\"og:description\" content=\"Die Arduino IDE ist recht brauchbar. \u00dcberhaupt bin ich von dem Arduino Universum recht begeistert. Es gibt g\u00fcnstige Mikrokontroller Boards, die IDE ist kostenlos, es gibt eine Menge g\u00fcnstiger Hardware (Sensoren, Displays,&#8230;.) mit entsprechenden Bibliotheken, es gibt eine recht gro\u00dfe Community (viele Tutorien, Beispiele, Foren,..) und so kann man leicht versuchen seine Projekte umzusetzen. Leicht &hellip; \u201eArduino und &#8222;harwarenahes&#8220; Programmieren\u201c weiterlesen\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/\" \/>\n<meta property=\"og:site_name\" content=\"TwoBears DIY\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-17T08:11:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png\" \/>\n<meta name=\"author\" content=\"Norbert\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Norbert\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/\",\"url\":\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/\",\"name\":\"Arduino und \\\"harwarenahes\\\" Programmieren - TwoBears DIY\",\"isPartOf\":{\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/#website\"},\"datePublished\":\"2015-11-17T08:11:28+00:00\",\"dateModified\":\"2015-11-17T08:11:28+00:00\",\"author\":{\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/#\/schema\/person\/41adaf5c59ce9abb1d61d1af2c6060be\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/#breadcrumb\"},\"inLanguage\":\"de-DE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/www.twobears.at\/universe\/diy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arduino und &#8222;harwarenahes&#8220; Programmieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/#website\",\"url\":\"https:\/\/www.twobears.at\/universe\/diy\/\",\"name\":\"TwoBears DIY\",\"description\":\"Eine weitere TwoBears Universe Website\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.twobears.at\/universe\/diy\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de-DE\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/#\/schema\/person\/41adaf5c59ce9abb1d61d1af2c6060be\",\"name\":\"Norbert\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de-DE\",\"@id\":\"https:\/\/www.twobears.at\/universe\/diy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/03d18794b0bb1b2a66afa03ed6960a0c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/03d18794b0bb1b2a66afa03ed6960a0c?s=96&d=mm&r=g\",\"caption\":\"Norbert\"},\"url\":\"https:\/\/www.twobears.at\/universe\/diy\/author\/norbert\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arduino und \"harwarenahes\" Programmieren - TwoBears DIY","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/","og_locale":"de_DE","og_type":"article","og_title":"Arduino und \"harwarenahes\" Programmieren - TwoBears DIY","og_description":"Die Arduino IDE ist recht brauchbar. \u00dcberhaupt bin ich von dem Arduino Universum recht begeistert. Es gibt g\u00fcnstige Mikrokontroller Boards, die IDE ist kostenlos, es gibt eine Menge g\u00fcnstiger Hardware (Sensoren, Displays,&#8230;.) mit entsprechenden Bibliotheken, es gibt eine recht gro\u00dfe Community (viele Tutorien, Beispiele, Foren,..) und so kann man leicht versuchen seine Projekte umzusetzen. Leicht &hellip; \u201eArduino und &#8222;harwarenahes&#8220; Programmieren\u201c weiterlesen","og_url":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/","og_site_name":"TwoBears DIY","article_published_time":"2015-11-17T08:11:28+00:00","og_image":[{"url":"https:\/\/www.twobears.at\/universe\/diy\/wp-content\/uploads\/sites\/2\/2015\/11\/NewFile5.png"}],"author":"Norbert","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Norbert","Gesch\u00e4tzte Lesezeit":"6 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/","url":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/","name":"Arduino und \"harwarenahes\" Programmieren - TwoBears DIY","isPartOf":{"@id":"https:\/\/www.twobears.at\/universe\/diy\/#website"},"datePublished":"2015-11-17T08:11:28+00:00","dateModified":"2015-11-17T08:11:28+00:00","author":{"@id":"https:\/\/www.twobears.at\/universe\/diy\/#\/schema\/person\/41adaf5c59ce9abb1d61d1af2c6060be"},"breadcrumb":{"@id":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/#breadcrumb"},"inLanguage":"de-DE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.twobears.at\/universe\/diy\/2015\/11\/17\/arduino-und-harwarenahes-programmieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.twobears.at\/universe\/diy\/"},{"@type":"ListItem","position":2,"name":"Arduino und &#8222;harwarenahes&#8220; Programmieren"}]},{"@type":"WebSite","@id":"https:\/\/www.twobears.at\/universe\/diy\/#website","url":"https:\/\/www.twobears.at\/universe\/diy\/","name":"TwoBears DIY","description":"Eine weitere TwoBears Universe Website","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.twobears.at\/universe\/diy\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"de-DE"},{"@type":"Person","@id":"https:\/\/www.twobears.at\/universe\/diy\/#\/schema\/person\/41adaf5c59ce9abb1d61d1af2c6060be","name":"Norbert","image":{"@type":"ImageObject","inLanguage":"de-DE","@id":"https:\/\/www.twobears.at\/universe\/diy\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/03d18794b0bb1b2a66afa03ed6960a0c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/03d18794b0bb1b2a66afa03ed6960a0c?s=96&d=mm&r=g","caption":"Norbert"},"url":"https:\/\/www.twobears.at\/universe\/diy\/author\/norbert\/"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/posts\/132"}],"collection":[{"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/comments?post=132"}],"version-history":[{"count":0,"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/posts\/132\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/media?parent=132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/categories?post=132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.twobears.at\/universe\/diy\/wp-json\/wp\/v2\/tags?post=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}