<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://rn-wissen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fabqu</id>
		<title>RN-Wissen.de - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://rn-wissen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fabqu"/>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Spezial:Beitr%C3%A4ge/Fabqu"/>
		<updated>2026-04-11T23:37:08Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=27927</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=27927"/>
				<updated>2016-10-12T07:08:31Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''' [3] und [6], ein ADC kann die angeschlossene Akkuspannung überwachen [23]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ein Tipp: Will man nur Softwarearbeiten machen und muss der RP6 dabei sich nicht frei bewegen können, einfach eine dreifach-Brücke über den Dreifachjumper &amp;quot;JP_UB&amp;quot; legen und ein Netzgerät an die ArduIO anschließen. Dann wird über die dreifach-Brücke sowohl die ArduIO von diesem Netzgerät versorgt, als auch der RP6 über den XBUS. Natürlich sollte dafür auch im RP6 kein Akku angeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit der Verkabelung seht ihr rechts: Jede Platine benötigt GND, die vier Scheinwerfer dazu noch je drei IOs, wovon jedoch stets mehrere geteilt werden (BEIDE Blinker links, BEIDE Blinker rechts, etc). Die Blaulicht-Platine benötigt dazu noch +5V, da hier beide LEDs gegenpolig an einem einzelnen IO angeschlossen sind, auf der anderen Seite geht die eine LED auf GND, die andere auf +5V. Dadurch bewirkt ein Tooglen des IOs ein abwechselndes Blinken der beiden LEDs.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Wenn all diese LEDs leuchten, also alle vier Front- und vier Heckscheinwerfer sowie alle vier Blinker und eine der blauen LEDs, so ziehen diese einen Strom von 4x20mA (weiß) + 1x30mA (blau) + 4x2mA (rot) + 4x2mA (gelb) = 126mA. Das ist für den IO-Expander nicht wenig und sollte bei weiteren Verbrauchern an den übrigen 8 IOs beachtet werden. Der zulässige Maximalstrom sollte nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/s/0zyeckgycx10ut5/RP6-ArduIO_Daten_Forum.zip?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_Multi_IO_Projekt&amp;diff=27926</id>
		<title>RP6 Multi IO Projekt</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_Multi_IO_Projekt&amp;diff=27926"/>
				<updated>2016-10-12T07:08:05Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Weblinks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:Multi-IO_Gesamtansicht.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 Multi IO Erweiterungsmodul=&lt;br /&gt;
Das RP6-Multi-IO Erweiterungsmodul besteht aus fünf Platinen.&lt;br /&gt;
Eine Hauptplatine, im üblichen RP6-Layout, enthält eine Vielzahl möglicher Sensoren und Aktoren wie eine eigene Stromversorgung mit 5V-Regler, Temperatursensor, Stromsensor, Spannungssensoren, Berührungssensor, Servo-Ansteuerung, LEDs, Buzzer etc.&lt;br /&gt;
An sie können die vier weiteren Platinen angesteckt werden. Diese sind eine Bumper-Platine zum Anbringen am Heck des RP6, eine Radio-Platine, eine Platine mit vier Tastern und eine mit einem Liniensensor-Array von fünf CNY70-Reflexoptokopplern.&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den [http://www.rn-wissen.de/index.php/RP6_Multi_IO_Projekt#Weblinks Weblinks].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese fünf Platinen können bei fabqu ( http://www.roboternetz.de/community/members/47148-fabqu oder fabqu@web.de ) bestellt werden. Sie sind mit Lötstoplack (schwarz) sowie beidseitig mit einem Bestückungsdruck (in weiß) versehen.&lt;br /&gt;
&lt;br /&gt;
Sie sind nicht aufgebaut, aber fabqu bietet an, die schwer einzulötenden SMD-ICs (und bei Bedarf auch alle anderen SMD-Bauteile) in einer Sammelbestellung zu bestellen und einzulöten.&lt;br /&gt;
&lt;br /&gt;
'''Leider gibt es nur noch eine Platine!!!'''&lt;br /&gt;
&lt;br /&gt;
==Features des Multi-IO-Moduls==&lt;br /&gt;
===On-Board-Sensoren===&lt;br /&gt;
* Externe Stromversorgung&lt;br /&gt;
** Bis zu 10 Volt&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* USRBUS&lt;br /&gt;
** Pinherausführungen&lt;br /&gt;
&lt;br /&gt;
* Alle 14 Pins stehen zur freien Verfügung&lt;br /&gt;
* XBUS&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel) und Int1 (5V- und 3,3V-Pegel)&lt;br /&gt;
* Temperatur-Sensor&lt;br /&gt;
** [http://ww1.microchip.com/downloads/en/devicedoc/21490b.pdf TCN75] (gleicher Sensor ist bei M128 verbaut)&lt;br /&gt;
** Adressbits A0 und A2 einstellbar&lt;br /&gt;
** Sensor ist durch Jumper deaktivierbar&lt;br /&gt;
* 16-fach PWM-Modulator via I2C [http://www.nxp.com/documents/data_sheet/PCA9685.pdf PCA9685]&lt;br /&gt;
** schaltet 8 Servos&lt;br /&gt;
** schaltet 4 LEDs&lt;br /&gt;
** schaltet Versorgungsspannung der Servomotoren zu/ab&lt;br /&gt;
** 3 freie Pins&lt;br /&gt;
** Der PCA9685 ist direkt neben dem USRBUS angebracht, um hier eine Fortführung der Daten zu ermöglichen&lt;br /&gt;
* Servo-Lib für [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]]&lt;br /&gt;
** 8 Servos für [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] nutzbar durch [http://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=servo+lib Servo-Lib von Dirk]&lt;br /&gt;
** siehe Weblinks unten&lt;br /&gt;
* Spannungsversorgung Servos&lt;br /&gt;
** Eigene Spannungsversorgung für alle Servomotoren&lt;br /&gt;
** Abgesichert durch 470uF-Kondensator&lt;br /&gt;
** Verwendung drei verschiedener 5V-Regler möglich ([http://www.fairchildsemi.com/ds/LM/LM7805.pdf 7805], [http://www.farnell.com/datasheets/42567.pdf LT1084CP-5] oder [http://www.farnell.com/datasheets/84018.pdf LT1084CT-5])&lt;br /&gt;
** Bei Verwendung eines LT…-5 ist die Spannung durch Poti im Bereich 5..7,5V einstellbar&lt;br /&gt;
* Strom-Spannungs-Überwachung&lt;br /&gt;
** [http://cds.linear.com/docs/en/datasheet/2990fc.pdf LTC2990] überwacht via I2C Batteriespannung, Servospannung, Stromverbrauch der gesamten Platine sowie eigene Temperatur&lt;br /&gt;
** Analoge Messung der 3,3V-Spannung&lt;br /&gt;
* Echtzeit-Uhr [http://datasheets.maximintegrated.com/en/ds/DS1307.pdf DS1307]&lt;br /&gt;
** Via I2C&lt;br /&gt;
** 5V sind durch Jumper deaktivierbar&lt;br /&gt;
** StandBy durch 3V-Knopfzelle (20xx-Reihe) möglich&lt;br /&gt;
* Berührungssensor&lt;br /&gt;
** Timerbaustein [http://www.makershed.com/v/vspfiles/assets/images/ne555.pdf NE555] registriert Berührung einer Antenne&lt;br /&gt;
** Via ADC&lt;br /&gt;
* Buzzer&lt;br /&gt;
* Spannungsteiler&lt;br /&gt;
** Vorbereitet&lt;br /&gt;
** Anschlussmöglichkeit vieler eigener Sensoren&lt;br /&gt;
* I2C-EEPROM der 24LCxxx-Serie&lt;br /&gt;
* Anschlussmöglichkeit der IO- und ADC-Wannenstecker von [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] und [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]]&lt;br /&gt;
&lt;br /&gt;
===Weitere Platinen===&lt;br /&gt;
&lt;br /&gt;
* Jede hier beschriebene Platine besitzt einen vorkonfektionierten Anschluss auf der Hauptplatine&lt;br /&gt;
* Taster-Board&lt;br /&gt;
** Vier Taster&lt;br /&gt;
** Widerstandskaskade für Messung mit einem ADC&lt;br /&gt;
* Bumper-Board&lt;br /&gt;
** Zwei Bumper mit LEDs&lt;br /&gt;
** Zwei durch Transistor abschaltbare Sharp-GP2Dxx- oder Radar-Abstandssensoren (analog) oder zwei SRF02-Sensoren (digital via I2C)&lt;br /&gt;
* Liniensucher-Board für Liniensensor&lt;br /&gt;
** Bis zu 5 [http://www.vishay.com/docs/83751/cny70.pdf CNY70]-Reflexoptokoppler&lt;br /&gt;
** Durch Transistor abschaltbar&lt;br /&gt;
** LED zeigt Status&lt;br /&gt;
** Durch Jumper Wahl zwischen drei oder fünf CNY70-Reflexoptokopplern&lt;br /&gt;
* Radio-Board&lt;br /&gt;
** [http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/Si4735%20Datasheet.pdf SI4735] digitaler Radio-Empfänger&lt;br /&gt;
** [http://www.b-kainka.de/Daten/Analog/TDA7050_CNV_2.pdf TDA7050] Verstärker mit Stereo-Kopfhörerbuchse&lt;br /&gt;
** Potentiometer zur Lautstärkeregulierung&lt;br /&gt;
** AM und FM möglich&lt;br /&gt;
* Anschlüsse&lt;br /&gt;
** Taster-Board kann an Hauptplatine angesteckt oder aufgelötet werden&lt;br /&gt;
** Anschlüsse für Bumper- und Liniensensor-Board&lt;br /&gt;
&lt;br /&gt;
===Erweiterbare Sensoren===&lt;br /&gt;
* DCF77-Funkuhrempfänger&lt;br /&gt;
* GPS-Modul Navilock &amp;quot;NL-552ETTL&amp;quot; via UART (oder vergleichbare GPS-Sensoren, Levelshifter 5V&amp;lt;-&amp;gt;3,3V on Board)&lt;br /&gt;
* Aufsteckbarer 2D-Kompass &amp;quot;HDMM01&amp;quot; (Kompass mit 2-Achsen-Beschleunigungssensor)&lt;br /&gt;
* Aufsteckbarer 3D-Kompass &amp;quot;LSM303DLM&amp;quot; (Kompass mit 3-Achsen-Beschleunigungssensor)&lt;br /&gt;
* Oder aufsteckbarer 9D-Kompass &amp;quot;MinIMU-9 v2&amp;quot; (Kompass mit 3-Achsen-Beschleunigungssensor und 3-Achsen-Gyro)&lt;br /&gt;
* Aufsteckbarer Luftfeuchtigkeit- und Temperatur-Sensor &amp;quot;HYT 221&amp;quot;&lt;br /&gt;
* Aufsteckbarer Luftdrucksensor &amp;quot;BMP085&amp;quot;&lt;br /&gt;
* Vier weitere Ultraschall-Abstandssensoren (z.B. &amp;quot;SRF02&amp;quot; )&lt;br /&gt;
* &amp;quot;SnakeVision&amp;quot;-Modul&lt;br /&gt;
* Jeder I2C-Sensor oder -Aktor; sowohl für 5V- als auch für 3,3V-Pegel&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von Dirk erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen.&lt;br /&gt;
Es ist geplant, eine Bibliothek mit allen fest installierten Sensoren und Aktoren aufzubauen. Darüber hinaus soll sich eine weitere Bibliothek mit Umwelt-Fragen beschäftigen (Luftdruck, Luftfeuchtigkeit, Temperatur) sowie eine mit den Sensoren für Lageerkennung (GPS, 2D-, 3D- oder 9D-Kompass).&lt;br /&gt;
Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[RP6 Multi IO Projekt - Software|HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Die Hardware des Multi-IO-Moduls muss erst verlötet werden. Bitte lese dafür ausführliche eine Lötanleitung! Diese finden sich u.a. im Netz:&lt;br /&gt;
[[Löt-Tutorial]].&lt;br /&gt;
&lt;br /&gt;
Du musst nicht alle Komponenten einbauen! Du kannst diejenigen einbauen, welche du benötigst oder ausprobieren möchtest. Die Platine ist jederzeit erweiterbar.&lt;br /&gt;
Nach dem Löten kann es sinnvoll sein, die Lötstellen durch „Plastik 70“-Spray vor Korrosion zu schützen.&lt;br /&gt;
&lt;br /&gt;
===Anschluß anderer Module===&lt;br /&gt;
[[Bild:Anschlüsse.jpg|thumb|Anschluss des RP6-M256-Moduls über drei Flachbandkabel]]&lt;br /&gt;
An den 10-poligen Wannensteckern IO_Mxxx (SV_IO_Mxxx ) und ADC_Mxxx (SV_ADC_Mxxx) an der Rückseite des Multi-IO-Moduls können IO- und ADC-Wannenstecker der Module [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] und [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]] angesteckt werden. Der 10-polige IO-Wannenstecker „SV_SERVOSM32“ der M32 kann zusätzlich für acht Servos genutzt werden.&lt;br /&gt;
Für die [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]] steht ein zusätzlicher, 14-poliger Wannenstecker (SV_ADC_M256) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Wofür''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 10-poliges Flachbandkabel, ca. 20cm || Für IO_Mxxx und ADC_Mxxx || 2&lt;br /&gt;
|-&lt;br /&gt;
| 10-poliger Wannenstecker || Für IO_Mxxx und ADC_Mxxx || 4&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliges Flachbandkabel, ca. 10cm || Für XBUS und USRBUS || 2&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliges Flachbandkabel, ca. 20cm || Für ADC_M256 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliger Wannenstecker || Für ADC_M256, XBUS und USRBUS || 6&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 10-poliges Flachbandkabel, ca. 20cm || Für Servos der M32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 10-poliger Wannenstecker || Für Servos der M32 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Taster-Board===&lt;br /&gt;
[[Bild:Tasterpoard.jpeg|thumb|Das Tasterboard mit den vier Tastern, auf der Hauptplatine befestigt]]&lt;br /&gt;
Das Taster-Board kann an der Vorderseite der Hauptplatine befestigt werden.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Taster || T1-T4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R20, 21, 34, 35 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x1 Buchse, RM2,54 || P_T1, 2, 3, 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x1 Pin 90°, RM2,54 || P_T1, 2, 3, 4 || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
Die vier Taster schalten eine Widerstandkaskade, welche als Spannungsteiler fungiert. Dadurch können sie – analog zu den Tastern der [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] – mit nur einem ADC-Kanal gemessen werden.&lt;br /&gt;
Das Board kann entweder mit den vier Lötpunkten am vorderen, linken Rand des Multi-IO-Moduls angelötet werden, oder mittels vier rechtwinkliger Pins in vier Buchsen dort eingesteckt werden.&lt;br /&gt;
&lt;br /&gt;
===Bumper-Board===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bumperboard.jpeg|thumb|Das zur Multi-IO gehörende Bumperboard am Heck des RP6 befestigt. Aufmontiert sind die beiden Bumper sowie zwei analoge Sharp GP2D12-IR-Abstandssensoren.]]&lt;br /&gt;
Die Schraublöcher sind so angepasst, dass das Bumper-Board am Heck des RP6 angebracht werden kann.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Bumper|| || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 750Ω || R30, 31 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 270Ω || R23, 24 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 470Ω || R36 || 2&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, low-current, rot || LED7, 8 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x7, RM2,54, stehend oder 90° || P_BUMPER || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x4, RM2,54 || P_BUMPER1, 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 7-poliges Flachbandkabel ||  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 7-poliger Stecker, RM2,54 ||  || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der Sharp-Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Transistor BC807, SOT23-Package || Q1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1kΩ || R4|| 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_SHARP-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x3, RM2,54, für Sharp-Sensoren || P_SHARP1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung von Radarsensoren RSM1650=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Transistor BC807, SOT23-Package || Q1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1kΩ || R4|| 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_SHARP-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x3, RM2,54, für Sharp-Sensoren || P_RADAR1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der SRF02=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C3, 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x5, RM2,54, für SRF02 || P_SRF__1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
Die Bumper-Taster haben drei Pins: Eingang (5V), Ausgang wenn gedrückt, Ausgang wenn nicht gedrückt. Hier werden nur der Eingang und der Ausgang im gedrückten Fall verwendet. Dieser schaltet dann auf die LEDs und die Pins 2 (rechts) und 3 (links) von P_BUMPER durch. Die LEDs können zusätzlich über den IO-Kanal angesprochen, also geschaltet werden (analog zur [[RP6]](v2) BASE) .&lt;br /&gt;
Es können zwei Sharp-Abstandssensoren angebracht werden, zwei Radar-Abstandssensoren oder zwei SRF02. Es werden dann nur die jeweiligen Kondensatoren und Pinreihen benötigt.&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der Sharp-Sensoren GP2Dxx=====&lt;br /&gt;
Werden die Sharp-Sensoren verwendet, sind die Kondensatoren C36 (100nF) und C37 (10uF) anzubringen sowie der Transistor Q1 (BC807) und der zugehörige Widerstand R4 (1kΩ). Die Sensoren können an den 1x3-Pinreihen P_SHARP1 und 2 angesteckt oder angelötet werden. Die Sharps können durch Jumper J_SHARP-ON oder durch den Transistor geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=====Verwendung von Radar-Sensoren RSM1650=====&lt;br /&gt;
Werden die Radar-Sensoren verwendet, sind die Kondensatoren C36 (100nF) und C37 (10uF) anzubringen sowie der Transistor Q1 (BC807) und der zugehörige Widerstand R4 (1kΩ). Die Sensoren können an den 1x3-Pinreihen P_Radar1 und 2 angesteckt oder angelötet werden. Die Radarsensoren können durch Jumper J_SHARP-ON oder durch den Transistor geschaltet werden. Die dreipoligen Stiftleisten für die Radarsensoren haben leider eine etwas andere Belegung (VCC-Signal-GND) als die Sharp-Sensoren (VCC-GND-Signal) .&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Leider haben diese Radarsensoren keinen eingebauten Verstärker.&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung für so einen Verstärker findet ihr [http://www.jokesoft.de/weidmann/index.php?option=com_content&amp;amp;view=section&amp;amp;layout=blog&amp;amp;id=17&amp;amp;Itemid=21 HIER]. Zu kaufen gibts das dann [http://s164863055.e-shop.info/shop/article_ART0006/Radarsensor-165-inkl.-Verst%C3%A4rkung-(73-dB).html?sessid=i3esovGNRhZtFaDorAQGpYddJY6il5knlqkgDXpJXs5XQHXTA27r12wr3rhlXqRE&amp;amp;shop_param=cid%3D1%26aid%3DART0006%26 HIER].&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der SRF02=====&lt;br /&gt;
Werden die SRF02 verwendet, können diese an P_SRF__1 und 2 angesteckt oder angelötet werden. Die Kondensatoren C3 und 4 (100nF) sind zu verwenden.&lt;br /&gt;
&lt;br /&gt;
====Anschluß auf Hauptplatine====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Anschluss_Bumper.jpeg|thumb|So erfolgt der Anschluss des Bumperboards auf der Hauptplatine. Das rote Kabel ist VCC (=5V).]]&lt;br /&gt;
Das Board kann mit einem 7-poligen Flachbandkabel am Multi-IO-Modul angesteckt werden. Dort kann via Jumper JP1 und JP2 gewählt werden, ob digitale (SRF02 via I2C) oder analoge Sensoren (SharpGP2D via ADC) benutzt werden. Die Verwendung von analogen Sensoren geht nur mit dem Modul [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]], da hier die ADC-Kanäle PF3 und PF4 des 14-poligen ADC-Wannensteckers verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Befestigt werden kann das Board mit zwei M3-Schrauben am Heck des RP6. Dafür benötigst du noch zwei Distanzbolzen mit M3-Gewinde und zugehörige Muttern (analog zur Befestigung des originalen Bumper-Boards auf der Vorderseite des Rp6). Diese kannst du von Innen am RP6 befestigen und danach das Bumper-Board anbringen.&lt;br /&gt;
&lt;br /&gt;
===Liniensucher-Board===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
&lt;br /&gt;
=====Für Verwendung von 3 Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| CNY70 von Vishay || IC8-10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R45, 46, 18 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15Ω || R57 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R15 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 47kΩ || R47 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, gelb || LED9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C28, 29, 30 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Transistor IRF5210, SO220-Package || Q9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x8, RM2,54, stehend oder 90° || P_CNY_ALL1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-poliges Flachbandkabel ||  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x8-poliger Stecker, RM2,54 || Anschluss am Liniensucher-Board || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x4-poliger Stecker, RM2,54 || Anschluss am Multi-IO-Board || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Zusätzlich für die Verwendung von 5 Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| CNY70 von Vishay || IC11-12 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R19, 43 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 68Ω || R56 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C6, 7 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_CNY || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Liniensucher-Board.jpeg|thumb|Das Liniensucher-Board mit den 5 CNY70-Reflexoptokopplern und dem IRF5201-Transistor]]&lt;br /&gt;
Das Board besitzt drei CNY70 (L, M, R = IC8-10) der Firma Vishay sowie zwei weitere, durch Jumper zuschaltbare (L1 = IC11, R1 = IC 12). Die Spannungsversorgung (5V) kann durch einen Transistor (Q9) geschaltet werden. Eine LED (LED9) zeigt den Status On/Off an.&lt;br /&gt;
Die Beschriftete Seite der CNY70 muss ihre AUsrichtung zur dickeren Linie des Bestückungsdrucks haben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Reflexoptokoppler CNY70 können gut zur Linienerkennung (hell/dunkel) eigesetzt werden. Siehe dazu [[CNY70]].&lt;br /&gt;
&lt;br /&gt;
====Anschluß auf Hauptplatine====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Anschluss_Liniensucher.jpeg|thumb|Anschluss des Liniensucher-Boards auf der Hauptplatine]]&lt;br /&gt;
Das Board kann durch ein 8-poliges Flachbandkabel auf dem Multi-IO-Modul angesteckt werden. Die Sensoren R1 und L1 können dabei nur mit dem M256-Modul verschaltet werden (freie ADC-Kanäle PF2 und PF3). Die Sensoren L, M und R können durch Jumper JP4 auf die ADC-Pins ADC_1, ADC_3 und ADC_5 gelegt werden (Pins 1, 3 und 5 des 10-poligen ADC_Mxxx-Wannensteckers).&lt;br /&gt;
Man benötigt also ein 8-poliges Flachbandkabel sowie einen 1x8-Stecker (RM2,54mm) und einen 2,4-Stecker (RM2,54mm). Die Pinbelegung ist dann wie im Bestückungsdruck dargestellt.&lt;br /&gt;
&lt;br /&gt;
Die Löcher zur Befestigung entsprechen dem Abstand der Löcher auf der originalen Front-Bumperplatine des RP6, um hier Möglichkeiten zur Befestigung zu schaffen.&lt;br /&gt;
&lt;br /&gt;
===Radio-Board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| SI4735 im SSOP24-Package || U2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3,5mm Stereo-Buchse || X2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Quarz, 32.768kHz, TC26H-Package || Q5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| TDA7050-NF-Amplifier, DIL8-Package || IC4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C16, 25, 32 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 47uF || C40, 42 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Spule SMD, C0402-Package, 180nH || L1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Spule SMD, C0402-Package, 4,7uH || L2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 220nF || C8 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 33pF || C20 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 18pF || C19 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 470nF ||C23  || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 22pF || 18 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 100nF || 24 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 0402-Package, 22kΩ || R29 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Potentiometer SMD, 3223G-Package, 22kΩ || R27, 28 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206-Package || LED2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x4, RM2,54 || P_RADIO || 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54 || L-R-OUT, J_F-ANT, J_AM, P_GPIO || 4&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x1, RM2,54 || P_ANT || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-poliges Flachbandkabel || || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-poliger Stecker, RM2,54 || || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Das Radio-Board besitzt einen digitalen I2C-Radioempfänger (auf 3,3V-Pegel!!! ) U1 und einen Verstärker IC4. Eine Stab- oder Draht-Antenne kann an P_ANT angesteckt werden. Diese Antenne dient dann hauptsächlich dem FM-Empfang (UKW). Wird Jumper J_AM geschlossen, kann diese Antenne auch für den AM-Empfang (LW, MW, KW) mit genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Man kann aber für die AM-Bereiche auch eine separate Ferrit-Antenne an J_F-ANT anschließen. Dann muss der Jumper J_AM offen bleiben.&lt;br /&gt;
&lt;br /&gt;
An der Buchse X2 können 3,5mm-Stereo-Kopfhörer (oder Lautsprecher) eingesteckt werden. An den Potentiometern R27 und 28 können die Lautstärken links und rechts eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
An den beiden Pins der Pinreihe P_GPIO können die beiden GPIOs 1 und 2 (3,3V-Pegel!) des Empfängers U1 genutzt werden.&lt;br /&gt;
&lt;br /&gt;
An den Pins der Pinreihe L-R-OUT können die Signale für rechts und links abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über die mit „0“ und „1“ bezeichneten Pads kann das I2C-Adressbit des SEN-Ausgangs des Empfängers gewählt werden. Hier einfach eine Überbrückung zu „0“ oder „1“ einlöten, wenn gewünscht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Da leider die Löcher für die Stereobuchse etwas zu klein sind, muss diese oben auf die Löcher bzw. die Pads gelötet werden.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Sicherungshalter 20x5mm || F1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Sicherung 20x5mm || F1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Schalter || S1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Schalter oder Jumper, 2x1 Pins, RM2,54 || S2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x2-Jumper, RM2,54 || P_UB || 1&lt;br /&gt;
|-&lt;br /&gt;
| Buchse 2mm/2,5mm || B1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5V-Regler 78x5, TO220- oder TO92-Package || U1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED low current, 3mm || LED1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 820 Ohm || R1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Diode || D1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Bei Bedarf: Jumper, 2x1 Pins, RM2,54 || J_UB, J_U-RP6, J_VCC || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stromversorgung.jpeg|thumb|]]&lt;br /&gt;
Ein externer Akku kann an die Pins P_UB angeschlossen werden (auf Polung achten!). Um ihn zu laden, kann ein Ladegerät an Buchse B1 angeschlossen werden, wobei dafür automatisch die Platine vom Akku getrennt wird.&lt;br /&gt;
&lt;br /&gt;
Es ist auch möglich, einen Akku oder ein Netzgerät an B1 anzuschließen. Um dafür die genannte Trennung der Platine zu überbrücken, kann der Schalter S2 bzw. der dort angebrachte Jumper diese Verbindung herstellen.&lt;br /&gt;
&lt;br /&gt;
Der Schalter S1 schaltet die Batteriespannung entweder des externen Akkus oder des RP6-Eigenen Akkus zum 5V-Regler U1 (jeder Regler der Baureihe 78x5 ist möglich)  durch. Die dickere Linie auf dem Bestückungsdruck zeigt die Kühlseite des 78x5 an. Sie muss also in Platinenmitte zeigen. Möchte man den Akku des RP6 verwenden, muss hierfür Jumper J_U-RP6 gesteckt sein.&lt;br /&gt;
&lt;br /&gt;
Die LED LED1 zeigt an, ob der 5V-Regler U1 in Betrieb ist.&lt;br /&gt;
&lt;br /&gt;
'''ACHTUNG''': ''Es ist auch möglich, den RP6 mit dem am Multi-IO-Modul angeschlossenen externen Akku zu betreiben. Dafür muss Jumper J_UB gesteckt sein und es darf kein Akku im RP6 verbaut sein! Ansonsten können Bauteile und Akkus Schaden nehmen!&lt;br /&gt;
&lt;br /&gt;
''Des Weiteren können die meisten Bereiche (NICHT der Servobereich) mit der 5V-Versorgung des RP6 versorgt werden. Dafür den Jumper J_VCC einstecken, ein weiterer 5V-Regler auf dem Multi-IO-Modul ist dann nicht notwendig. Jedoch wird empfohlen, diesen Jumper nicht zu setzen, sondern einen eigenen 5V-Regler für dieses Modul zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Die Sicherung F1 sollte mindestens 3A zulassen (je nach Anforderung: werden keine Servomotoren verwendet, kann auch eine kleinere Sicherung verwendet werden).&lt;br /&gt;
&lt;br /&gt;
Die Diode D1 lässt einen Stromfluss erst zu, wenn ein Akku falsch gepolt eingesteckt wird. Dann kommt es durch die Diode zum Kurzschluss und die Sicherung F1 verhindert Schäden an der Hardware.''&lt;br /&gt;
&lt;br /&gt;
===USRBUS===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 14polige Wannenbuchse || SV_USRBUS1,2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die 14 Pins des USRBUS sind nicht belegt und stehen zur freien Verfügung. Durch sie kann man Signale des Multi-IO-Moduls mit anderen Modulen austauschen.&lt;br /&gt;
&lt;br /&gt;
Der USRBUS liegt direkt an den Pins des I2C-LED-Treibers, wodurch die Output-Signale dieses Treibers direkt weitergeleitet werden können.&lt;br /&gt;
&lt;br /&gt;
===XBUS===&lt;br /&gt;
&lt;br /&gt;
Der XBUS verbindet wichtige Leitungen von Platine zu Platine, so z.B. GND, Batteriespannung, VCC (5V), Interruptleitungen, I2C-Bus.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 14polige Wannenbuchse || SV_XBUS1,2 || 2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Leitungen des XBUS sind analog zu den anderen RP6-Modulen. Es werden lediglich die I2C-Leitungen, der Int1, GND und (bei Bedarf) die Batteriespannung verwendet.&lt;br /&gt;
&lt;br /&gt;
Es sind diverse Pinherausführungen für die I2C-Leitungen auf dem Multi-IO-Modul vorhanden.&lt;br /&gt;
&lt;br /&gt;
===Der 3,3V-I2C-Bus===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| BSN20, SOT-23-Package || Q6, 11 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 4,7kΩ || R67, 68, 70 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 2,2kΩ || R71 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R69 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 470Ω || 36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C13, 14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 470pF || C12 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3,3V-Regler MIC5219-3.3BM5 , SOT23-5-Package || IC2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-Jumper, RM2,54 || J_INT_ON, J3_I5, J3_SDA, J3_I3, J_3VON || 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Widerstände und Feldeffekttransistoren dienen als Pegelwandler für die Leitungen des I2C (SDA und SCL) und der Interruptleitung (Int1). Die Kondensatoren dienen der Abschirmung. Es muss darauf geachtet werden, dass der 3,3V-Regler MIC5219-3.3BM5 verwendet wird (oder ein identischer).&lt;br /&gt;
&lt;br /&gt;
Die ausgegebene Spannung des 3,3V-Reglers kann über einen ADC-Kanal gemessen werden. Siehe dazu den Punkt &amp;quot;Weitere Pinreihen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Die 3,3V-Spannung kann darüber hinaus über einen ADC-Kanal überwacht werden (über einen Widerstand R36, 470 Ohm, 1206-Package).&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_3VON schaltet den 3,3V-Regler an.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_INT_ON verbindet die Interrupt-Leitungen im 3,3V-Pegel mit der Int1-Leitung des XBUS.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_I5 schaltet einen Pullup-Widerstand (R71) zur Interrupt-Leitung auf der 5V-Seite zu.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_I3 schaltet einen Pullup-Widerstand (R67) zur Interrupt-Leitung auf der 3,3V-Seite zu.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_SDA schaltet einen Pullup-Widerstand für die SDA-Leitung zu.&lt;br /&gt;
&lt;br /&gt;
Nähere Erläuterungen finden sich im Netz, siehe Weblinks.&lt;br /&gt;
&lt;br /&gt;
===Temperatursensor===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Temperatursensor.jpeg|thumb|Der Temperatursensor TCN75A. Schwarzer Jumper: Stromversorgung. Grüne Jumper: Adressbits.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| TCN75-Temperatursensor, MSOP8-Package || U26 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C39 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || J_TCN_ADR || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-Jumper, RM2,54 || J_TCN || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor TCN75 kommt auch bei der [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] zum Einsatz. Er sendet seine Daten via I2C. Die Adressleitungen A0 und A2 können am Jumper J_TCN_ADR eingestellt werden. Das Adressbit A1 ist 0. Der Jumper J_TCN schaltet VCC an/aus.&lt;br /&gt;
&lt;br /&gt;
===16-facher PWM-Modulator===&lt;br /&gt;
&lt;br /&gt;
[[Bild:PWM-Modulator.jpeg|thumb|16-facher PWM-Modulator für den I2C-Bus. Blaue Jumper: Adressbits.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| PCA9685, TSSOP28-Package || U7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0805-Package, 10uF || C10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 0805-Package, 220Ω || R48-R55 || 8&lt;br /&gt;
|-&lt;br /&gt;
| LED low current, 3mm || SL1-4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 820Ω || R5-R8 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || J_S1 bis J_S8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1x8-Jumper, RM2,54 || P_PWM || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || JP_PWM_ADR || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der PCA9685 ist ein 16-facher PWM-Modulator via I2C. Seine Adressbits A0 und A1 sind am Jumper JP_PWM_ADR einstellbar, alle anderen Adressbits sind 0.&lt;br /&gt;
&lt;br /&gt;
Acht Pins (PWM0 bis 7) sind für Servos reserviert. PWM8 schaltet die Servospannung an/aus. PWM12 bis PWM15 sind für die Status-LEDs SL1 bis SL4 reserviert. PWM9 bis PWM11 sind frei.&lt;br /&gt;
&lt;br /&gt;
Beim Einlöten ist natürlich auf die Richtung zu achten! Der Markierungspunkt muss nach rechts unten, also zur Platinenmitte hin zeigen.&lt;br /&gt;
&lt;br /&gt;
===Servos der M32===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Servos_M32.jpeg|thumb|Anschlussmöglichkeit für bis zu acht Servos des RP6-M32-Moduls]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 10-polige Wannenbuchse || SV_SERVOSM32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x1-Jumper, RM2,54 || P_S_M32_5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3x8-Jumper, RM2,54 || P_S_M32_1-4 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Es ist möglich, mit Hilfe der Servolib (siehe Weblinks unten) acht Servos durch die [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] anzusteuern. Hierfür den 10-poligen Wannenstecker der M32 in SV_SERVOSM32 einstecken.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung für Servomotoren===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stromversorgung_Servos.jpeg|thumb|Die wichtigsten Teile der Servo-Stromversorgung mit einem LT1084CP-5]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| BUZ11 Transistor, TO220-Package || Q4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 100kΩ || R11 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R17 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R25 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, grün || LED10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator, E3,5-8-Package, 470uF || C11 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || J_SERVOS-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C50 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kühlrippen für ICs || - || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung eines LT1084CP-5 oder eines LT1084CT-5 als 5V-Regler=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| LT1084CP-5 im TO247-3-Package oder LT1084CT-5 im TO220-Package || IC1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C49 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 470uF oder 220uF || C51 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Potentiometer, PT-10-Package, 500Ω, liegend oder stehend || R26 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung eines 78x5 als 5V-Regler=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 78x5, TO220-Package || IC6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C49, 51 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Servospannung ist über den BUZ11 (Q4) schaltbar. Dieser kann durch einen Jumper J_SERVOS-ON überbrückt werden. Wird ein LT1084CP-5 oder ein LT1084CT-5 als 5V-Regler verwendet, müssen größere Kondensatoren eingebaut werden. Zusätzlich wird ein 500Ω-Potentiometer benötigt, über welche die Spannung im Bereich von etwa 5V bis 7,5V eingestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung eines einfachen 78x5 Reglers werden weniger Teile benötigt. Die Kondensatoren C49 und C51 können nur 100nF betragen. Außerdem sind Regler der 78x5-Reihe bedeutend billiger.&lt;br /&gt;
&lt;br /&gt;
Nachteile der 78x5er-Reihe sind die bedeutend geringere Leistungsumsetzung und die Servospannung kann hier nicht justiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei allen ICs gilt: Die dickere Linie auf dem Bestückungsdruck zeigt die Kühlseite des ICs (5V-Regler und BUZ11) an. Sie muss also beim BUZ11 und den höherwerigen Spannungsreglern zum Platinenrand zeigen, beim 7805 zur Platinenmitte.&lt;br /&gt;
&lt;br /&gt;
===Strom-Spannungs-Temperatur-Sensor===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| LTC2990, MSOP10-Package || U10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R2, 3, 9, 12, 14, 22 || 6&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 22kΩ || R13 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C41 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Shuntwiderstand, 0,05Ω, 5Watt || R10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || J_CURRENT_ADR || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Sensor U10 (Platinenunterseite) überwacht durch den Shunt-Widerstand (R10) den gesamten, von der Platine benötigten Strom, die Batteriespannung und die Versorgungsspannung der Servos. Darüber hinaus misst er seine eigene Temperatur.&lt;br /&gt;
&lt;br /&gt;
Über den Jumper J_CURRENT_ADR sind die Adressbits A0 und A1 einstellbar.&lt;br /&gt;
&lt;br /&gt;
===Echtzeit-Uhr===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Uhr.jpeg|thumb|Die Bauteile der Uhr DS1307. Man sieht den IC-Käfer, den Jumper (schwarz) für die Stromversorgung und den Uhrenquarz.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| DS1307, SOIC8-Package || IC3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C38 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Quarz, 32.768 kHz, TC26H-Package || Q3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Knopfzellenhalter, SN2032 || BAT1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || JP_RTC || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Diese Uhr (Real-Time-Clock, RTC) kann durch Jumper JP_RTC von VCC getrennt werden. Dann, oder aber wenn die Stromversorgung abgeschaltet wird, übernimmt die 3V-Knopfzelle für den Stand-By-Betrieb. Sie kann via I2C ausgelesen und gestellt werden.&lt;br /&gt;
&lt;br /&gt;
===Berührungssensor===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Berührungssensor.jpeg|thumb|Der Berührungssensor mit dem Timer-IC NE555]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| NE555, SO8-Package || IC14 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1MΩ || R58, 59 || 2&lt;br /&gt;
|-&lt;br /&gt;
| BC847, SOT23-Package || Q13, 14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 10uF || C31 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x1-Jumper, RM2,54 || J_NE || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Bei Berührung einer Antenne schaltet der Timerbaustein (IC14) den Output auf etwa 3V. Dies kann an einem ADC gemessen werden. Der Berührungssensor kann entweder auf PF3 des ADC_M256-Wannensteckers oder auf ADC1 (Pin 1) des ADC_Mxxx-Wannensteckers gemessen werden.&lt;br /&gt;
&lt;br /&gt;
Das Signal des Berührungssensors muss analog (nicht mit dem I2C-Bus) ausgelesen werden. Das Signal geht weiter an den Wahljumper (siehe unten) und kann dann auf den ADC_Mxxx-Wannenstecker oder auf dem ADC_M256-Wannenstecker weitergegeben werden.&lt;br /&gt;
&lt;br /&gt;
===Buzzer===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buzzer BMT1205XH7.5 || SG2 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Buzzer ist derselbe wie bei den Modulen [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] und [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]]. Er wird durch Pin 5 des IO_Mxxx-Wannensteckers gesteuert.&lt;br /&gt;
&lt;br /&gt;
Da leider kein geeignetes Datenblatt zu finden war, sind die Löcher leider nicht ganz richtig gesetzt. Das ist nicht weiter schlimm. Einfach die Pins des Buzzers etwas verbiegen, dann geht das. Und das tut dem Buzzer nichts!&lt;br /&gt;
&lt;br /&gt;
===Spannungsteiler===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Spannungsteiler.jpeg|thumb|Die Vorbereitung für Analoge Sensoren]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C26, C27 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206er-Package, Wert je nach Sensor || R41, R42 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 2x2, RM2,54 || P_UT || 1&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
An den Pins P_UT können analoge Sensoren angeschlossen werden, welche einen Spannungsteiler benötigen. Dies könnten z.B. zwei lichtsensitive Widerstände (LDRs) sein. Dafür müssen für R41 und R42 die nötigen Widerstände eingelötet werden. Diese liegen bei vielen LDRs z.B. bei 68kΩ.&lt;br /&gt;
Die Sensoren können nur in Verbindung mit dem M256-Modul verwendet werden, da sie an PF0 und PF1 des ADC_M256-Wannensteckers angeschlossen sind.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Leider ist mir hier ein Fehler unterlaufen. der auf dem Bestückungsdruck auf der Unterseite benannte C42 ist nicht C42, sondern C27!&lt;br /&gt;
&lt;br /&gt;
===EEPROM===&lt;br /&gt;
&lt;br /&gt;
[[Bild:EEPROM.jpeg|thumb|Das EEPROM des Typs 24LCxxx mit den drei Adress-Jumpern]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| I2C-EEPROM, DIL8-Package, 24LCxxx-Serie || IC5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| IC-Sockel, DIL8-Package || IC5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C43 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || J_EEP_A0-2 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
In den IC-Sockel (IC5) können diverse I2C-EEPROMs der 24LCxxx-Serie gesteckt werden.&lt;br /&gt;
Am Jumper J_EEP_A0-2 können die Adressbits A0, A1 und A2 gewählt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluß der anderen Boards===&lt;br /&gt;
&lt;br /&gt;
====Taster-Board====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Tasterboard_befestigt.jpeg|thumb|Das Tasterboard, mittels vier 90grad-Stiften am Multi-IO-Modul verlötet]]&lt;br /&gt;
Das Taster-Board kann an die linke Vorderseite des Multi-IO-Moduls aufgesteckt oder angelötet werden.&lt;br /&gt;
Statt dieses Boards können auch andere Tastaturen mit ADC an die dreipolige Stiftleiste P_TAST-EXT angesteckt werden.&lt;br /&gt;
&lt;br /&gt;
====Bumper-Board====&lt;br /&gt;
&lt;br /&gt;
Das Bumper-Board kann an der 7-poligen Stiftleiste P_BUMP angesteckt werden. Die Bumper-Ausgänge gehen dabei auf Pin 4 (L) und Pin 8 (R) des IO_Mxxx-Wannensteckers. Dafür müssen noch die Jumper bei diesen Pins gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Die analogen (Sharp-Sensoren) oder digitalen (I2C der SRF02) Sensorleitungen sind dieselben. Um das zu realisieren, müssen zwei Jumper gesetzt werden. Dies geschieht über JP2 und JP1. Hier kann man (siehe Platinenaufdruck) die Leitungen des Bumper-Boards wahlweise auf den I2C legen, oder auf PF3 und PF4 des ADC_M256-Wannensteckers.&lt;br /&gt;
&lt;br /&gt;
SDA des I2C liegt dabei auf einer Leitung mit dem Signal des linken Sharp-Sensors, SCL auf dem des rechten.&lt;br /&gt;
&lt;br /&gt;
====Liniensucher-Board====&lt;br /&gt;
&lt;br /&gt;
Das Liniensucher-Board kann mit einem 8-poligen Flachbandkabel an das Multi-IO-Modul gesteckt werden. Jedoch ist die Pinreihe am Liniensucher-Board einreihig (1x8), auf dem Multi-IO-Modul zweireihig (2x4). Dabei bitte die Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
====Radio-Board====&lt;br /&gt;
&lt;br /&gt;
Das Radio-Board hat keinen speziellen Anschluss. Da das Board aber auf 3,3V läuft und via I2C gesteuert werden kann, kann es mit der Pinreihe P_RADIO an den 3,3V-I2C-Bus auf dem Multi-IO-Modul angesteckt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschlussmöglichkeiten weiterer Sensoren===&lt;br /&gt;
&lt;br /&gt;
====DCF77-Funkuhr====&lt;br /&gt;
&lt;br /&gt;
[[Bild:DCF77.jpeg|thumb|50px|]]&lt;br /&gt;
&lt;br /&gt;
Diese kann an die Pinreihe P_DCF angesteckt werden. Zur Sicherheit wird ein Kondensator (100nF, SMD, 1206-Package, C35) empfohlen. Das Signal des DCF77 wird über Pin 1 des IO_Mxxx-Wannensteckers ausgelesen, wenn der Jumper bei Pin 1 geschlossen ist.&lt;br /&gt;
&lt;br /&gt;
====GPS-Modul====&lt;br /&gt;
&lt;br /&gt;
[[Bild:GPS.jpeg|thumb|Der Anschluss des GPS-Moduls erfolgt über 5 Pins]]&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C22 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 4,7kΩ || R39 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R40 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x5-Jumper, RM2,54 || P_GPS || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || J_GPS_5V || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || P_GPS1, J_GPS_TX || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das GPS-Modul Navilock NL-552ETTL kann an P_GPS angeschlossen werden und wird via UART ausgelesen. Dafür müssen die Pegel für Rx des GPS-Moduls jedoch angepasst werden, da das GPS auf 3,3V-Pegel liegt. Ein 5V-Pegel könnte das GPS-Modul beschädigen. Die ausgehenden Daten (Tx) des GPS-Moduls müssen dagegen nicht unbedingt angepasst werden, da UART auch 3,3V-Pegel akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_GPS_5V schaltet das GPS an.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_GPS_TX wählt den Tx-Pin des Master-Moduls ([[RP6]](v2) BASE, [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]], [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]]) aus: bei manchen ist dies der Pin 6 (Jumper muss links stecken), bei manchen der Pin 8 (Jumper muss rechts stecken).&lt;br /&gt;
&lt;br /&gt;
An P_GPS1 kann ein weiterer Mikrocontroller über UART direkt an Rx (mit Pegelwandler) und Tx des GPS-Moduls angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
====2D-Kompass====&lt;br /&gt;
&lt;br /&gt;
Dieses Modul kommuniziert über I2C und kann daher auf allen 5V-, GND- und I2C-Pins des Multi-IO-Modul angesteckt werden. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====3D-Kompass====&lt;br /&gt;
&lt;br /&gt;
Dieses Modul kommuniziert über I2C und kann daher auf allen 5V-, GND- und I2C-Pins des Multi-IO-Modul angesteckt werden. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====9D-Kompass====&lt;br /&gt;
&lt;br /&gt;
[[Bild:9D-3D-Kompass.jpeg|thumb|Anschluss der Kompassmodule]]&lt;br /&gt;
&lt;br /&gt;
Für den 9D-Kompass ist am unteren rechten Rand eine Pinreihe P_KOMPASS angebracht, an welcher das Kompassmodul direkt auf- oder angesteckt werden kann. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Luftfeuchtigkeits-Temperatur-Sensor====&lt;br /&gt;
&lt;br /&gt;
Dieser Sensor misst die Luftfeuchtigkeit und die Temperatur. Er kann über I2C ausgelesen werden und an der Pinreihe P_FEUCHTE an- oder aufgesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C21) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x4, RM2,54 || P_FEUCHTE ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Luftdrucksensor====&lt;br /&gt;
&lt;br /&gt;
Dieser Sensor kann an der Pinreihe P_LUFTDRUCK an- oder aufgesteckt werden. Da er 3,3V Versorgungsspannung und 3,3V-I2C benötigt, liegen diese hier an.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C34) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x6, RM2,54 || P_LUFTDRUCK ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SRF02-Abstandssensoren====&lt;br /&gt;
&lt;br /&gt;
Bis zu vier SRF02 können an die Pinreihen P_SRF1 und P_SRF2 angeschlossen werden. Pinbelegung siehe Platinenaufdruck.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C5) empfohlen.&lt;br /&gt;
&lt;br /&gt;
====Snake-Vision-Modul====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || P_SNAKE ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Snake-Vision-Modul kann an die Pinreihe P_SNAKE angeschlossen werden (auf Pinbelegung achten). Die Sensoren (rechts, links) sowie Taster und GND sind einfach an P_SNAKE anzuschließen.&lt;br /&gt;
&lt;br /&gt;
Für die Versorgungsspannung gibt es drei Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
Überbrückung des Spannungsreglers und der Dioden des Snake-Vision-Moduls und Anschluss von VCC des Snake-Vision-Moduls an VCC des Multi-IO-Moduls. Der Umbau wird im RP6-Forum beschrieben, siehe Weblinks unten.&lt;br /&gt;
&lt;br /&gt;
Die zweite Möglichkeit entspricht der Ersten, mit der Ausnahme, dass VCC des Snake-Vision-Moduls an IO des Multi-IO-Moduls angeschlossen wird. Dadurch kann das Snake-Vision-Modul über einen High-Side-Switch (Q2 und R16) an Pin 4 des IO_Mxxx-Wannensteckers an- und abgeschaltet werden. &lt;br /&gt;
&lt;br /&gt;
Die dafür benötigten Teile sind:&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Transistor SMD, 1206-Package, BC807 || Q2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Widerstand SMD, 1206-Package, 1kΩ || R16 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die letzte Möglichkeit benötigt keinen Umbau des Snake-Vision-Moduls, da an seinen Eingang OC2 eine Ladungspumpe angeschlossen wird. Schließe dafür VCC des Snake-Vision-Moduls an VCC des Multi-IO-Moduls und OC2 an IO. Des Weiteren wird ein Jumper J_OC2 benötigt, welcher den nur hier notwendigen Widerstand R33 als Pulldown hinzuschaltet. Der Jumper J_OC2 sollte also geschlossen sein.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Widerstand SMD, 1206-Package, 2,2..4,7kΩ || R33 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x2-Jumper, RM2,54 || J_OC2 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere Pinreihen====&lt;br /&gt;
* Am vorderen linken Rand kann man bis zu 10 Pins anbringen. Belegung siehe Platinenaufdruck&lt;br /&gt;
* Hinter dem 78x5-5V-Regler (U1) kann man auf 3x6 Pins VCC (die linken sechs Pins), GND (die mittleren sechs Pins) und die Batteriespannung (die rechten sechs Pins) abgreifen.&lt;br /&gt;
* Am Jumper P_5V-I2C kann man 5V, GND, Int1 (5V-Pegel) und die I2C-Leitungen (5V-Pegel) abgreifen.&lt;br /&gt;
* Am Jumper P_3V3-I2C kann man 3,3V, GND, Int1 (3,3V-Pegel) und die I2C-Leitungen (3,3V-Pegel) abgreifen.&lt;br /&gt;
* Vor dem 10-poligen Wannenstecker SV_IO_MXXX  befindet sich eine zweireihige Stiftleiste JP_IO1,2. An JP_IO 1 liegen alle auf der Platine verwendeten Signale für den Wannenstecker SV_IO_MXXX an. An JP_IO2 sind die Pins des Wannensteckers SV_IO_MXXX direkt herausgeführt. Dadurch können diese Pins auch auf andere Weise verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wünscht man eine Verwendung, wie in dieser Anleitung empfohlen, müssen nur alle 9 Jumper gesetzt werden.&lt;br /&gt;
Da Pin 2 jedoch nur von der M32 angesprochen werden kann (auf anderen Modulen ist dieser Pin auf GND) und Pin 9 nur von M32 oder der M128, liegt an beiden der Transistor zum Schalten des Liniensucher-Boards. Damit kann dieses Board sowohl von der M32 (Pin 2 oder Pin 9) als auch von der M256 (Pin 9) aus geschaltet werden. Lediglich die M128 kann diesen Transistor nicht schalten.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Natürlich steht es jedem frei, andere Pins des Wannensteckers mit der IO-Leitung des Liniensucher-Boards zu verschalten.&lt;br /&gt;
&lt;br /&gt;
* Ähnlich wie im gerade genannten Fall ist es auch beim 10-poligen Wannenstecker SV_ADC_MXXX. Jedoch sind hier manche Pins (1, 3, 5 und 6) direkt auf einen Wähl-Jumper JP1,2,4 gelegt, wo sie mit Jumpern weiter auf Signale gelegt werden können. Nur Pin 6 ist nicht weitergeführt und steht zur eigenen Verfügung, ist jedoch nur bei dem M128-Modul  als ADC verwendbar, auf allen anderen Modulen liegt hier GND an.&lt;br /&gt;
* Vor dem 14-poligen Wannenstecker SV_ADC_M256 liegt eine weitere solche doppreihige Stiftleiste: JP_ADIO. Dieser verbindet wieder durch setzen der Jumper die Signale der Platine mit den Pins des Wannensteckers.&lt;br /&gt;
* Der Jumper J_WAHL, eine 2x6-Stiftleiste, kann dazu verwendet werden, einige Signale auf verschiedene Arten weiterzuleiten:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Wahljumper.jpeg|thumb|]]&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Eigehendes Signal''' || '''1. Möglichkeit''' || '''2. Möglichkeit'''&lt;br /&gt;
|-&lt;br /&gt;
| Sharp '''links''' bzw. I2C der SRF02 || '''PF4''' des ADC_M256 (für Sharp-Verwendung) || '''SCL''' des I2C (für SRF02-Verwendung)&lt;br /&gt;
|-&lt;br /&gt;
| Sharp '''rechts''' bzw. I2C der SRF02 || '''PF3''' des ADC_M256 (für Sharp-Verwendung) || '''SDA''' des I2C (für SRF02-Verwendung)&lt;br /&gt;
|-&lt;br /&gt;
| Messung der '''3,3V'''-Spannung über Widerstand R36|| '''PF4''' des ADC_M256 || '''Pin 3''' des ADC_Mxxx&lt;br /&gt;
|-&lt;br /&gt;
| NE555-'''Berührungssensor''' || '''PF3''' des ADC_M256 || '''Pin 1''' des ADC_Mxxx&lt;br /&gt;
|-&lt;br /&gt;
| CNY70-L ('''linker''' der drei Sensoren) || '''Pin 1''' des ADC_Mxxx || -&lt;br /&gt;
|-&lt;br /&gt;
| CNY70-M ('''mittlerer''' der drei Sensoren) || '''Pin 3''' des ADC_Mxxx || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
&lt;br /&gt;
Dies soll eine Sammlung mit den bisher bekannten Problemen sein, um sich künftig bei ähnlichen Problemen schneller zurecht zu finden.&lt;br /&gt;
&lt;br /&gt;
===Taster des Tasterboards sind nur einzeln abzufragen===&lt;br /&gt;
&lt;br /&gt;
'''Das Problem''': Leider sind die Taster des Tasterboards nur einzeln abzufragen, da sie sich gegenseitig nach unten bedingen. Das heißt: Wer Taster 1 und drei drückt, wird nur Taster 1 registrieren. &lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': Eine Lösung dafür gibt es nicht direkt, aber man kann anstatt des Tasterboards jede andere analoge Tastatur an die drei Pins hinter dem Tasterboard anschließen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LTC2990-Strom-Spannungs-Temperatursensor===&lt;br /&gt;
&lt;br /&gt;
Des öfteren kam es vor, dass dieser Sensor keine oder nur unvernünftige Werte ausgab. So z.B. in diesem Output:&lt;br /&gt;
&lt;br /&gt;
 Temperature:  0.0Â°&lt;br /&gt;
 BAT Current:  0.0mA&lt;br /&gt;
 BAT Voltage:  0.0V&lt;br /&gt;
 SERVO Volt.:  0.0V&lt;br /&gt;
 VCC Voltage:  2.5V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Der Grund''': meist lag es an einem kleinen Kontaktproblem eines der Pins, vermutlich GND- oder VCC-Pin.&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': einfach mit einem Lötkolben (Temperatur etwa 350 Grad C) vorsichtig über die Beinchen dieses ICs streichen, ohne weiteren Lötzinn zu verwenden. Dadurch wird der schon aufgebrachte Lötzinn neu geschmolzen und kann wieder Kontakte herstellen.&lt;br /&gt;
&lt;br /&gt;
===Falscher 3,3V-Regler verwendet===&lt;br /&gt;
&lt;br /&gt;
Wer einen 3,3V-Regler des Typs SPX3819 auf seinem Board hat anstelle des MIC5219-3.3YMS, der wird feststellen, dass die die Regleung auf 3,3V nicht oder nur schlecht funktioniert.&lt;br /&gt;
&lt;br /&gt;
'''Der Grund''': Der SPX3819 arbeitet mit Hilfe eines Spannungsteilers, bestehend aus zwei Widerständen R1 und R2. Die ausgegebene Spannung definiert sich nach folgender Formel:&lt;br /&gt;
&lt;br /&gt;
V(out) = 1,235 * ( 1 + ( R1 / R2 ) )&lt;br /&gt;
&lt;br /&gt;
Somit ergeben sich gute Werte für R1 = 36kOhm und R2 = 22kOhm.&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': Nimm diese zwei SMD-Widerstände im 0805er Package. Löte R1 (36kOhm) auf die beiden einzelnen Beinchen des 3,3V-Reglers und R2 (22kOhm) auf den C12. Ob du C12 vorher ausbaust, oder drinnen lässt, ändert nichts.&lt;br /&gt;
&lt;br /&gt;
Wer im E12er Regime bleiben möchte kann einen 68k Ohm (R1) und einen 39k Ohm (R2) nehmen, dann kommen 3,38V heraus.&lt;br /&gt;
&lt;br /&gt;
===Verwendung eines LT1084===&lt;br /&gt;
&lt;br /&gt;
[[Bild:LT1084CT.jpeg|thumb|91-Ohm-Widerstand zwischen &amp;quot;Adj&amp;quot; und &amp;quot;Out&amp;quot; eines LT1084CT]]&lt;br /&gt;
&lt;br /&gt;
Auch dieser Spannungsregler kann für die Servos verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Dafür benötigt man einen 91 Ohm widerstand R1 (bedrahtet oder SMD 1206) und das 500 Ohm-Standardpotentiometer R2, welches auch bei den anderen Spannungsreglern zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
R1 lötet man zwischen die Beinchen Adj und Out des LT1084.&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich die Outputspannung zu&lt;br /&gt;
&lt;br /&gt;
V(out) = 1,25 * ( 1 + R2 / R1 )&lt;br /&gt;
&lt;br /&gt;
V(out) ist dann von etwa 2 bis etwa 8 Volt regelbar. Verwendet man also nur den oberen Einstellbereich des Potis, kann man wie üblich zwischen 5V und 7,5V regeln, man muss nur etwas besser aufpassen, dass man nicht zu hohe Spannungen ansetzt.&lt;br /&gt;
&lt;br /&gt;
1.       Poti R2 auf Maximalstellung 500 Ohm, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 500/91) = 8,11V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.       Poti R2 auf niedriger Stellung 50 Ohm, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 50/91) = 1,94V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.       Potistellung R2 bei Ausgangsspannung von 5V, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 273/91) = 5,0V è Also 273 Ohm (etwas über Mittelstellung 250 Ohm)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.       Potistellung R2 bei Ausgangsspannung von 7,5V, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1+ 455/91) = 7,5V è Also 455 Ohm (fast max. Stellung)&lt;br /&gt;
&lt;br /&gt;
===Pins zu eng für manche Bauteile===&lt;br /&gt;
&lt;br /&gt;
'''Welche Teile?''' Dieses Problem betrifft eigentlich nur die Stereobuchse des Radiomoduls, den Shunt-Widerstand zur Strommessung und den großen 5V-Regler (LT1084CP-5).&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''' Bitte NIEMALS versuchen, die Löcher aufzubohren oder dergleichen. Das beschädigt die Platine, im schlimmsten Fall irreparabel.&lt;br /&gt;
&lt;br /&gt;
Die Stereobuchse kann man einfach auf die Pins Löten, anstatt sie in die Pins zu stecken. Das hält gut genug.&lt;br /&gt;
&lt;br /&gt;
Für den 5V-Regler hat Dirk folgende Lösung präsentiert: zuerst die Beinchen ganz oben am IC mit Silberdraht (nicht isoliert) umwickeln, sodass die drei Pins kurzgeschlossen sind. Dies vermeidet Aufladungen eines Pins beim Feilen der Beinchen. Dann die Beinchen in der gewünschten Länge abzwicken (etwa 3mm unterhalb der Verbreiterung). Nun die beiden äußeren Pins VON AUßEN mit einer Metall-Flachfeile schmaler feilen. Danach den mittleren Pin abwechselnd von beiden Seiten feilen.&lt;br /&gt;
&lt;br /&gt;
Beim Einlöten darauf achten, dass der GND-Pin des Reglers nicht zu dicht am Vorwiderstand der Servo-LED (R25) sitzt, um hier Kurzschlüsse zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
Den Shunt-Widerstand entweder vorher auf die richtige Länge kürzen und dann sanft in die Löcher Zwängen, oder die Beine etwas schmälern, z.B. durch Feilen.&lt;br /&gt;
&lt;br /&gt;
===Beschriftung===&lt;br /&gt;
Diese Probleme sind nicht wirklich wichtig, sollen aber nicht unerwähnt bleiben!&lt;br /&gt;
&lt;br /&gt;
- Die Beschriftung auf dem Radioboard sagt, dass man dort 5V anschließen kann. Das geht leider nicht, da das Modul nur auf 3,3V läuft! Bitte daran denken: I2C (SDA und SCL) dürfen nur an den 3,3V-I2C des Multi-IO-Boards und die Spannungsversorgung darf nur mit 3,3V geschehen. Auch alle anderen Ein- und Ausgänge (GPIO1, GPIO2, R und L) dürfen nur im 3,3V-Pegel angesprochen werden, sollte man sie benötigen.&lt;br /&gt;
&lt;br /&gt;
- An den vorbereiteten Spannungsteilern &amp;quot;LDR&amp;quot; ist ein Kondensator falsch beschriftet: Nicht C42 ist richtig, sondern C27, ein 1206er 100nF-Kondensator. Auch ist es hier besser, die 100nF-Kondensatoren auf der Oberseite zu verlöten (dort, wo die beiden Widerstände R41 und R42 sitzen) und diese beiden Widerstände an die Kondensatorplätze auf der Unterseite zu verlöten. Denn bei voll bestückter Platine wird es nachträglich schwierig, die Widerstände ein- oder umzulöten.&lt;br /&gt;
&lt;br /&gt;
- C28 am Liniensucher-Board ist nur mit einem &amp;quot;C&amp;quot; beschriftet. Ist aber ein &amp;quot;normaler&amp;quot; 100nF-Kondensator, 1206er Package.&lt;br /&gt;
&lt;br /&gt;
- R46 auf dem Liniensucher-Board ist nur zweimal mit seinem Wert (15kOhm) beschriftet, nicht aber mit seinem Namen &amp;quot;R46&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
- Die Bumperwiderstände R23 und R24 sind nur mit 470 Ohm-Widerständen zu bestücken, wenn man keine Low-Current-LEDs an den Bumpern möchte, dann kann man diese LEDs aber nicht mehr mit dem uC ansprechen. Will man sie auch vom uC her an/abschalten, müssen R23 und R24 mit 270-Ohm-Widerständen (1206er Package) bestückt werden.&lt;br /&gt;
&lt;br /&gt;
- Der &amp;quot;große&amp;quot; Kondensator (470uF, E3,5-8-Package, Elektrolyt) ist nicht mit seiner Nummer beschriftet: Es ist der C11.&lt;br /&gt;
&lt;br /&gt;
- R1 und L1 auf dem Liniensucher-Board sind falsch herum beschriftet.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
&lt;br /&gt;
Nicht alle der in diesen Listen aufgeführten Teile werden für den Bau benötigt. Bitte dafür die Anleitung genau lesen. Man muss nicht die gesamte Platine aufbauen, man kann auch nur einen Teil der Schaltung realisieren.&lt;br /&gt;
Für das Löten lese bitte eine Lötanleitung und übe das Löten vorher. Ansonsten können Teile durch den zu langen Kontakt mit dem Lötkolben überhitzen oder es kann zu Kurzschlüssen auf der Platine kommen.&lt;br /&gt;
Die angegebenen Bestellnummern sind nur ein Vorschlag, wo die Teile gekauft werden.&lt;br /&gt;
&lt;br /&gt;
Die Teileliste samt Bestellnummern der Shops und Preisen wird als MS Excel-Sheet veröffentlicht, Lieferanten findet man unter [[Bezugsquellen]].&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[RP6]]&lt;br /&gt;
* [[RP6 - Programmierung]]&lt;br /&gt;
* [[RP6v2]]&lt;br /&gt;
* [[RP6 Kamera - Mitmach-Projekt]]&lt;br /&gt;
* [[RP6v2 I2C-Portexpander]]&lt;br /&gt;
* [[RP6v2 USB-RS232-Adapter]]&lt;br /&gt;
* [[RP6v2 Orientierung]]&lt;br /&gt;
* [[RP6 Multi IO Projekt - Software]]&lt;br /&gt;
* [[CCRP5]]&lt;br /&gt;
* [[Yeti]]&lt;br /&gt;
* [[Asuro]]&lt;br /&gt;
* [[C't-Bot]]&lt;br /&gt;
* [[Bezugsquellen]]&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [https://www.dropbox.com/s/od3z74sc0yy7h7j/RP6-MultiIO_Daten_Forum.zip?dl=0 HIER] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.'''&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=servo+lib Servo-Lib für M32 von Dirk]&lt;br /&gt;
&lt;br /&gt;
[http://www.rn-wissen.de/index.php/RP6v2_Orientierung Orientierungs-Mitmach-Projekt von Dirk]&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/59387-RP6%28v2%29-Experimentierplatine-Orientierung Mitmachprojekt Orientierung]&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/47843-Projekt-RP6-mit-Snake-Vision Umbau des Snake Vision für RP6]&lt;br /&gt;
&lt;br /&gt;
[http://www.rn-wissen.de/index.php/RP6v2_I2C-Portexpander/ EEPROM]&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
--[[Benutzer:Fabian|fabqu]] 21:30, 17. Feb 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Dirk|Dirk]] 08:48, 19. Feb 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Induktive_Ladestation_f%C3%BCr_den_RP6&amp;diff=26039</id>
		<title>Induktive Ladestation für den RP6</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Induktive_Ladestation_f%C3%BCr_den_RP6&amp;diff=26039"/>
				<updated>2015-01-18T17:55:27Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Verwendetes System: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:   Ladestation neben RP6-1.JPG|right|Ladestation neben RP6]]&lt;br /&gt;
=== Induktive Ladestation für RP6 ===&lt;br /&gt;
&lt;br /&gt;
====Verwendetes System:====&lt;br /&gt;
&lt;br /&gt;
[http://rn-wissen.de/wiki/index.php/RP6 RP6-V1], [http://rn-wissen.de/wiki/index.php/RP6#RP6_CONTROL_M32_Platine M32], [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt MultiIO], LCD anzeige 4x20&lt;br /&gt;
&lt;br /&gt;
====Beweggründe, Ziele:====&lt;br /&gt;
&lt;br /&gt;
Als Beweggrund war für mich der Traum ausschlaggebend einen wirklich autonomen Roboter zu haben. Immer wenn der RP6 am Ladegerät oder einem anderen Kabel hing, hatte ich das Gefühl ihn an einem Pflock angebunden zu haben. Oder – etwas übertrieben - die Vorstellung, die NASA hätte die Kommunikation mit den Mondlandefähren per Kabel realisiert. Ein Albtraum...&lt;br /&gt;
&lt;br /&gt;
Alles begann schon beim [[Asuro]], dieser erwies sich für notwendige Um – und Aufbauten als zu klein und für ungeschickte Lötversuche als zu anfällig.&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/27587-projekt-asuro-sucht-selbst%C3%A4ndig-seine-ladestation?highlight=ladestation projekt: asuro sucht selbständig seine ladestation]&lt;br /&gt;
&lt;br /&gt;
Die Ladestation lädt den RP6 seit Februar 2014 zuverlässig im abgeschalteten wie im eingeschalteten Zustand auf 8,2V auf. Diese Anleitung beschreibt den Endzustand des Projektes, ohne groß auf die Sackgassen und Irrwege aus der Entwicklungszeit einzugehen. Wenn aber irgendwo Bauteile oder Programmzeilen auftauchen, die ohne Hinweise auf diesen Prozess unverständlich wären, versuche ich detaillierter auf das Thema einzugehen. Wer den ganzen Weg nachverfolgen will (eigentlich empfehlenswert) kann es hier tun: [http://www.roboternetz.de/community/threads/62934-RP6-Projekt-induktive-Ladestation?highlight=RP6-Ladestation: RP6-Ladestation]&lt;br /&gt;
&lt;br /&gt;
Last but not least – es soll eine Anleitung vom Anfänger für Anfänger sein, ich hoffe ich kann diesem Anspruch gerecht werden. Das Wort „einfach“ habe ich versucht zu vermeiden, für mich war es auch nicht einfach. An einigen Punkten war ich nahe dran aufzugeben, aber letztendlich wollte ich die Ladestation haben, egal als wie aussichtslos dieser Plan manch Anderem und manchmal auch mir erschien... &lt;br /&gt;
&lt;br /&gt;
Schon vorab möchte ich mich bei Mitgliedern des RP6-Forums für überragende Hilfe bedanken, ohne diese wäre es wohl bei dem Traum geblieben...&lt;br /&gt;
&lt;br /&gt;
Eine reine Vorsichtsmaßnahme – jeglicher Nachbau geschieht auf eigenes Risiko...&lt;br /&gt;
&lt;br /&gt;
Und nun geht es zu der Anleitung...&lt;br /&gt;
&lt;br /&gt;
===Ladestation:===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Ladestation besteht aus folgenden Baugruppen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Primäre Ladespule mit ihrer Lade-elektronik:=====&lt;br /&gt;
&lt;br /&gt;
Hier sieht man das Kaufteil , also praktisch das Ausgangsprodukt für den Bau einer induktiven Ladeststion, sowie die primäre Spule mit der Ladeelektronik und dem Anschluss-Stecker ( Alle drei Teile aus dem ursprünglichen Gehäuse entnommen, Stecker wird nicht verwendet )&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:  IQ ladeschale-1.JPG|thumb|left|IQ Ladeschale Kaufteil]]  ||  [[Bild: IQ ladeschale mit ladeelektronik.JPG|thumb|left|IQ Ladespule mit Lade-elektronik und Stecker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Weiter unten sieht man die Bearbeitung des neuen Gehäuses für die primäre Ladespule und die Ladeelektronik.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild: Gehäuse ladeschale gebohrt-1.JPG|thumb|left|Spulengehäuse gebohrt]]  ||  [[Bild: Gehäuse ladeschale gebohrt-2.JPG|thumb|left|Spulengehäuse mit Öffnung]]&lt;br /&gt;
|}&lt;br /&gt;
Das Gehäuse wurde aus einer TOOM 220V Aufputz-Steckdose mit einer Kantenlänge von 64mm erstellt, das passt zusammen mit dem Gestell aus 4-kantprofilen mit einer Kantenlänge von 10mm sehr gut ( auch zum zentrieren der beiden Spulen zueinander ) zwischen die Felgen der Räder der Antriebsketten (Lichte Weite 84,5mm).&lt;br /&gt;
Das Gehäuse wurde auf 9mm gekürzt (Endmaß 8mm, 0,5- 1mm als Aufmaß für Planschleifen der späteren Auflagefläche drauf lassen, die Lichte Weite zwischen der auf der Bodenwanne aufgeklebten sekundären Ladespule und der Auflagefläche beträgt 10mm).&lt;br /&gt;
Der vertikale Abstand zwischen den beiden Spulen sollte so gering wie möglich sein, maximal 0,5mm, je größer er wird, um so schlechter spricht die sekundäre Spule an, ab einer bestimmten Entfernung überhaupt nicht mehr.&lt;br /&gt;
Der innere „Kragen“ der Steckdose wurde ausgebohrt und mit einer Halbrundfeile auf Außenmaß der Spule erweitert. An der Stelle, wo die geflochtene Litze um die Feritplatte gebogen wird muss das neue Gehäuse noch etwas ausgearbeitet werden (das geht ganz gut mit dem Lötkolben).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier die fertige primäre Ladespule:&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:  Ladespule kpl.JPG|thumb|left|Primäre Ladespule kpl.]]  ||  [[Bild:  Ladespule von unten.JPG|thumb|left|Primäre Ladespule von unten]]&lt;br /&gt;
|}&lt;br /&gt;
Die Spule selbst wurde mit einem 1mm dickem doppelseitigem Klebeband an den Ecken der Feritplatte ( Vorsicht – brüchig!) mit dem Gehäuse verklebt. Später habe ich festgestellt, dass die Spule nach einer gewissen Zeit (über Nacht) warm wird und dadurch das Klebeband an Haftung verliert, die Spule kippt dann teilweise nach unten und der Ladevorgang wird unterbrochen, da sollte man also noch etwas tun – richtig mit UHU-Plus Schnellfest (oder ähnlich) kleben.&lt;br /&gt;
&lt;br /&gt;
Die Ladeelektronik wurde auf der Rückseite der Feritplatte mit dem gleichen Klebeband an der Lötseite mit der Feritplatte verklebt, das Kabel an der Elektronik angeschlossen. Plus und Minus an der Elektronik sind nicht gekennzeichnet, Vorsicht beim Anschluss des (evtl. gekürzten) USB-Kabels, Lage von rot und schwarz merken! Das Kabel habe ich mit UHU Plus angeklebt (Zugentlastung). Am anderen Ende des USB-Kabels ist ein USB-Steckernetzteil mit einem Ausgangsstrom von 1A. PC-USB Anschluss hat von der Leistung her nicht gereicht.&lt;br /&gt;
&lt;br /&gt;
Hier noch die Belegung des USB Steckers:&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:  USB Stecker pinbelegung.png|thumb|left|Pinbelegung USB-Stecker]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Sekundäre Ladespule:=====&lt;br /&gt;
Die Spule ist an der Bodenwanne im vorderen Bereich mit dünnem Doppelseitigem Klebeband mittig zur Wanne des RP6 aufgeklebt (möglichst etwas weniger schief als hier), die Kabel sind mit einem tropfen Kleber fixiert&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:  Sekundär spule.JPG|thumb|left|Sekundärspule mit Anschlussdrähten]]  ||  [[Bild:   Sekundär spule geklebt.JPG|thumb|left|Sekundärspule an der Bodenwanne geklebt]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Step-Up-Converter:=====&lt;br /&gt;
&lt;br /&gt;
Der Wandler ist im Heck-seitigem Bereich der Bodenwanne(unterhalb des EXT-Anschlusses) mit einem dickeren doppelseitigem Klebeband aufgeklebt (Lötspitzen auf der Lötseite des Converters verhindern andere Befestigung, Bohrungen zum Anschrauben hat der Wandler nicht).&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:  Step-up-converter.jpg|thumb|left|Step-Up-Converter 4V auf 30V]]  ||  [[Bild:  Step up converter montiert-1.JPG|thumb|left|Step-Up-Converter auf der Bodenwanne montiert]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Am Step-Up_converter muss vorher mit dem Potentiometer (am besten auf dem Steckbrett, dazu habe ich die Lötpads mit Lötstiften versehen) die Ausgangsspannung auf 9V eingestellt werden. Diese Stifte wurden später so angepasst bzw. gegen neue getauscht, dass dort die Gegenstecker der Verdrahtung drauf gesteckt werden konnten.&lt;br /&gt;
&lt;br /&gt;
Bei den ersten Tests der Schaltung lief der Wandler nicht an. Die Versuche mit einem Graetz Gleichrichter brachten keine Besserung, ein – mehr oder weniger aus Verzweiflung -  gemachter Versuch mit einer 1A Diode am Eingang des Wandlers brachte die Lösung. Der Wandler läuft nach dem einschalten der Ladestation nach ca. 5-10 Sekunden zuverlässig an. Hier der Wandler auf dem Steckbrett, rechts mit der SMD-Diode auf IN+ :&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:   Step up converter auf dem steckbrett.JPG|thumb|left|Step-Up-Converter auf dem Steckbrett]]  ||  [[Bild:   SMD-diode auf IN- steckbrett.JPG|thumb|left|SMD Diode auf Anschluss IN+ gelötet]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Am Konverter wurden später, während des Ladens, folgende Werte gemessen:&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:   Messungen strom spannung beim laden.png|thumb|left|Spannungs- und Stromwerte während des Ladens]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Durch Selbstentladung während der nächsten 12 Stunden verringerte sich die hier gemessene Spannung am Voltmeter auf 8V und der Vbat Wert auf 8,1V.&lt;br /&gt;
&lt;br /&gt;
=====Gestell:=====&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:   Gestell von oben.JPG|thumb|left|Ladestation von oben]]  || [[Bild:   Gestell von unten.JPG|thumb|left|Ladestation von unten]] || [[Bild:   Lichtleitfaser an der elektronik.JPG|thumb|left|Lichtleitfaser an der LED der Lade-elektronik]] || [[Bild:    Blaue LED als Ladekontrolle.JPG|thumb|left|blaue LED leuchtet, wenn die Ladestation an ist, beim Laden blinkt sie]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=XqvEPsfwQtE?highlight= LED beim Laden]&lt;br /&gt;
&lt;br /&gt;
Gefertigt aus 4kant Profilen 10x1, die erhöhte Stirnseite dient als Anschlag für die Positionierung der Spulen zueinander, die beiden seitlichen Profile liegen beim Laden zwischen den Ketten, damit werden die Spulen in seitlicher Richtung zentriert.&lt;br /&gt;
Steht der RP6 auf diesem Gestell, haben die Ketten einen Abstand zu Tisch/Bodenplatte und der RP6 kann zu Testzwecken betrieben und gleichzeitig geladen werden. Die Ladestation kann aber auch ohne das Gestell betrieben werden, der RP6 steht dann mit den Ketten auf der Auflage / dem Boden.&lt;br /&gt;
&lt;br /&gt;
=====Verdrahtung:=====&lt;br /&gt;
&lt;br /&gt;
Die Verdrahtung verläuft im wesentlichen über die Base-platine und über die Heck- und Front-seitige Flächen der Bodenwanne. Die Verdrahtung des Step-Up-Converters ist auch aus dem vorhergehendem Foto der Einbausituation des Wandlers ersichtlich. Alle Anschlüsse sind mit Steckern versehen um eine Demontage der Base-Leiterplatte möglich zu machen.&lt;br /&gt;
Will man die Einstellung der (alten) Encoder verändern, muss man vorsichtig die Kleberstreifen vom Wandler entfernen und ihn abnehmen. Bei den neuen Encodern ist ein Demontieren der Gehäusehälften nicht erforderlich, der Step-Up-Converter kann also aufgeklebt bleiben. Daneben noch einmal ein Bild der kompletten Verdrahtung am RP6 im Zusammenhang mit der Ladestation.&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:    Kabelverlauf.JPG|thumb|left|Kabelverlauf auf der Baseplate]]  ||  [[Bild:    Verdrahtung auf RP6-2.JPG|thumb|left|Verdrahtung der Lade-elektronik am RP6]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Bauteilebedarf:=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Webseite''' || '''Distributor'''&lt;br /&gt;
|-&lt;br /&gt;
| Ladeschale und Empfängerspule || Qi Wireless Kabellose Ladegerät Pad Receiver für Samsung Galaxy S3 || ebay || http://www.ebay.de/itm/Qi-Wireless-Kabellose-Ladegerat-Pad-Receiver-fur-Samsung-Galaxy-S3-S4-Note-2-ED-/171176612540?pt=DE_M%C3%B6bel_Wohnen_Sonstige&amp;amp;var=&amp;amp;hash=item27daebd2bc&lt;br /&gt;
|-&lt;br /&gt;
| Step-up-wandler || LM2577S DC-DC-Wandler Step-up Power Supply Modul || ebay || http://www.ebay.de/itm/290943258842?ssPageName=STRK:MESINDXX:IT&amp;amp;_trksid=p3984.m1436.l2649&lt;br /&gt;
|-&lt;br /&gt;
| SMD Diode || 1A / 50V Diotec SM4001 || Conrad || http://www.conrad.de/ce/de/product/160725/?insert=62&amp;amp;insertNoDeeplink&amp;amp;productname=SMD-Diode-1-A-Diotec-SM4001-Gehaeuseart-MELF-IF-1-A-Sperrspannung-UR-50-V&lt;br /&gt;
|-&lt;br /&gt;
|  ||  || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Doppel_ladestation:=====&lt;br /&gt;
Die Ladestation wurde erweitert:&lt;br /&gt;
&lt;br /&gt;
- Durch Verwendung von zwei Ladespulen kann der RP6 in zwei Positionen geladen werden, so sind Teile / Sensoren auch während des Ladens alle zugänglich (der RP6 muss nur einmal gedreht werden, der Ladevorgang wird sofort nach dem Drehen fortgesetzt).&lt;br /&gt;
&lt;br /&gt;
- Die Ladespulen können getrennt oder gemeinsam betrieben werden. Beim Laden mit beiden Ladespulen gleichzeitig liegt der Ladestrom bei 350mA. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
| [[Bild:   2015_01_18_doppel_lader.jpg|thumb|left|Doppel_ladestation von oben]]  || [[Bild:   2015_01_18_doppelspule_1.JPG|thumb|left|Doppelspule am Unterboden]] || [[Bild:   2015_01_18_doppelspule_geschützt.JPG|thumb|left|Doppelspule geschützt]] || [[Bild:   2015_01_18_laden_pos_1.JPG|thumb|left|Ladeposition_1]] || [[Bild:    2015_01_18_laden_pos_2.JPG|thumb|left|Ladeposition_2]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Und nun -  viel Spaß und Erfolg beim Nachbauen...&lt;br /&gt;
&lt;br /&gt;
===Autor===&lt;br /&gt;
--[[Benutzer:Georg|inka]] 09:50, 12. Mai 2014 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25738</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25738"/>
				<updated>2014-12-17T07:19:42Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Anschluss von externen Spannungsquellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''' [3] und [6], ein ADC kann die angeschlossene Akkuspannung überwachen [23]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Ein Tipp: Will man nur Softwarearbeiten machen und muss der RP6 dabei sich nicht frei bewegen können, einfach eine dreifach-Brücke über den Dreifachjumper &amp;quot;JP_UB&amp;quot; legen und ein Netzgerät an die ArduIO anschließen. Dann wird über die dreifach-Brücke sowohl die ArduIO von diesem Netzgerät versorgt, als auch der RP6 über den XBUS. Natürlich sollte dafür auch im RP6 kein Akku angeschlossen sein.&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit der Verkabelung seht ihr rechts: Jede Platine benötigt GND, die vier Scheinwerfer dazu noch je drei IOs, wovon jedoch stets mehrere geteilt werden (BEIDE Blinker links, BEIDE Blinker rechts, etc). Die Blaulicht-Platine benötigt dazu noch +5V, da hier beide LEDs gegenpolig an einem einzelnen IO angeschlossen sind, auf der anderen Seite geht die eine LED auf GND, die andere auf +5V. Dadurch bewirkt ein Tooglen des IOs ein abwechselndes Blinken der beiden LEDs.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Wenn all diese LEDs leuchten, also alle vier Front- und vier Heckscheinwerfer sowie alle vier Blinker und eine der blauen LEDs, so ziehen diese einen Strom von 4x20mA (weiß) + 1x30mA (blau) + 4x2mA (rot) + 4x2mA (gelb) = 126mA. Das ist für den IO-Expander nicht wenig und sollte bei weiteren Verbrauchern an den übrigen 8 IOs beachtet werden. Der zulässige Maximalstrom sollte nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25647</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25647"/>
				<updated>2014-12-08T13:47:43Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Jumper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''' [3] und [6], ein ADC kann die angeschlossene Akkuspannung überwachen [23]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit der Verkabelung seht ihr rechts: Jede Platine benötigt GND, die vier Scheinwerfer dazu noch je drei IOs, wovon jedoch stets mehrere geteilt werden (BEIDE Blinker links, BEIDE Blinker rechts, etc). Die Blaulicht-Platine benötigt dazu noch +5V, da hier beide LEDs gegenpolig an einem einzelnen IO angeschlossen sind, auf der anderen Seite geht die eine LED auf GND, die andere auf +5V. Dadurch bewirkt ein Tooglen des IOs ein abwechselndes Blinken der beiden LEDs.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Wenn all diese LEDs leuchten, also alle vier Front- und vier Heckscheinwerfer sowie alle vier Blinker und eine der blauen LEDs, so ziehen diese einen Strom von 4x20mA (weiß) + 1x30mA (blau) + 4x2mA (rot) + 4x2mA (gelb) = 126mA. Das ist für den IO-Expander nicht wenig und sollte bei weiteren Verbrauchern an den übrigen 8 IOs beachtet werden. Der zulässige Maximalstrom sollte nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25646</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25646"/>
				<updated>2014-12-08T13:45:49Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Scheinwerfer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''' [3] und [6], ein ADC kann die angeschlossene Akkuspannung überwachen [23]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit der Verkabelung seht ihr rechts: Jede Platine benötigt GND, die vier Scheinwerfer dazu noch je drei IOs, wovon jedoch stets mehrere geteilt werden (BEIDE Blinker links, BEIDE Blinker rechts, etc). Die Blaulicht-Platine benötigt dazu noch +5V, da hier beide LEDs gegenpolig an einem einzelnen IO angeschlossen sind, auf der anderen Seite geht die eine LED auf GND, die andere auf +5V. Dadurch bewirkt ein Tooglen des IOs ein abwechselndes Blinken der beiden LEDs.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Wenn all diese LEDs leuchten, also alle vier Front- und vier Heckscheinwerfer sowie alle vier Blinker und eine der blauen LEDs, so ziehen diese einen Strom von 4x20mA (weiß) + 1x30mA (blau) + 4x2mA (rot) + 4x2mA (gelb) = 126mA. Das ist für den IO-Expander nicht wenig und sollte bei weiteren Verbrauchern an den übrigen 8 IOs beachtet werden. Der zulässige Maximalstrom sollte nicht überschritten werden.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25615</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25615"/>
				<updated>2014-12-04T12:30:09Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Features des ArduIO-Moduls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''' [3] und [6], ein ADC kann die angeschlossene Akkuspannung überwachen [23]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit der Verkabelung seht ihr rechts: Jede Platine benötigt GND, die vier Scheinwerfer dazu noch je drei IOs, wovon jedoch stets mehrere geteilt werden (BEIDE Blinker links, BEIDE Blinker rechts, etc). Die Blaulicht-Platine benötigt dazu noch +5V, da hier beide LEDs gegenpolig an einem einzelnen IO angeschlossen sind, auf der anderen Seite geht die eine LED auf GND, die andere auf +5V. Dadurch bewirkt ein Tooglen des IOs ein abwechselndes Blinken der beiden LEDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25614</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25614"/>
				<updated>2014-12-03T08:59:52Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen [3] und [6]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit der Verkabelung seht ihr rechts: Jede Platine benötigt GND, die vier Scheinwerfer dazu noch je drei IOs, wovon jedoch stets mehrere geteilt werden (BEIDE Blinker links, BEIDE Blinker rechts, etc). Die Blaulicht-Platine benötigt dazu noch +5V, da hier beide LEDs gegenpolig an einem einzelnen IO angeschlossen sind, auf der anderen Seite geht die eine LED auf GND, die andere auf +5V. Dadurch bewirkt ein Tooglen des IOs ein abwechselndes Blinken der beiden LEDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25613</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25613"/>
				<updated>2014-12-03T08:56:18Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* 3,3V-I2C */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen [3] und [6]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25612</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25612"/>
				<updated>2014-12-03T08:55:50Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Scheinwerfer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen [3] und [6]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|left|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25611</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25611"/>
				<updated>2014-12-03T08:55:10Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Scheinwerfer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen [3] und [6]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|right|100px]]&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|left|200px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25610</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25610"/>
				<updated>2014-12-03T08:54:31Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Scheinwerfer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen [3] und [6]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
[[Bild:RP6-Beleuchtung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:RP6-Beleuchtung.jpg&amp;diff=25609</id>
		<title>Datei:RP6-Beleuchtung.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:RP6-Beleuchtung.jpg&amp;diff=25609"/>
				<updated>2014-12-03T08:54:15Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Verkabelung der LED-Platinen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Verkabelung der LED-Platinen&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_Multi_IO_Projekt&amp;diff=25608</id>
		<title>RP6 Multi IO Projekt</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_Multi_IO_Projekt&amp;diff=25608"/>
				<updated>2014-12-02T08:41:46Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:Multi-IO_Gesamtansicht.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 Multi IO Erweiterungsmodul=&lt;br /&gt;
Das RP6-Multi-IO Erweiterungsmodul besteht aus fünf Platinen.&lt;br /&gt;
Eine Hauptplatine, im üblichen RP6-Layout, enthält eine Vielzahl möglicher Sensoren und Aktoren wie eine eigene Stromversorgung mit 5V-Regler, Temperatursensor, Stromsensor, Spannungssensoren, Berührungssensor, Servo-Ansteuerung, LEDs, Buzzer etc.&lt;br /&gt;
An sie können die vier weiteren Platinen angesteckt werden. Diese sind eine Bumper-Platine zum Anbringen am Heck des RP6, eine Radio-Platine, eine Platine mit vier Tastern und eine mit einem Liniensensor-Array von fünf CNY70-Reflexoptokopplern.&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den [http://www.rn-wissen.de/index.php/RP6_Multi_IO_Projekt#Weblinks Weblinks].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese fünf Platinen können bei fabqu ( http://www.roboternetz.de/community/members/47148-fabqu oder fabqu@web.de ) bestellt werden. Sie sind mit Lötstoplack (schwarz) sowie beidseitig mit einem Bestückungsdruck (in weiß) versehen.&lt;br /&gt;
&lt;br /&gt;
Sie sind nicht aufgebaut, aber fabqu bietet an, die schwer einzulötenden SMD-ICs (und bei Bedarf auch alle anderen SMD-Bauteile) in einer Sammelbestellung zu bestellen und einzulöten.&lt;br /&gt;
&lt;br /&gt;
'''Leider gibt es nur noch eine Platine!!!'''&lt;br /&gt;
&lt;br /&gt;
==Features des Multi-IO-Moduls==&lt;br /&gt;
===On-Board-Sensoren===&lt;br /&gt;
* Externe Stromversorgung&lt;br /&gt;
** Bis zu 10 Volt&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* USRBUS&lt;br /&gt;
** Pinherausführungen&lt;br /&gt;
&lt;br /&gt;
* Alle 14 Pins stehen zur freien Verfügung&lt;br /&gt;
* XBUS&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel) und Int1 (5V- und 3,3V-Pegel)&lt;br /&gt;
* Temperatur-Sensor&lt;br /&gt;
** [http://ww1.microchip.com/downloads/en/devicedoc/21490b.pdf TCN75] (gleicher Sensor ist bei M128 verbaut)&lt;br /&gt;
** Adressbits A0 und A2 einstellbar&lt;br /&gt;
** Sensor ist durch Jumper deaktivierbar&lt;br /&gt;
* 16-fach PWM-Modulator via I2C [http://www.nxp.com/documents/data_sheet/PCA9685.pdf PCA9685]&lt;br /&gt;
** schaltet 8 Servos&lt;br /&gt;
** schaltet 4 LEDs&lt;br /&gt;
** schaltet Versorgungsspannung der Servomotoren zu/ab&lt;br /&gt;
** 3 freie Pins&lt;br /&gt;
** Der PCA9685 ist direkt neben dem USRBUS angebracht, um hier eine Fortführung der Daten zu ermöglichen&lt;br /&gt;
* Servo-Lib für [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]]&lt;br /&gt;
** 8 Servos für [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] nutzbar durch [http://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=servo+lib Servo-Lib von Dirk]&lt;br /&gt;
** siehe Weblinks unten&lt;br /&gt;
* Spannungsversorgung Servos&lt;br /&gt;
** Eigene Spannungsversorgung für alle Servomotoren&lt;br /&gt;
** Abgesichert durch 470uF-Kondensator&lt;br /&gt;
** Verwendung drei verschiedener 5V-Regler möglich ([http://www.fairchildsemi.com/ds/LM/LM7805.pdf 7805], [http://www.farnell.com/datasheets/42567.pdf LT1084CP-5] oder [http://www.farnell.com/datasheets/84018.pdf LT1084CT-5])&lt;br /&gt;
** Bei Verwendung eines LT…-5 ist die Spannung durch Poti im Bereich 5..7,5V einstellbar&lt;br /&gt;
* Strom-Spannungs-Überwachung&lt;br /&gt;
** [http://cds.linear.com/docs/en/datasheet/2990fc.pdf LTC2990] überwacht via I2C Batteriespannung, Servospannung, Stromverbrauch der gesamten Platine sowie eigene Temperatur&lt;br /&gt;
** Analoge Messung der 3,3V-Spannung&lt;br /&gt;
* Echtzeit-Uhr [http://datasheets.maximintegrated.com/en/ds/DS1307.pdf DS1307]&lt;br /&gt;
** Via I2C&lt;br /&gt;
** 5V sind durch Jumper deaktivierbar&lt;br /&gt;
** StandBy durch 3V-Knopfzelle (20xx-Reihe) möglich&lt;br /&gt;
* Berührungssensor&lt;br /&gt;
** Timerbaustein [http://www.makershed.com/v/vspfiles/assets/images/ne555.pdf NE555] registriert Berührung einer Antenne&lt;br /&gt;
** Via ADC&lt;br /&gt;
* Buzzer&lt;br /&gt;
* Spannungsteiler&lt;br /&gt;
** Vorbereitet&lt;br /&gt;
** Anschlussmöglichkeit vieler eigener Sensoren&lt;br /&gt;
* I2C-EEPROM der 24LCxxx-Serie&lt;br /&gt;
* Anschlussmöglichkeit der IO- und ADC-Wannenstecker von [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] und [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]]&lt;br /&gt;
&lt;br /&gt;
===Weitere Platinen===&lt;br /&gt;
&lt;br /&gt;
* Jede hier beschriebene Platine besitzt einen vorkonfektionierten Anschluss auf der Hauptplatine&lt;br /&gt;
* Taster-Board&lt;br /&gt;
** Vier Taster&lt;br /&gt;
** Widerstandskaskade für Messung mit einem ADC&lt;br /&gt;
* Bumper-Board&lt;br /&gt;
** Zwei Bumper mit LEDs&lt;br /&gt;
** Zwei durch Transistor abschaltbare Sharp-GP2Dxx- oder Radar-Abstandssensoren (analog) oder zwei SRF02-Sensoren (digital via I2C)&lt;br /&gt;
* Liniensucher-Board für Liniensensor&lt;br /&gt;
** Bis zu 5 [http://www.vishay.com/docs/83751/cny70.pdf CNY70]-Reflexoptokoppler&lt;br /&gt;
** Durch Transistor abschaltbar&lt;br /&gt;
** LED zeigt Status&lt;br /&gt;
** Durch Jumper Wahl zwischen drei oder fünf CNY70-Reflexoptokopplern&lt;br /&gt;
* Radio-Board&lt;br /&gt;
** [http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/Si4735%20Datasheet.pdf SI4735] digitaler Radio-Empfänger&lt;br /&gt;
** [http://www.b-kainka.de/Daten/Analog/TDA7050_CNV_2.pdf TDA7050] Verstärker mit Stereo-Kopfhörerbuchse&lt;br /&gt;
** Potentiometer zur Lautstärkeregulierung&lt;br /&gt;
** AM und FM möglich&lt;br /&gt;
* Anschlüsse&lt;br /&gt;
** Taster-Board kann an Hauptplatine angesteckt oder aufgelötet werden&lt;br /&gt;
** Anschlüsse für Bumper- und Liniensensor-Board&lt;br /&gt;
&lt;br /&gt;
===Erweiterbare Sensoren===&lt;br /&gt;
* DCF77-Funkuhrempfänger&lt;br /&gt;
* GPS-Modul Navilock &amp;quot;NL-552ETTL&amp;quot; via UART (oder vergleichbare GPS-Sensoren, Levelshifter 5V&amp;lt;-&amp;gt;3,3V on Board)&lt;br /&gt;
* Aufsteckbarer 2D-Kompass &amp;quot;HDMM01&amp;quot; (Kompass mit 2-Achsen-Beschleunigungssensor)&lt;br /&gt;
* Aufsteckbarer 3D-Kompass &amp;quot;LSM303DLM&amp;quot; (Kompass mit 3-Achsen-Beschleunigungssensor)&lt;br /&gt;
* Oder aufsteckbarer 9D-Kompass &amp;quot;MinIMU-9 v2&amp;quot; (Kompass mit 3-Achsen-Beschleunigungssensor und 3-Achsen-Gyro)&lt;br /&gt;
* Aufsteckbarer Luftfeuchtigkeit- und Temperatur-Sensor &amp;quot;HYT 221&amp;quot;&lt;br /&gt;
* Aufsteckbarer Luftdrucksensor &amp;quot;BMP085&amp;quot;&lt;br /&gt;
* Vier weitere Ultraschall-Abstandssensoren (z.B. &amp;quot;SRF02&amp;quot; )&lt;br /&gt;
* &amp;quot;SnakeVision&amp;quot;-Modul&lt;br /&gt;
* Jeder I2C-Sensor oder -Aktor; sowohl für 5V- als auch für 3,3V-Pegel&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von Dirk erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen.&lt;br /&gt;
Es ist geplant, eine Bibliothek mit allen fest installierten Sensoren und Aktoren aufzubauen. Darüber hinaus soll sich eine weitere Bibliothek mit Umwelt-Fragen beschäftigen (Luftdruck, Luftfeuchtigkeit, Temperatur) sowie eine mit den Sensoren für Lageerkennung (GPS, 2D-, 3D- oder 9D-Kompass).&lt;br /&gt;
Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[RP6 Multi IO Projekt - Software|HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Die Hardware des Multi-IO-Moduls muss erst verlötet werden. Bitte lese dafür ausführliche eine Lötanleitung! Diese finden sich u.a. im Netz:&lt;br /&gt;
[[Löt-Tutorial]].&lt;br /&gt;
&lt;br /&gt;
Du musst nicht alle Komponenten einbauen! Du kannst diejenigen einbauen, welche du benötigst oder ausprobieren möchtest. Die Platine ist jederzeit erweiterbar.&lt;br /&gt;
Nach dem Löten kann es sinnvoll sein, die Lötstellen durch „Plastik 70“-Spray vor Korrosion zu schützen.&lt;br /&gt;
&lt;br /&gt;
===Anschluß anderer Module===&lt;br /&gt;
[[Bild:Anschlüsse.jpg|thumb|Anschluss des RP6-M256-Moduls über drei Flachbandkabel]]&lt;br /&gt;
An den 10-poligen Wannensteckern IO_Mxxx (SV_IO_Mxxx ) und ADC_Mxxx (SV_ADC_Mxxx) an der Rückseite des Multi-IO-Moduls können IO- und ADC-Wannenstecker der Module [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] und [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]] angesteckt werden. Der 10-polige IO-Wannenstecker „SV_SERVOSM32“ der M32 kann zusätzlich für acht Servos genutzt werden.&lt;br /&gt;
Für die [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]] steht ein zusätzlicher, 14-poliger Wannenstecker (SV_ADC_M256) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Wofür''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 10-poliges Flachbandkabel, ca. 20cm || Für IO_Mxxx und ADC_Mxxx || 2&lt;br /&gt;
|-&lt;br /&gt;
| 10-poliger Wannenstecker || Für IO_Mxxx und ADC_Mxxx || 4&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliges Flachbandkabel, ca. 10cm || Für XBUS und USRBUS || 2&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliges Flachbandkabel, ca. 20cm || Für ADC_M256 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliger Wannenstecker || Für ADC_M256, XBUS und USRBUS || 6&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 10-poliges Flachbandkabel, ca. 20cm || Für Servos der M32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 10-poliger Wannenstecker || Für Servos der M32 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Taster-Board===&lt;br /&gt;
[[Bild:Tasterpoard.jpeg|thumb|Das Tasterboard mit den vier Tastern, auf der Hauptplatine befestigt]]&lt;br /&gt;
Das Taster-Board kann an der Vorderseite der Hauptplatine befestigt werden.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Taster || T1-T4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R20, 21, 34, 35 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x1 Buchse, RM2,54 || P_T1, 2, 3, 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x1 Pin 90°, RM2,54 || P_T1, 2, 3, 4 || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
Die vier Taster schalten eine Widerstandkaskade, welche als Spannungsteiler fungiert. Dadurch können sie – analog zu den Tastern der [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] – mit nur einem ADC-Kanal gemessen werden.&lt;br /&gt;
Das Board kann entweder mit den vier Lötpunkten am vorderen, linken Rand des Multi-IO-Moduls angelötet werden, oder mittels vier rechtwinkliger Pins in vier Buchsen dort eingesteckt werden.&lt;br /&gt;
&lt;br /&gt;
===Bumper-Board===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bumperboard.jpeg|thumb|Das zur Multi-IO gehörende Bumperboard am Heck des RP6 befestigt. Aufmontiert sind die beiden Bumper sowie zwei analoge Sharp GP2D12-IR-Abstandssensoren.]]&lt;br /&gt;
Die Schraublöcher sind so angepasst, dass das Bumper-Board am Heck des RP6 angebracht werden kann.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Bumper|| || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 750Ω || R30, 31 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 270Ω || R23, 24 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 470Ω || R36 || 2&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, low-current, rot || LED7, 8 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x7, RM2,54, stehend oder 90° || P_BUMPER || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x4, RM2,54 || P_BUMPER1, 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 7-poliges Flachbandkabel ||  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 7-poliger Stecker, RM2,54 ||  || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der Sharp-Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Transistor BC807, SOT23-Package || Q1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1kΩ || R4|| 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_SHARP-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x3, RM2,54, für Sharp-Sensoren || P_SHARP1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung von Radarsensoren RSM1650=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Transistor BC807, SOT23-Package || Q1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1kΩ || R4|| 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_SHARP-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x3, RM2,54, für Sharp-Sensoren || P_RADAR1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der SRF02=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C3, 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x5, RM2,54, für SRF02 || P_SRF__1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
Die Bumper-Taster haben drei Pins: Eingang (5V), Ausgang wenn gedrückt, Ausgang wenn nicht gedrückt. Hier werden nur der Eingang und der Ausgang im gedrückten Fall verwendet. Dieser schaltet dann auf die LEDs und die Pins 2 (rechts) und 3 (links) von P_BUMPER durch. Die LEDs können zusätzlich über den IO-Kanal angesprochen, also geschaltet werden (analog zur [[RP6]](v2) BASE) .&lt;br /&gt;
Es können zwei Sharp-Abstandssensoren angebracht werden, zwei Radar-Abstandssensoren oder zwei SRF02. Es werden dann nur die jeweiligen Kondensatoren und Pinreihen benötigt.&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der Sharp-Sensoren GP2Dxx=====&lt;br /&gt;
Werden die Sharp-Sensoren verwendet, sind die Kondensatoren C36 (100nF) und C37 (10uF) anzubringen sowie der Transistor Q1 (BC807) und der zugehörige Widerstand R4 (1kΩ). Die Sensoren können an den 1x3-Pinreihen P_SHARP1 und 2 angesteckt oder angelötet werden. Die Sharps können durch Jumper J_SHARP-ON oder durch den Transistor geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=====Verwendung von Radar-Sensoren RSM1650=====&lt;br /&gt;
Werden die Radar-Sensoren verwendet, sind die Kondensatoren C36 (100nF) und C37 (10uF) anzubringen sowie der Transistor Q1 (BC807) und der zugehörige Widerstand R4 (1kΩ). Die Sensoren können an den 1x3-Pinreihen P_Radar1 und 2 angesteckt oder angelötet werden. Die Radarsensoren können durch Jumper J_SHARP-ON oder durch den Transistor geschaltet werden. Die dreipoligen Stiftleisten für die Radarsensoren haben leider eine etwas andere Belegung (VCC-Signal-GND) als die Sharp-Sensoren (VCC-GND-Signal) .&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Leider haben diese Radarsensoren keinen eingebauten Verstärker.&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung für so einen Verstärker findet ihr [http://www.jokesoft.de/weidmann/index.php?option=com_content&amp;amp;view=section&amp;amp;layout=blog&amp;amp;id=17&amp;amp;Itemid=21 HIER]. Zu kaufen gibts das dann [http://s164863055.e-shop.info/shop/article_ART0006/Radarsensor-165-inkl.-Verst%C3%A4rkung-(73-dB).html?sessid=i3esovGNRhZtFaDorAQGpYddJY6il5knlqkgDXpJXs5XQHXTA27r12wr3rhlXqRE&amp;amp;shop_param=cid%3D1%26aid%3DART0006%26 HIER].&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der SRF02=====&lt;br /&gt;
Werden die SRF02 verwendet, können diese an P_SRF__1 und 2 angesteckt oder angelötet werden. Die Kondensatoren C3 und 4 (100nF) sind zu verwenden.&lt;br /&gt;
&lt;br /&gt;
====Anschluß auf Hauptplatine====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Anschluss_Bumper.jpeg|thumb|So erfolgt der Anschluss des Bumperboards auf der Hauptplatine. Das rote Kabel ist VCC (=5V).]]&lt;br /&gt;
Das Board kann mit einem 7-poligen Flachbandkabel am Multi-IO-Modul angesteckt werden. Dort kann via Jumper JP1 und JP2 gewählt werden, ob digitale (SRF02 via I2C) oder analoge Sensoren (SharpGP2D via ADC) benutzt werden. Die Verwendung von analogen Sensoren geht nur mit dem Modul [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]], da hier die ADC-Kanäle PF3 und PF4 des 14-poligen ADC-Wannensteckers verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Befestigt werden kann das Board mit zwei M3-Schrauben am Heck des RP6. Dafür benötigst du noch zwei Distanzbolzen mit M3-Gewinde und zugehörige Muttern (analog zur Befestigung des originalen Bumper-Boards auf der Vorderseite des Rp6). Diese kannst du von Innen am RP6 befestigen und danach das Bumper-Board anbringen.&lt;br /&gt;
&lt;br /&gt;
===Liniensucher-Board===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
&lt;br /&gt;
=====Für Verwendung von 3 Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| CNY70 von Vishay || IC8-10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R45, 46, 18 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15Ω || R57 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R15 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 47kΩ || R47 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, gelb || LED9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C28, 29, 30 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Transistor IRF5210, SO220-Package || Q9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x8, RM2,54, stehend oder 90° || P_CNY_ALL1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-poliges Flachbandkabel ||  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x8-poliger Stecker, RM2,54 || Anschluss am Liniensucher-Board || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x4-poliger Stecker, RM2,54 || Anschluss am Multi-IO-Board || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Zusätzlich für die Verwendung von 5 Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| CNY70 von Vishay || IC11-12 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R19, 43 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 68Ω || R56 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C6, 7 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_CNY || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Liniensucher-Board.jpeg|thumb|Das Liniensucher-Board mit den 5 CNY70-Reflexoptokopplern und dem IRF5201-Transistor]]&lt;br /&gt;
Das Board besitzt drei CNY70 (L, M, R = IC8-10) der Firma Vishay sowie zwei weitere, durch Jumper zuschaltbare (L1 = IC11, R1 = IC 12). Die Spannungsversorgung (5V) kann durch einen Transistor (Q9) geschaltet werden. Eine LED (LED9) zeigt den Status On/Off an.&lt;br /&gt;
Die Beschriftete Seite der CNY70 muss ihre AUsrichtung zur dickeren Linie des Bestückungsdrucks haben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Reflexoptokoppler CNY70 können gut zur Linienerkennung (hell/dunkel) eigesetzt werden. Siehe dazu [[CNY70]].&lt;br /&gt;
&lt;br /&gt;
====Anschluß auf Hauptplatine====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Anschluss_Liniensucher.jpeg|thumb|Anschluss des Liniensucher-Boards auf der Hauptplatine]]&lt;br /&gt;
Das Board kann durch ein 8-poliges Flachbandkabel auf dem Multi-IO-Modul angesteckt werden. Die Sensoren R1 und L1 können dabei nur mit dem M256-Modul verschaltet werden (freie ADC-Kanäle PF2 und PF3). Die Sensoren L, M und R können durch Jumper JP4 auf die ADC-Pins ADC_1, ADC_3 und ADC_5 gelegt werden (Pins 1, 3 und 5 des 10-poligen ADC_Mxxx-Wannensteckers).&lt;br /&gt;
Man benötigt also ein 8-poliges Flachbandkabel sowie einen 1x8-Stecker (RM2,54mm) und einen 2,4-Stecker (RM2,54mm). Die Pinbelegung ist dann wie im Bestückungsdruck dargestellt.&lt;br /&gt;
&lt;br /&gt;
Die Löcher zur Befestigung entsprechen dem Abstand der Löcher auf der originalen Front-Bumperplatine des RP6, um hier Möglichkeiten zur Befestigung zu schaffen.&lt;br /&gt;
&lt;br /&gt;
===Radio-Board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| SI4735 im SSOP24-Package || U2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3,5mm Stereo-Buchse || X2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Quarz, 32.768kHz, TC26H-Package || Q5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| TDA7050-NF-Amplifier, DIL8-Package || IC4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C16, 25, 32 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 47uF || C40, 42 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Spule SMD, C0402-Package, 180nH || L1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Spule SMD, C0402-Package, 4,7uH || L2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 220nF || C8 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 33pF || C20 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 18pF || C19 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 470nF ||C23  || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 22pF || 18 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 100nF || 24 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 0402-Package, 22kΩ || R29 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Potentiometer SMD, 3223G-Package, 22kΩ || R27, 28 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206-Package || LED2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x4, RM2,54 || P_RADIO || 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54 || L-R-OUT, J_F-ANT, J_AM, P_GPIO || 4&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x1, RM2,54 || P_ANT || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-poliges Flachbandkabel || || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-poliger Stecker, RM2,54 || || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Das Radio-Board besitzt einen digitalen I2C-Radioempfänger (auf 3,3V-Pegel!!! ) U1 und einen Verstärker IC4. Eine Stab- oder Draht-Antenne kann an P_ANT angesteckt werden. Diese Antenne dient dann hauptsächlich dem FM-Empfang (UKW). Wird Jumper J_AM geschlossen, kann diese Antenne auch für den AM-Empfang (LW, MW, KW) mit genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Man kann aber für die AM-Bereiche auch eine separate Ferrit-Antenne an J_F-ANT anschließen. Dann muss der Jumper J_AM offen bleiben.&lt;br /&gt;
&lt;br /&gt;
An der Buchse X2 können 3,5mm-Stereo-Kopfhörer (oder Lautsprecher) eingesteckt werden. An den Potentiometern R27 und 28 können die Lautstärken links und rechts eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
An den beiden Pins der Pinreihe P_GPIO können die beiden GPIOs 1 und 2 (3,3V-Pegel!) des Empfängers U1 genutzt werden.&lt;br /&gt;
&lt;br /&gt;
An den Pins der Pinreihe L-R-OUT können die Signale für rechts und links abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über die mit „0“ und „1“ bezeichneten Pads kann das I2C-Adressbit des SEN-Ausgangs des Empfängers gewählt werden. Hier einfach eine Überbrückung zu „0“ oder „1“ einlöten, wenn gewünscht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Da leider die Löcher für die Stereobuchse etwas zu klein sind, muss diese oben auf die Löcher bzw. die Pads gelötet werden.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Sicherungshalter 20x5mm || F1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Sicherung 20x5mm || F1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Schalter || S1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Schalter oder Jumper, 2x1 Pins, RM2,54 || S2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x2-Jumper, RM2,54 || P_UB || 1&lt;br /&gt;
|-&lt;br /&gt;
| Buchse 2mm/2,5mm || B1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5V-Regler 78x5, TO220- oder TO92-Package || U1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED low current, 3mm || LED1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 820 Ohm || R1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Diode || D1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Bei Bedarf: Jumper, 2x1 Pins, RM2,54 || J_UB, J_U-RP6, J_VCC || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stromversorgung.jpeg|thumb|]]&lt;br /&gt;
Ein externer Akku kann an die Pins P_UB angeschlossen werden (auf Polung achten!). Um ihn zu laden, kann ein Ladegerät an Buchse B1 angeschlossen werden, wobei dafür automatisch die Platine vom Akku getrennt wird.&lt;br /&gt;
&lt;br /&gt;
Es ist auch möglich, einen Akku oder ein Netzgerät an B1 anzuschließen. Um dafür die genannte Trennung der Platine zu überbrücken, kann der Schalter S2 bzw. der dort angebrachte Jumper diese Verbindung herstellen.&lt;br /&gt;
&lt;br /&gt;
Der Schalter S1 schaltet die Batteriespannung entweder des externen Akkus oder des RP6-Eigenen Akkus zum 5V-Regler U1 (jeder Regler der Baureihe 78x5 ist möglich)  durch. Die dickere Linie auf dem Bestückungsdruck zeigt die Kühlseite des 78x5 an. Sie muss also in Platinenmitte zeigen. Möchte man den Akku des RP6 verwenden, muss hierfür Jumper J_U-RP6 gesteckt sein.&lt;br /&gt;
&lt;br /&gt;
Die LED LED1 zeigt an, ob der 5V-Regler U1 in Betrieb ist.&lt;br /&gt;
&lt;br /&gt;
'''ACHTUNG''': ''Es ist auch möglich, den RP6 mit dem am Multi-IO-Modul angeschlossenen externen Akku zu betreiben. Dafür muss Jumper J_UB gesteckt sein und es darf kein Akku im RP6 verbaut sein! Ansonsten können Bauteile und Akkus Schaden nehmen!&lt;br /&gt;
&lt;br /&gt;
''Des Weiteren können die meisten Bereiche (NICHT der Servobereich) mit der 5V-Versorgung des RP6 versorgt werden. Dafür den Jumper J_VCC einstecken, ein weiterer 5V-Regler auf dem Multi-IO-Modul ist dann nicht notwendig. Jedoch wird empfohlen, diesen Jumper nicht zu setzen, sondern einen eigenen 5V-Regler für dieses Modul zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Die Sicherung F1 sollte mindestens 3A zulassen (je nach Anforderung: werden keine Servomotoren verwendet, kann auch eine kleinere Sicherung verwendet werden).&lt;br /&gt;
&lt;br /&gt;
Die Diode D1 lässt einen Stromfluss erst zu, wenn ein Akku falsch gepolt eingesteckt wird. Dann kommt es durch die Diode zum Kurzschluss und die Sicherung F1 verhindert Schäden an der Hardware.''&lt;br /&gt;
&lt;br /&gt;
===USRBUS===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 14polige Wannenbuchse || SV_USRBUS1,2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die 14 Pins des USRBUS sind nicht belegt und stehen zur freien Verfügung. Durch sie kann man Signale des Multi-IO-Moduls mit anderen Modulen austauschen.&lt;br /&gt;
&lt;br /&gt;
Der USRBUS liegt direkt an den Pins des I2C-LED-Treibers, wodurch die Output-Signale dieses Treibers direkt weitergeleitet werden können.&lt;br /&gt;
&lt;br /&gt;
===XBUS===&lt;br /&gt;
&lt;br /&gt;
Der XBUS verbindet wichtige Leitungen von Platine zu Platine, so z.B. GND, Batteriespannung, VCC (5V), Interruptleitungen, I2C-Bus.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 14polige Wannenbuchse || SV_XBUS1,2 || 2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Leitungen des XBUS sind analog zu den anderen RP6-Modulen. Es werden lediglich die I2C-Leitungen, der Int1, GND und (bei Bedarf) die Batteriespannung verwendet.&lt;br /&gt;
&lt;br /&gt;
Es sind diverse Pinherausführungen für die I2C-Leitungen auf dem Multi-IO-Modul vorhanden.&lt;br /&gt;
&lt;br /&gt;
===Der 3,3V-I2C-Bus===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| BSN20, SOT-23-Package || Q6, 11 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 4,7kΩ || R67, 68, 70 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 2,2kΩ || R71 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R69 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 470Ω || 36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C13, 14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 470pF || C12 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3,3V-Regler MIC5219-3.3BM5 , SOT23-5-Package || IC2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-Jumper, RM2,54 || J_INT_ON, J3_I5, J3_SDA, J3_I3, J_3VON || 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Widerstände und Feldeffekttransistoren dienen als Pegelwandler für die Leitungen des I2C (SDA und SCL) und der Interruptleitung (Int1). Die Kondensatoren dienen der Abschirmung. Es muss darauf geachtet werden, dass der 3,3V-Regler MIC5219-3.3BM5 verwendet wird (oder ein identischer).&lt;br /&gt;
&lt;br /&gt;
Die ausgegebene Spannung des 3,3V-Reglers kann über einen ADC-Kanal gemessen werden. Siehe dazu den Punkt &amp;quot;Weitere Pinreihen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Die 3,3V-Spannung kann darüber hinaus über einen ADC-Kanal überwacht werden (über einen Widerstand R36, 470 Ohm, 1206-Package).&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_3VON schaltet den 3,3V-Regler an.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_INT_ON verbindet die Interrupt-Leitungen im 3,3V-Pegel mit der Int1-Leitung des XBUS.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_I5 schaltet einen Pullup-Widerstand (R71) zur Interrupt-Leitung auf der 5V-Seite zu.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_I3 schaltet einen Pullup-Widerstand (R67) zur Interrupt-Leitung auf der 3,3V-Seite zu.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_SDA schaltet einen Pullup-Widerstand für die SDA-Leitung zu.&lt;br /&gt;
&lt;br /&gt;
Nähere Erläuterungen finden sich im Netz, siehe Weblinks.&lt;br /&gt;
&lt;br /&gt;
===Temperatursensor===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Temperatursensor.jpeg|thumb|Der Temperatursensor TCN75A. Schwarzer Jumper: Stromversorgung. Grüne Jumper: Adressbits.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| TCN75-Temperatursensor, MSOP8-Package || U26 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C39 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || J_TCN_ADR || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-Jumper, RM2,54 || J_TCN || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor TCN75 kommt auch bei der [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] zum Einsatz. Er sendet seine Daten via I2C. Die Adressleitungen A0 und A2 können am Jumper J_TCN_ADR eingestellt werden. Das Adressbit A1 ist 0. Der Jumper J_TCN schaltet VCC an/aus.&lt;br /&gt;
&lt;br /&gt;
===16-facher PWM-Modulator===&lt;br /&gt;
&lt;br /&gt;
[[Bild:PWM-Modulator.jpeg|thumb|16-facher PWM-Modulator für den I2C-Bus. Blaue Jumper: Adressbits.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| PCA9685, TSSOP28-Package || U7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0805-Package, 10uF || C10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 0805-Package, 220Ω || R48-R55 || 8&lt;br /&gt;
|-&lt;br /&gt;
| LED low current, 3mm || SL1-4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 820Ω || R5-R8 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || J_S1 bis J_S8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1x8-Jumper, RM2,54 || P_PWM || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || JP_PWM_ADR || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der PCA9685 ist ein 16-facher PWM-Modulator via I2C. Seine Adressbits A0 und A1 sind am Jumper JP_PWM_ADR einstellbar, alle anderen Adressbits sind 0.&lt;br /&gt;
&lt;br /&gt;
Acht Pins (PWM0 bis 7) sind für Servos reserviert. PWM8 schaltet die Servospannung an/aus. PWM12 bis PWM15 sind für die Status-LEDs SL1 bis SL4 reserviert. PWM9 bis PWM11 sind frei.&lt;br /&gt;
&lt;br /&gt;
Beim Einlöten ist natürlich auf die Richtung zu achten! Der Markierungspunkt muss nach rechts unten, also zur Platinenmitte hin zeigen.&lt;br /&gt;
&lt;br /&gt;
===Servos der M32===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Servos_M32.jpeg|thumb|Anschlussmöglichkeit für bis zu acht Servos des RP6-M32-Moduls]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 10-polige Wannenbuchse || SV_SERVOSM32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x1-Jumper, RM2,54 || P_S_M32_5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3x8-Jumper, RM2,54 || P_S_M32_1-4 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Es ist möglich, mit Hilfe der Servolib (siehe Weblinks unten) acht Servos durch die [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] anzusteuern. Hierfür den 10-poligen Wannenstecker der M32 in SV_SERVOSM32 einstecken.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung für Servomotoren===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stromversorgung_Servos.jpeg|thumb|Die wichtigsten Teile der Servo-Stromversorgung mit einem LT1084CP-5]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| BUZ11 Transistor, TO220-Package || Q4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 100kΩ || R11 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R17 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R25 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, grün || LED10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator, E3,5-8-Package, 470uF || C11 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || J_SERVOS-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C50 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kühlrippen für ICs || - || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung eines LT1084CP-5 oder eines LT1084CT-5 als 5V-Regler=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| LT1084CP-5 im TO247-3-Package oder LT1084CT-5 im TO220-Package || IC1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C49 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 470uF oder 220uF || C51 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Potentiometer, PT-10-Package, 500Ω, liegend oder stehend || R26 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung eines 78x5 als 5V-Regler=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 78x5, TO220-Package || IC6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C49, 51 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Servospannung ist über den BUZ11 (Q4) schaltbar. Dieser kann durch einen Jumper J_SERVOS-ON überbrückt werden. Wird ein LT1084CP-5 oder ein LT1084CT-5 als 5V-Regler verwendet, müssen größere Kondensatoren eingebaut werden. Zusätzlich wird ein 500Ω-Potentiometer benötigt, über welche die Spannung im Bereich von etwa 5V bis 7,5V eingestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung eines einfachen 78x5 Reglers werden weniger Teile benötigt. Die Kondensatoren C49 und C51 können nur 100nF betragen. Außerdem sind Regler der 78x5-Reihe bedeutend billiger.&lt;br /&gt;
&lt;br /&gt;
Nachteile der 78x5er-Reihe sind die bedeutend geringere Leistungsumsetzung und die Servospannung kann hier nicht justiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei allen ICs gilt: Die dickere Linie auf dem Bestückungsdruck zeigt die Kühlseite des ICs (5V-Regler und BUZ11) an. Sie muss also beim BUZ11 und den höherwerigen Spannungsreglern zum Platinenrand zeigen, beim 7805 zur Platinenmitte.&lt;br /&gt;
&lt;br /&gt;
===Strom-Spannungs-Temperatur-Sensor===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| LTC2990, MSOP10-Package || U10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R2, 3, 9, 12, 14, 22 || 6&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 22kΩ || R13 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C41 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Shuntwiderstand, 0,05Ω, 5Watt || R10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || J_CURRENT_ADR || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Sensor U10 (Platinenunterseite) überwacht durch den Shunt-Widerstand (R10) den gesamten, von der Platine benötigten Strom, die Batteriespannung und die Versorgungsspannung der Servos. Darüber hinaus misst er seine eigene Temperatur.&lt;br /&gt;
&lt;br /&gt;
Über den Jumper J_CURRENT_ADR sind die Adressbits A0 und A1 einstellbar.&lt;br /&gt;
&lt;br /&gt;
===Echtzeit-Uhr===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Uhr.jpeg|thumb|Die Bauteile der Uhr DS1307. Man sieht den IC-Käfer, den Jumper (schwarz) für die Stromversorgung und den Uhrenquarz.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| DS1307, SOIC8-Package || IC3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C38 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Quarz, 32.768 kHz, TC26H-Package || Q3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Knopfzellenhalter, SN2032 || BAT1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || JP_RTC || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Diese Uhr (Real-Time-Clock, RTC) kann durch Jumper JP_RTC von VCC getrennt werden. Dann, oder aber wenn die Stromversorgung abgeschaltet wird, übernimmt die 3V-Knopfzelle für den Stand-By-Betrieb. Sie kann via I2C ausgelesen und gestellt werden.&lt;br /&gt;
&lt;br /&gt;
===Berührungssensor===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Berührungssensor.jpeg|thumb|Der Berührungssensor mit dem Timer-IC NE555]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| NE555, SO8-Package || IC14 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1MΩ || R58, 59 || 2&lt;br /&gt;
|-&lt;br /&gt;
| BC847, SOT23-Package || Q13, 14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 10uF || C31 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x1-Jumper, RM2,54 || J_NE || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Bei Berührung einer Antenne schaltet der Timerbaustein (IC14) den Output auf etwa 3V. Dies kann an einem ADC gemessen werden. Der Berührungssensor kann entweder auf PF3 des ADC_M256-Wannensteckers oder auf ADC1 (Pin 1) des ADC_Mxxx-Wannensteckers gemessen werden.&lt;br /&gt;
&lt;br /&gt;
Das Signal des Berührungssensors muss analog (nicht mit dem I2C-Bus) ausgelesen werden. Das Signal geht weiter an den Wahljumper (siehe unten) und kann dann auf den ADC_Mxxx-Wannenstecker oder auf dem ADC_M256-Wannenstecker weitergegeben werden.&lt;br /&gt;
&lt;br /&gt;
===Buzzer===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buzzer BMT1205XH7.5 || SG2 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Buzzer ist derselbe wie bei den Modulen [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] und [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]]. Er wird durch Pin 5 des IO_Mxxx-Wannensteckers gesteuert.&lt;br /&gt;
&lt;br /&gt;
Da leider kein geeignetes Datenblatt zu finden war, sind die Löcher leider nicht ganz richtig gesetzt. Das ist nicht weiter schlimm. Einfach die Pins des Buzzers etwas verbiegen, dann geht das. Und das tut dem Buzzer nichts!&lt;br /&gt;
&lt;br /&gt;
===Spannungsteiler===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Spannungsteiler.jpeg|thumb|Die Vorbereitung für Analoge Sensoren]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C26, C27 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206er-Package, Wert je nach Sensor || R41, R42 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 2x2, RM2,54 || P_UT || 1&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
An den Pins P_UT können analoge Sensoren angeschlossen werden, welche einen Spannungsteiler benötigen. Dies könnten z.B. zwei lichtsensitive Widerstände (LDRs) sein. Dafür müssen für R41 und R42 die nötigen Widerstände eingelötet werden. Diese liegen bei vielen LDRs z.B. bei 68kΩ.&lt;br /&gt;
Die Sensoren können nur in Verbindung mit dem M256-Modul verwendet werden, da sie an PF0 und PF1 des ADC_M256-Wannensteckers angeschlossen sind.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Leider ist mir hier ein Fehler unterlaufen. der auf dem Bestückungsdruck auf der Unterseite benannte C42 ist nicht C42, sondern C27!&lt;br /&gt;
&lt;br /&gt;
===EEPROM===&lt;br /&gt;
&lt;br /&gt;
[[Bild:EEPROM.jpeg|thumb|Das EEPROM des Typs 24LCxxx mit den drei Adress-Jumpern]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| I2C-EEPROM, DIL8-Package, 24LCxxx-Serie || IC5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| IC-Sockel, DIL8-Package || IC5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C43 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || J_EEP_A0-2 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
In den IC-Sockel (IC5) können diverse I2C-EEPROMs der 24LCxxx-Serie gesteckt werden.&lt;br /&gt;
Am Jumper J_EEP_A0-2 können die Adressbits A0, A1 und A2 gewählt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluß der anderen Boards===&lt;br /&gt;
&lt;br /&gt;
====Taster-Board====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Tasterboard_befestigt.jpeg|thumb|Das Tasterboard, mittels vier 90grad-Stiften am Multi-IO-Modul verlötet]]&lt;br /&gt;
Das Taster-Board kann an die linke Vorderseite des Multi-IO-Moduls aufgesteckt oder angelötet werden.&lt;br /&gt;
Statt dieses Boards können auch andere Tastaturen mit ADC an die dreipolige Stiftleiste P_TAST-EXT angesteckt werden.&lt;br /&gt;
&lt;br /&gt;
====Bumper-Board====&lt;br /&gt;
&lt;br /&gt;
Das Bumper-Board kann an der 7-poligen Stiftleiste P_BUMP angesteckt werden. Die Bumper-Ausgänge gehen dabei auf Pin 4 (L) und Pin 8 (R) des IO_Mxxx-Wannensteckers. Dafür müssen noch die Jumper bei diesen Pins gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Die analogen (Sharp-Sensoren) oder digitalen (I2C der SRF02) Sensorleitungen sind dieselben. Um das zu realisieren, müssen zwei Jumper gesetzt werden. Dies geschieht über JP2 und JP1. Hier kann man (siehe Platinenaufdruck) die Leitungen des Bumper-Boards wahlweise auf den I2C legen, oder auf PF3 und PF4 des ADC_M256-Wannensteckers.&lt;br /&gt;
&lt;br /&gt;
SDA des I2C liegt dabei auf einer Leitung mit dem Signal des linken Sharp-Sensors, SCL auf dem des rechten.&lt;br /&gt;
&lt;br /&gt;
====Liniensucher-Board====&lt;br /&gt;
&lt;br /&gt;
Das Liniensucher-Board kann mit einem 8-poligen Flachbandkabel an das Multi-IO-Modul gesteckt werden. Jedoch ist die Pinreihe am Liniensucher-Board einreihig (1x8), auf dem Multi-IO-Modul zweireihig (2x4). Dabei bitte die Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
====Radio-Board====&lt;br /&gt;
&lt;br /&gt;
Das Radio-Board hat keinen speziellen Anschluss. Da das Board aber auf 3,3V läuft und via I2C gesteuert werden kann, kann es mit der Pinreihe P_RADIO an den 3,3V-I2C-Bus auf dem Multi-IO-Modul angesteckt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschlussmöglichkeiten weiterer Sensoren===&lt;br /&gt;
&lt;br /&gt;
====DCF77-Funkuhr====&lt;br /&gt;
&lt;br /&gt;
[[Bild:DCF77.jpeg|thumb|50px|]]&lt;br /&gt;
&lt;br /&gt;
Diese kann an die Pinreihe P_DCF angesteckt werden. Zur Sicherheit wird ein Kondensator (100nF, SMD, 1206-Package, C35) empfohlen. Das Signal des DCF77 wird über Pin 1 des IO_Mxxx-Wannensteckers ausgelesen, wenn der Jumper bei Pin 1 geschlossen ist.&lt;br /&gt;
&lt;br /&gt;
====GPS-Modul====&lt;br /&gt;
&lt;br /&gt;
[[Bild:GPS.jpeg|thumb|Der Anschluss des GPS-Moduls erfolgt über 5 Pins]]&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C22 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 4,7kΩ || R39 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R40 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x5-Jumper, RM2,54 || P_GPS || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || J_GPS_5V || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || P_GPS1, J_GPS_TX || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das GPS-Modul Navilock NL-552ETTL kann an P_GPS angeschlossen werden und wird via UART ausgelesen. Dafür müssen die Pegel für Rx des GPS-Moduls jedoch angepasst werden, da das GPS auf 3,3V-Pegel liegt. Ein 5V-Pegel könnte das GPS-Modul beschädigen. Die ausgehenden Daten (Tx) des GPS-Moduls müssen dagegen nicht unbedingt angepasst werden, da UART auch 3,3V-Pegel akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_GPS_5V schaltet das GPS an.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_GPS_TX wählt den Tx-Pin des Master-Moduls ([[RP6]](v2) BASE, [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]], [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]]) aus: bei manchen ist dies der Pin 6 (Jumper muss links stecken), bei manchen der Pin 8 (Jumper muss rechts stecken).&lt;br /&gt;
&lt;br /&gt;
An P_GPS1 kann ein weiterer Mikrocontroller über UART direkt an Rx (mit Pegelwandler) und Tx des GPS-Moduls angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
====2D-Kompass====&lt;br /&gt;
&lt;br /&gt;
Dieses Modul kommuniziert über I2C und kann daher auf allen 5V-, GND- und I2C-Pins des Multi-IO-Modul angesteckt werden. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====3D-Kompass====&lt;br /&gt;
&lt;br /&gt;
Dieses Modul kommuniziert über I2C und kann daher auf allen 5V-, GND- und I2C-Pins des Multi-IO-Modul angesteckt werden. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====9D-Kompass====&lt;br /&gt;
&lt;br /&gt;
[[Bild:9D-3D-Kompass.jpeg|thumb|Anschluss der Kompassmodule]]&lt;br /&gt;
&lt;br /&gt;
Für den 9D-Kompass ist am unteren rechten Rand eine Pinreihe P_KOMPASS angebracht, an welcher das Kompassmodul direkt auf- oder angesteckt werden kann. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Luftfeuchtigkeits-Temperatur-Sensor====&lt;br /&gt;
&lt;br /&gt;
Dieser Sensor misst die Luftfeuchtigkeit und die Temperatur. Er kann über I2C ausgelesen werden und an der Pinreihe P_FEUCHTE an- oder aufgesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C21) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x4, RM2,54 || P_FEUCHTE ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Luftdrucksensor====&lt;br /&gt;
&lt;br /&gt;
Dieser Sensor kann an der Pinreihe P_LUFTDRUCK an- oder aufgesteckt werden. Da er 3,3V Versorgungsspannung und 3,3V-I2C benötigt, liegen diese hier an.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C34) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x6, RM2,54 || P_LUFTDRUCK ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SRF02-Abstandssensoren====&lt;br /&gt;
&lt;br /&gt;
Bis zu vier SRF02 können an die Pinreihen P_SRF1 und P_SRF2 angeschlossen werden. Pinbelegung siehe Platinenaufdruck.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C5) empfohlen.&lt;br /&gt;
&lt;br /&gt;
====Snake-Vision-Modul====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || P_SNAKE ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Snake-Vision-Modul kann an die Pinreihe P_SNAKE angeschlossen werden (auf Pinbelegung achten). Die Sensoren (rechts, links) sowie Taster und GND sind einfach an P_SNAKE anzuschließen.&lt;br /&gt;
&lt;br /&gt;
Für die Versorgungsspannung gibt es drei Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
Überbrückung des Spannungsreglers und der Dioden des Snake-Vision-Moduls und Anschluss von VCC des Snake-Vision-Moduls an VCC des Multi-IO-Moduls. Der Umbau wird im RP6-Forum beschrieben, siehe Weblinks unten.&lt;br /&gt;
&lt;br /&gt;
Die zweite Möglichkeit entspricht der Ersten, mit der Ausnahme, dass VCC des Snake-Vision-Moduls an IO des Multi-IO-Moduls angeschlossen wird. Dadurch kann das Snake-Vision-Modul über einen High-Side-Switch (Q2 und R16) an Pin 4 des IO_Mxxx-Wannensteckers an- und abgeschaltet werden. &lt;br /&gt;
&lt;br /&gt;
Die dafür benötigten Teile sind:&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Transistor SMD, 1206-Package, BC807 || Q2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Widerstand SMD, 1206-Package, 1kΩ || R16 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die letzte Möglichkeit benötigt keinen Umbau des Snake-Vision-Moduls, da an seinen Eingang OC2 eine Ladungspumpe angeschlossen wird. Schließe dafür VCC des Snake-Vision-Moduls an VCC des Multi-IO-Moduls und OC2 an IO. Des Weiteren wird ein Jumper J_OC2 benötigt, welcher den nur hier notwendigen Widerstand R33 als Pulldown hinzuschaltet. Der Jumper J_OC2 sollte also geschlossen sein.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Widerstand SMD, 1206-Package, 2,2..4,7kΩ || R33 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x2-Jumper, RM2,54 || J_OC2 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere Pinreihen====&lt;br /&gt;
* Am vorderen linken Rand kann man bis zu 10 Pins anbringen. Belegung siehe Platinenaufdruck&lt;br /&gt;
* Hinter dem 78x5-5V-Regler (U1) kann man auf 3x6 Pins VCC (die linken sechs Pins), GND (die mittleren sechs Pins) und die Batteriespannung (die rechten sechs Pins) abgreifen.&lt;br /&gt;
* Am Jumper P_5V-I2C kann man 5V, GND, Int1 (5V-Pegel) und die I2C-Leitungen (5V-Pegel) abgreifen.&lt;br /&gt;
* Am Jumper P_3V3-I2C kann man 3,3V, GND, Int1 (3,3V-Pegel) und die I2C-Leitungen (3,3V-Pegel) abgreifen.&lt;br /&gt;
* Vor dem 10-poligen Wannenstecker SV_IO_MXXX  befindet sich eine zweireihige Stiftleiste JP_IO1,2. An JP_IO 1 liegen alle auf der Platine verwendeten Signale für den Wannenstecker SV_IO_MXXX an. An JP_IO2 sind die Pins des Wannensteckers SV_IO_MXXX direkt herausgeführt. Dadurch können diese Pins auch auf andere Weise verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wünscht man eine Verwendung, wie in dieser Anleitung empfohlen, müssen nur alle 9 Jumper gesetzt werden.&lt;br /&gt;
Da Pin 2 jedoch nur von der M32 angesprochen werden kann (auf anderen Modulen ist dieser Pin auf GND) und Pin 9 nur von M32 oder der M128, liegt an beiden der Transistor zum Schalten des Liniensucher-Boards. Damit kann dieses Board sowohl von der M32 (Pin 2 oder Pin 9) als auch von der M256 (Pin 9) aus geschaltet werden. Lediglich die M128 kann diesen Transistor nicht schalten.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Natürlich steht es jedem frei, andere Pins des Wannensteckers mit der IO-Leitung des Liniensucher-Boards zu verschalten.&lt;br /&gt;
&lt;br /&gt;
* Ähnlich wie im gerade genannten Fall ist es auch beim 10-poligen Wannenstecker SV_ADC_MXXX. Jedoch sind hier manche Pins (1, 3, 5 und 6) direkt auf einen Wähl-Jumper JP1,2,4 gelegt, wo sie mit Jumpern weiter auf Signale gelegt werden können. Nur Pin 6 ist nicht weitergeführt und steht zur eigenen Verfügung, ist jedoch nur bei dem M128-Modul  als ADC verwendbar, auf allen anderen Modulen liegt hier GND an.&lt;br /&gt;
* Vor dem 14-poligen Wannenstecker SV_ADC_M256 liegt eine weitere solche doppreihige Stiftleiste: JP_ADIO. Dieser verbindet wieder durch setzen der Jumper die Signale der Platine mit den Pins des Wannensteckers.&lt;br /&gt;
* Der Jumper J_WAHL, eine 2x6-Stiftleiste, kann dazu verwendet werden, einige Signale auf verschiedene Arten weiterzuleiten:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Wahljumper.jpeg|thumb|]]&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Eigehendes Signal''' || '''1. Möglichkeit''' || '''2. Möglichkeit'''&lt;br /&gt;
|-&lt;br /&gt;
| Sharp '''links''' bzw. I2C der SRF02 || '''PF4''' des ADC_M256 (für Sharp-Verwendung) || '''SCL''' des I2C (für SRF02-Verwendung)&lt;br /&gt;
|-&lt;br /&gt;
| Sharp '''rechts''' bzw. I2C der SRF02 || '''PF3''' des ADC_M256 (für Sharp-Verwendung) || '''SDA''' des I2C (für SRF02-Verwendung)&lt;br /&gt;
|-&lt;br /&gt;
| Messung der '''3,3V'''-Spannung über Widerstand R36|| '''PF4''' des ADC_M256 || '''Pin 3''' des ADC_Mxxx&lt;br /&gt;
|-&lt;br /&gt;
| NE555-'''Berührungssensor''' || '''PF3''' des ADC_M256 || '''Pin 1''' des ADC_Mxxx&lt;br /&gt;
|-&lt;br /&gt;
| CNY70-L ('''linker''' der drei Sensoren) || '''Pin 1''' des ADC_Mxxx || -&lt;br /&gt;
|-&lt;br /&gt;
| CNY70-M ('''mittlerer''' der drei Sensoren) || '''Pin 3''' des ADC_Mxxx || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
&lt;br /&gt;
Dies soll eine Sammlung mit den bisher bekannten Problemen sein, um sich künftig bei ähnlichen Problemen schneller zurecht zu finden.&lt;br /&gt;
&lt;br /&gt;
===Taster des Tasterboards sind nur einzeln abzufragen===&lt;br /&gt;
&lt;br /&gt;
'''Das Problem''': Leider sind die Taster des Tasterboards nur einzeln abzufragen, da sie sich gegenseitig nach unten bedingen. Das heißt: Wer Taster 1 und drei drückt, wird nur Taster 1 registrieren. &lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': Eine Lösung dafür gibt es nicht direkt, aber man kann anstatt des Tasterboards jede andere analoge Tastatur an die drei Pins hinter dem Tasterboard anschließen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LTC2990-Strom-Spannungs-Temperatursensor===&lt;br /&gt;
&lt;br /&gt;
Des öfteren kam es vor, dass dieser Sensor keine oder nur unvernünftige Werte ausgab. So z.B. in diesem Output:&lt;br /&gt;
&lt;br /&gt;
 Temperature:  0.0Â°&lt;br /&gt;
 BAT Current:  0.0mA&lt;br /&gt;
 BAT Voltage:  0.0V&lt;br /&gt;
 SERVO Volt.:  0.0V&lt;br /&gt;
 VCC Voltage:  2.5V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Der Grund''': meist lag es an einem kleinen Kontaktproblem eines der Pins, vermutlich GND- oder VCC-Pin.&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': einfach mit einem Lötkolben (Temperatur etwa 350 Grad C) vorsichtig über die Beinchen dieses ICs streichen, ohne weiteren Lötzinn zu verwenden. Dadurch wird der schon aufgebrachte Lötzinn neu geschmolzen und kann wieder Kontakte herstellen.&lt;br /&gt;
&lt;br /&gt;
===Falscher 3,3V-Regler verwendet===&lt;br /&gt;
&lt;br /&gt;
Wer einen 3,3V-Regler des Typs SPX3819 auf seinem Board hat anstelle des MIC5219-3.3YMS, der wird feststellen, dass die die Regleung auf 3,3V nicht oder nur schlecht funktioniert.&lt;br /&gt;
&lt;br /&gt;
'''Der Grund''': Der SPX3819 arbeitet mit Hilfe eines Spannungsteilers, bestehend aus zwei Widerständen R1 und R2. Die ausgegebene Spannung definiert sich nach folgender Formel:&lt;br /&gt;
&lt;br /&gt;
V(out) = 1,235 * ( 1 + ( R1 / R2 ) )&lt;br /&gt;
&lt;br /&gt;
Somit ergeben sich gute Werte für R1 = 36kOhm und R2 = 22kOhm.&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': Nimm diese zwei SMD-Widerstände im 0805er Package. Löte R1 (36kOhm) auf die beiden einzelnen Beinchen des 3,3V-Reglers und R2 (22kOhm) auf den C12. Ob du C12 vorher ausbaust, oder drinnen lässt, ändert nichts.&lt;br /&gt;
&lt;br /&gt;
Wer im E12er Regime bleiben möchte kann einen 68k Ohm (R1) und einen 39k Ohm (R2) nehmen, dann kommen 3,38V heraus.&lt;br /&gt;
&lt;br /&gt;
===Verwendung eines LT1084===&lt;br /&gt;
&lt;br /&gt;
[[Bild:LT1084CT.jpeg|thumb|91-Ohm-Widerstand zwischen &amp;quot;Adj&amp;quot; und &amp;quot;Out&amp;quot; eines LT1084CT]]&lt;br /&gt;
&lt;br /&gt;
Auch dieser Spannungsregler kann für die Servos verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Dafür benötigt man einen 91 Ohm widerstand R1 (bedrahtet oder SMD 1206) und das 500 Ohm-Standardpotentiometer R2, welches auch bei den anderen Spannungsreglern zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
R1 lötet man zwischen die Beinchen Adj und Out des LT1084.&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich die Outputspannung zu&lt;br /&gt;
&lt;br /&gt;
V(out) = 1,25 * ( 1 + R2 / R1 )&lt;br /&gt;
&lt;br /&gt;
V(out) ist dann von etwa 2 bis etwa 8 Volt regelbar. Verwendet man also nur den oberen Einstellbereich des Potis, kann man wie üblich zwischen 5V und 7,5V regeln, man muss nur etwas besser aufpassen, dass man nicht zu hohe Spannungen ansetzt.&lt;br /&gt;
&lt;br /&gt;
1.       Poti R2 auf Maximalstellung 500 Ohm, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 500/91) = 8,11V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.       Poti R2 auf niedriger Stellung 50 Ohm, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 50/91) = 1,94V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.       Potistellung R2 bei Ausgangsspannung von 5V, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 273/91) = 5,0V è Also 273 Ohm (etwas über Mittelstellung 250 Ohm)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.       Potistellung R2 bei Ausgangsspannung von 7,5V, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1+ 455/91) = 7,5V è Also 455 Ohm (fast max. Stellung)&lt;br /&gt;
&lt;br /&gt;
===Pins zu eng für manche Bauteile===&lt;br /&gt;
&lt;br /&gt;
'''Welche Teile?''' Dieses Problem betrifft eigentlich nur die Stereobuchse des Radiomoduls, den Shunt-Widerstand zur Strommessung und den großen 5V-Regler (LT1084CP-5).&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''' Bitte NIEMALS versuchen, die Löcher aufzubohren oder dergleichen. Das beschädigt die Platine, im schlimmsten Fall irreparabel.&lt;br /&gt;
&lt;br /&gt;
Die Stereobuchse kann man einfach auf die Pins Löten, anstatt sie in die Pins zu stecken. Das hält gut genug.&lt;br /&gt;
&lt;br /&gt;
Für den 5V-Regler hat Dirk folgende Lösung präsentiert: zuerst die Beinchen ganz oben am IC mit Silberdraht (nicht isoliert) umwickeln, sodass die drei Pins kurzgeschlossen sind. Dies vermeidet Aufladungen eines Pins beim Feilen der Beinchen. Dann die Beinchen in der gewünschten Länge abzwicken (etwa 3mm unterhalb der Verbreiterung). Nun die beiden äußeren Pins VON AUßEN mit einer Metall-Flachfeile schmaler feilen. Danach den mittleren Pin abwechselnd von beiden Seiten feilen.&lt;br /&gt;
&lt;br /&gt;
Beim Einlöten darauf achten, dass der GND-Pin des Reglers nicht zu dicht am Vorwiderstand der Servo-LED (R25) sitzt, um hier Kurzschlüsse zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
Den Shunt-Widerstand entweder vorher auf die richtige Länge kürzen und dann sanft in die Löcher Zwängen, oder die Beine etwas schmälern, z.B. durch Feilen.&lt;br /&gt;
&lt;br /&gt;
===Beschriftung===&lt;br /&gt;
Diese Probleme sind nicht wirklich wichtig, sollen aber nicht unerwähnt bleiben!&lt;br /&gt;
&lt;br /&gt;
- Die Beschriftung auf dem Radioboard sagt, dass man dort 5V anschließen kann. Das geht leider nicht, da das Modul nur auf 3,3V läuft! Bitte daran denken: I2C (SDA und SCL) dürfen nur an den 3,3V-I2C des Multi-IO-Boards und die Spannungsversorgung darf nur mit 3,3V geschehen. Auch alle anderen Ein- und Ausgänge (GPIO1, GPIO2, R und L) dürfen nur im 3,3V-Pegel angesprochen werden, sollte man sie benötigen.&lt;br /&gt;
&lt;br /&gt;
- An den vorbereiteten Spannungsteilern &amp;quot;LDR&amp;quot; ist ein Kondensator falsch beschriftet: Nicht C42 ist richtig, sondern C27, ein 1206er 100nF-Kondensator. Auch ist es hier besser, die 100nF-Kondensatoren auf der Oberseite zu verlöten (dort, wo die beiden Widerstände R41 und R42 sitzen) und diese beiden Widerstände an die Kondensatorplätze auf der Unterseite zu verlöten. Denn bei voll bestückter Platine wird es nachträglich schwierig, die Widerstände ein- oder umzulöten.&lt;br /&gt;
&lt;br /&gt;
- C28 am Liniensucher-Board ist nur mit einem &amp;quot;C&amp;quot; beschriftet. Ist aber ein &amp;quot;normaler&amp;quot; 100nF-Kondensator, 1206er Package.&lt;br /&gt;
&lt;br /&gt;
- R46 auf dem Liniensucher-Board ist nur zweimal mit seinem Wert (15kOhm) beschriftet, nicht aber mit seinem Namen &amp;quot;R46&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
- Die Bumperwiderstände R23 und R24 sind nur mit 470 Ohm-Widerständen zu bestücken, wenn man keine Low-Current-LEDs an den Bumpern möchte, dann kann man diese LEDs aber nicht mehr mit dem uC ansprechen. Will man sie auch vom uC her an/abschalten, müssen R23 und R24 mit 270-Ohm-Widerständen (1206er Package) bestückt werden.&lt;br /&gt;
&lt;br /&gt;
- Der &amp;quot;große&amp;quot; Kondensator (470uF, E3,5-8-Package, Elektrolyt) ist nicht mit seiner Nummer beschriftet: Es ist der C11.&lt;br /&gt;
&lt;br /&gt;
- R1 und L1 auf dem Liniensucher-Board sind falsch herum beschriftet.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
&lt;br /&gt;
Nicht alle der in diesen Listen aufgeführten Teile werden für den Bau benötigt. Bitte dafür die Anleitung genau lesen. Man muss nicht die gesamte Platine aufbauen, man kann auch nur einen Teil der Schaltung realisieren.&lt;br /&gt;
Für das Löten lese bitte eine Lötanleitung und übe das Löten vorher. Ansonsten können Teile durch den zu langen Kontakt mit dem Lötkolben überhitzen oder es kann zu Kurzschlüssen auf der Platine kommen.&lt;br /&gt;
Die angegebenen Bestellnummern sind nur ein Vorschlag, wo die Teile gekauft werden.&lt;br /&gt;
&lt;br /&gt;
Die Teileliste samt Bestellnummern der Shops und Preisen wird als MS Excel-Sheet veröffentlicht, Lieferanten findet man unter [[Bezugsquellen]].&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[RP6]]&lt;br /&gt;
* [[RP6 - Programmierung]]&lt;br /&gt;
* [[RP6v2]]&lt;br /&gt;
* [[RP6 Kamera - Mitmach-Projekt]]&lt;br /&gt;
* [[RP6v2 I2C-Portexpander]]&lt;br /&gt;
* [[RP6v2 USB-RS232-Adapter]]&lt;br /&gt;
* [[RP6v2 Orientierung]]&lt;br /&gt;
* [[RP6 Multi IO Projekt - Software]]&lt;br /&gt;
* [[CCRP5]]&lt;br /&gt;
* [[Yeti]]&lt;br /&gt;
* [[Asuro]]&lt;br /&gt;
* [[C't-Bot]]&lt;br /&gt;
* [[Bezugsquellen]]&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [https://www.dropbox.com/sh/7fab3gyweezdrcy/l4uw9djFxP HIER] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.'''&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=servo+lib Servo-Lib für M32 von Dirk]&lt;br /&gt;
&lt;br /&gt;
[http://www.rn-wissen.de/index.php/RP6v2_Orientierung Orientierungs-Mitmach-Projekt von Dirk]&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/59387-RP6%28v2%29-Experimentierplatine-Orientierung Mitmachprojekt Orientierung]&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/47843-Projekt-RP6-mit-Snake-Vision Umbau des Snake Vision für RP6]&lt;br /&gt;
&lt;br /&gt;
[http://www.rn-wissen.de/index.php/RP6v2_I2C-Portexpander/ EEPROM]&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
--[[Benutzer:Fabian|fabqu]] 21:30, 17. Feb 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Dirk|Dirk]] 08:48, 19. Feb 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25607</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25607"/>
				<updated>2014-12-02T07:20:22Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
[[Bild:ÜbersichtArduIO.PNG|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung [18]&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board [19] und [20]&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung''' [2]&lt;br /&gt;
* '''XBUS''' [22]&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3) [1],  [4], [5] und [13]&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen [3] und [6]&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs [7] via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs [8]&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels [9]&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt [10]&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert [12]&lt;br /&gt;
** LC-Schwingkreis gegen Spannungseinbrüche [11]&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar) [16]&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht [14] und [15]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:%C3%9CbersichtArduIO.PNG&amp;diff=25606</id>
		<title>Datei:ÜbersichtArduIO.PNG</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:%C3%9CbersichtArduIO.PNG&amp;diff=25606"/>
				<updated>2014-12-02T07:16:38Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Übersicht über alle Features des ArduIO-Boards&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Übersicht über alle Features des ArduIO-Boards&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25605</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25605"/>
				<updated>2014-12-01T20:14:35Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Jumper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
Weitere Jumperstellungen und Möglichkeiten finden sich unter dem Link - unten in den Weblinks!&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25604</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25604"/>
				<updated>2014-12-01T20:12:11Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:IO-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:IO-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-3.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:LEDs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:ADC-3.jpg&amp;diff=25603</id>
		<title>Datei:ADC-3.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:ADC-3.jpg&amp;diff=25603"/>
				<updated>2014-12-01T20:11:23Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: ADC #3 und IO #2 für den Arduino&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ADC #3 und IO #2 für den Arduino&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:IO-3.jpg&amp;diff=25602</id>
		<title>Datei:IO-3.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:IO-3.jpg&amp;diff=25602"/>
				<updated>2014-12-01T20:10:23Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: IO # 3 mit Wannensteckern und Adressjumper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IO # 3 mit Wannensteckern und Adressjumper&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:IO-1.jpg&amp;diff=25601</id>
		<title>Datei:IO-1.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:IO-1.jpg&amp;diff=25601"/>
				<updated>2014-12-01T20:09:40Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: IO # 1 mit Wannensteckern und Adressjumper&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IO # 1 mit Wannensteckern und Adressjumper&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:LEDs.jpg&amp;diff=25600</id>
		<title>Datei:LEDs.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:LEDs.jpg&amp;diff=25600"/>
				<updated>2014-12-01T20:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Fünf LED-Platinen für Scheinwerfer und Blaulicht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fünf LED-Platinen für Scheinwerfer und Blaulicht&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25599</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25599"/>
				<updated>2014-12-01T14:09:47Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* 3,3V-Regler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar (langer, schwarzer Jumper) on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25598</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25598"/>
				<updated>2014-12-01T14:09:24Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* 3,3V-Regler */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25597</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25597"/>
				<updated>2014-12-01T14:08:37Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Anschluss von externen Spannungsquellen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den langen, schwarzen Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den gelben dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25596</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25596"/>
				<updated>2014-12-01T14:03:06Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:RP6-ArduIO Jumper-Default.png|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts und im Header-Foto ganz oben. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:RP6-ArduIO_Jumper-Default.png&amp;diff=25595</id>
		<title>Datei:RP6-ArduIO Jumper-Default.png</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:RP6-ArduIO_Jumper-Default.png&amp;diff=25595"/>
				<updated>2014-12-01T14:02:21Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: RP6-ArduIO Jumper-Default-Stellung bei Auslieferung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;RP6-ArduIO Jumper-Default-Stellung bei Auslieferung&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_Multi_IO_Projekt&amp;diff=25594</id>
		<title>RP6 Multi IO Projekt</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_Multi_IO_Projekt&amp;diff=25594"/>
				<updated>2014-12-01T11:51:58Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Verwendung eines LT1084 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=RP6 Multi IO Erweiterungsmodul=&lt;br /&gt;
&lt;br /&gt;
[[Bild:Multi-IO_Gesamtansicht.jpg|thumb|]]&lt;br /&gt;
&lt;br /&gt;
Das RP6-Multi-IO Erweiterungsmodul besteht aus fünf Platinen.&lt;br /&gt;
Eine Hauptplatine, im üblichen RP6-Layout, enthält eine Vielzahl möglicher Sensoren und Aktoren wie eine eigene Stromversorgung mit 5V-Regler, Temperatursensor, Stromsensor, Spannungssensoren, Berührungssensor, Servo-Ansteuerung, LEDs, Buzzer etc.&lt;br /&gt;
An sie können die vier weiteren Platinen angesteckt werden. Diese sind eine Bumper-Platine zum Anbringen am Heck des RP6, eine Radio-Platine, eine Platine mit vier Tastern und eine mit einem Liniensensor-Array von fünf CNY70-Reflexoptokopplern.&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den [http://www.rn-wissen.de/index.php/RP6_Multi_IO_Projekt#Weblinks Weblinks].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese fünf Platinen können bei fabqu ( http://www.roboternetz.de/community/members/47148-fabqu oder fabqu@web.de ) bestellt werden. Sie sind mit Lötstoplack (schwarz) sowie beidseitig mit einem Bestückungsdruck (in weiß) versehen.&lt;br /&gt;
&lt;br /&gt;
Sie sind nicht aufgebaut, aber fabqu bietet an, die schwer einzulötenden SMD-ICs (und bei Bedarf auch alle anderen SMD-Bauteile) in einer Sammelbestellung zu bestellen und einzulöten.&lt;br /&gt;
&lt;br /&gt;
'''Leider gibt es nur noch eine Platine!!!'''&lt;br /&gt;
&lt;br /&gt;
==Features des Multi-IO-Moduls==&lt;br /&gt;
===On-Board-Sensoren===&lt;br /&gt;
* Externe Stromversorgung&lt;br /&gt;
** Bis zu 10 Volt&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* USRBUS&lt;br /&gt;
** Pinherausführungen&lt;br /&gt;
&lt;br /&gt;
* Alle 14 Pins stehen zur freien Verfügung&lt;br /&gt;
* XBUS&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel) und Int1 (5V- und 3,3V-Pegel)&lt;br /&gt;
* Temperatur-Sensor&lt;br /&gt;
** [http://ww1.microchip.com/downloads/en/devicedoc/21490b.pdf TCN75] (gleicher Sensor ist bei M128 verbaut)&lt;br /&gt;
** Adressbits A0 und A2 einstellbar&lt;br /&gt;
** Sensor ist durch Jumper deaktivierbar&lt;br /&gt;
* 16-fach PWM-Modulator via I2C [http://www.nxp.com/documents/data_sheet/PCA9685.pdf PCA9685]&lt;br /&gt;
** schaltet 8 Servos&lt;br /&gt;
** schaltet 4 LEDs&lt;br /&gt;
** schaltet Versorgungsspannung der Servomotoren zu/ab&lt;br /&gt;
** 3 freie Pins&lt;br /&gt;
** Der PCA9685 ist direkt neben dem USRBUS angebracht, um hier eine Fortführung der Daten zu ermöglichen&lt;br /&gt;
* Servo-Lib für [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]]&lt;br /&gt;
** 8 Servos für [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] nutzbar durch [http://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=servo+lib Servo-Lib von Dirk]&lt;br /&gt;
** siehe Weblinks unten&lt;br /&gt;
* Spannungsversorgung Servos&lt;br /&gt;
** Eigene Spannungsversorgung für alle Servomotoren&lt;br /&gt;
** Abgesichert durch 470uF-Kondensator&lt;br /&gt;
** Verwendung drei verschiedener 5V-Regler möglich ([http://www.fairchildsemi.com/ds/LM/LM7805.pdf 7805], [http://www.farnell.com/datasheets/42567.pdf LT1084CP-5] oder [http://www.farnell.com/datasheets/84018.pdf LT1084CT-5])&lt;br /&gt;
** Bei Verwendung eines LT…-5 ist die Spannung durch Poti im Bereich 5..7,5V einstellbar&lt;br /&gt;
* Strom-Spannungs-Überwachung&lt;br /&gt;
** [http://cds.linear.com/docs/en/datasheet/2990fc.pdf LTC2990] überwacht via I2C Batteriespannung, Servospannung, Stromverbrauch der gesamten Platine sowie eigene Temperatur&lt;br /&gt;
** Analoge Messung der 3,3V-Spannung&lt;br /&gt;
* Echtzeit-Uhr [http://datasheets.maximintegrated.com/en/ds/DS1307.pdf DS1307]&lt;br /&gt;
** Via I2C&lt;br /&gt;
** 5V sind durch Jumper deaktivierbar&lt;br /&gt;
** StandBy durch 3V-Knopfzelle (20xx-Reihe) möglich&lt;br /&gt;
* Berührungssensor&lt;br /&gt;
** Timerbaustein [http://www.makershed.com/v/vspfiles/assets/images/ne555.pdf NE555] registriert Berührung einer Antenne&lt;br /&gt;
** Via ADC&lt;br /&gt;
* Buzzer&lt;br /&gt;
* Spannungsteiler&lt;br /&gt;
** Vorbereitet&lt;br /&gt;
** Anschlussmöglichkeit vieler eigener Sensoren&lt;br /&gt;
* I2C-EEPROM der 24LCxxx-Serie&lt;br /&gt;
* Anschlussmöglichkeit der IO- und ADC-Wannenstecker von [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] und [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]]&lt;br /&gt;
&lt;br /&gt;
===Weitere Platinen===&lt;br /&gt;
&lt;br /&gt;
* Jede hier beschriebene Platine besitzt einen vorkonfektionierten Anschluss auf der Hauptplatine&lt;br /&gt;
* Taster-Board&lt;br /&gt;
** Vier Taster&lt;br /&gt;
** Widerstandskaskade für Messung mit einem ADC&lt;br /&gt;
* Bumper-Board&lt;br /&gt;
** Zwei Bumper mit LEDs&lt;br /&gt;
** Zwei durch Transistor abschaltbare Sharp-GP2Dxx- oder Radar-Abstandssensoren (analog) oder zwei SRF02-Sensoren (digital via I2C)&lt;br /&gt;
* Liniensucher-Board für Liniensensor&lt;br /&gt;
** Bis zu 5 [http://www.vishay.com/docs/83751/cny70.pdf CNY70]-Reflexoptokoppler&lt;br /&gt;
** Durch Transistor abschaltbar&lt;br /&gt;
** LED zeigt Status&lt;br /&gt;
** Durch Jumper Wahl zwischen drei oder fünf CNY70-Reflexoptokopplern&lt;br /&gt;
* Radio-Board&lt;br /&gt;
** [http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/Si4735%20Datasheet.pdf SI4735] digitaler Radio-Empfänger&lt;br /&gt;
** [http://www.b-kainka.de/Daten/Analog/TDA7050_CNV_2.pdf TDA7050] Verstärker mit Stereo-Kopfhörerbuchse&lt;br /&gt;
** Potentiometer zur Lautstärkeregulierung&lt;br /&gt;
** AM und FM möglich&lt;br /&gt;
* Anschlüsse&lt;br /&gt;
** Taster-Board kann an Hauptplatine angesteckt oder aufgelötet werden&lt;br /&gt;
** Anschlüsse für Bumper- und Liniensensor-Board&lt;br /&gt;
&lt;br /&gt;
===Erweiterbare Sensoren===&lt;br /&gt;
* DCF77-Funkuhrempfänger&lt;br /&gt;
* GPS-Modul Navilock &amp;quot;NL-552ETTL&amp;quot; via UART (oder vergleichbare GPS-Sensoren, Levelshifter 5V&amp;lt;-&amp;gt;3,3V on Board)&lt;br /&gt;
* Aufsteckbarer 2D-Kompass &amp;quot;HDMM01&amp;quot; (Kompass mit 2-Achsen-Beschleunigungssensor)&lt;br /&gt;
* Aufsteckbarer 3D-Kompass &amp;quot;LSM303DLM&amp;quot; (Kompass mit 3-Achsen-Beschleunigungssensor)&lt;br /&gt;
* Oder aufsteckbarer 9D-Kompass &amp;quot;MinIMU-9 v2&amp;quot; (Kompass mit 3-Achsen-Beschleunigungssensor und 3-Achsen-Gyro)&lt;br /&gt;
* Aufsteckbarer Luftfeuchtigkeit- und Temperatur-Sensor &amp;quot;HYT 221&amp;quot;&lt;br /&gt;
* Aufsteckbarer Luftdrucksensor &amp;quot;BMP085&amp;quot;&lt;br /&gt;
* Vier weitere Ultraschall-Abstandssensoren (z.B. &amp;quot;SRF02&amp;quot; )&lt;br /&gt;
* &amp;quot;SnakeVision&amp;quot;-Modul&lt;br /&gt;
* Jeder I2C-Sensor oder -Aktor; sowohl für 5V- als auch für 3,3V-Pegel&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von Dirk erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen.&lt;br /&gt;
Es ist geplant, eine Bibliothek mit allen fest installierten Sensoren und Aktoren aufzubauen. Darüber hinaus soll sich eine weitere Bibliothek mit Umwelt-Fragen beschäftigen (Luftdruck, Luftfeuchtigkeit, Temperatur) sowie eine mit den Sensoren für Lageerkennung (GPS, 2D-, 3D- oder 9D-Kompass).&lt;br /&gt;
Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[RP6 Multi IO Projekt - Software|HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
Die Hardware des Multi-IO-Moduls muss erst verlötet werden. Bitte lese dafür ausführliche eine Lötanleitung! Diese finden sich u.a. im Netz:&lt;br /&gt;
[[Löt-Tutorial]].&lt;br /&gt;
&lt;br /&gt;
Du musst nicht alle Komponenten einbauen! Du kannst diejenigen einbauen, welche du benötigst oder ausprobieren möchtest. Die Platine ist jederzeit erweiterbar.&lt;br /&gt;
Nach dem Löten kann es sinnvoll sein, die Lötstellen durch „Plastik 70“-Spray vor Korrosion zu schützen.&lt;br /&gt;
&lt;br /&gt;
===Anschluß anderer Module===&lt;br /&gt;
[[Bild:Anschlüsse.jpg|thumb|Anschluss des RP6-M256-Moduls über drei Flachbandkabel]]&lt;br /&gt;
An den 10-poligen Wannensteckern IO_Mxxx (SV_IO_Mxxx ) und ADC_Mxxx (SV_ADC_Mxxx) an der Rückseite des Multi-IO-Moduls können IO- und ADC-Wannenstecker der Module [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] und [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]] angesteckt werden. Der 10-polige IO-Wannenstecker „SV_SERVOSM32“ der M32 kann zusätzlich für acht Servos genutzt werden.&lt;br /&gt;
Für die [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]] steht ein zusätzlicher, 14-poliger Wannenstecker (SV_ADC_M256) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Wofür''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 10-poliges Flachbandkabel, ca. 20cm || Für IO_Mxxx und ADC_Mxxx || 2&lt;br /&gt;
|-&lt;br /&gt;
| 10-poliger Wannenstecker || Für IO_Mxxx und ADC_Mxxx || 4&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliges Flachbandkabel, ca. 10cm || Für XBUS und USRBUS || 2&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliges Flachbandkabel, ca. 20cm || Für ADC_M256 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 14-poliger Wannenstecker || Für ADC_M256, XBUS und USRBUS || 6&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 10-poliges Flachbandkabel, ca. 20cm || Für Servos der M32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 10-poliger Wannenstecker || Für Servos der M32 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Taster-Board===&lt;br /&gt;
[[Bild:Tasterpoard.jpeg|thumb|Das Tasterboard mit den vier Tastern, auf der Hauptplatine befestigt]]&lt;br /&gt;
Das Taster-Board kann an der Vorderseite der Hauptplatine befestigt werden.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Taster || T1-T4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R20, 21, 34, 35 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x1 Buchse, RM2,54 || P_T1, 2, 3, 4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x1 Pin 90°, RM2,54 || P_T1, 2, 3, 4 || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
Die vier Taster schalten eine Widerstandkaskade, welche als Spannungsteiler fungiert. Dadurch können sie – analog zu den Tastern der [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] – mit nur einem ADC-Kanal gemessen werden.&lt;br /&gt;
Das Board kann entweder mit den vier Lötpunkten am vorderen, linken Rand des Multi-IO-Moduls angelötet werden, oder mittels vier rechtwinkliger Pins in vier Buchsen dort eingesteckt werden.&lt;br /&gt;
&lt;br /&gt;
===Bumper-Board===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bumperboard.jpeg|thumb|Das zur Multi-IO gehörende Bumperboard am Heck des RP6 befestigt. Aufmontiert sind die beiden Bumper sowie zwei analoge Sharp GP2D12-IR-Abstandssensoren.]]&lt;br /&gt;
Die Schraublöcher sind so angepasst, dass das Bumper-Board am Heck des RP6 angebracht werden kann.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Bumper|| || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 750Ω || R30, 31 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 270Ω || R23, 24 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 470Ω || R36 || 2&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, low-current, rot || LED7, 8 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x7, RM2,54, stehend oder 90° || P_BUMPER || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x4, RM2,54 || P_BUMPER1, 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| 7-poliges Flachbandkabel ||  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 7-poliger Stecker, RM2,54 ||  || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der Sharp-Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Transistor BC807, SOT23-Package || Q1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1kΩ || R4|| 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_SHARP-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x3, RM2,54, für Sharp-Sensoren || P_SHARP1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung von Radarsensoren RSM1650=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Transistor BC807, SOT23-Package || Q1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1kΩ || R4|| 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_SHARP-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Pinreihe 1x3, RM2,54, für Sharp-Sensoren || P_RADAR1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der SRF02=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C3, 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x5, RM2,54, für SRF02 || P_SRF__1, 2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
Die Bumper-Taster haben drei Pins: Eingang (5V), Ausgang wenn gedrückt, Ausgang wenn nicht gedrückt. Hier werden nur der Eingang und der Ausgang im gedrückten Fall verwendet. Dieser schaltet dann auf die LEDs und die Pins 2 (rechts) und 3 (links) von P_BUMPER durch. Die LEDs können zusätzlich über den IO-Kanal angesprochen, also geschaltet werden (analog zur [[RP6]](v2) BASE) .&lt;br /&gt;
Es können zwei Sharp-Abstandssensoren angebracht werden, zwei Radar-Abstandssensoren oder zwei SRF02. Es werden dann nur die jeweiligen Kondensatoren und Pinreihen benötigt.&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der Sharp-Sensoren GP2Dxx=====&lt;br /&gt;
Werden die Sharp-Sensoren verwendet, sind die Kondensatoren C36 (100nF) und C37 (10uF) anzubringen sowie der Transistor Q1 (BC807) und der zugehörige Widerstand R4 (1kΩ). Die Sensoren können an den 1x3-Pinreihen P_SHARP1 und 2 angesteckt oder angelötet werden. Die Sharps können durch Jumper J_SHARP-ON oder durch den Transistor geschaltet werden.&lt;br /&gt;
&lt;br /&gt;
=====Verwendung von Radar-Sensoren RSM1650=====&lt;br /&gt;
Werden die Radar-Sensoren verwendet, sind die Kondensatoren C36 (100nF) und C37 (10uF) anzubringen sowie der Transistor Q1 (BC807) und der zugehörige Widerstand R4 (1kΩ). Die Sensoren können an den 1x3-Pinreihen P_Radar1 und 2 angesteckt oder angelötet werden. Die Radarsensoren können durch Jumper J_SHARP-ON oder durch den Transistor geschaltet werden. Die dreipoligen Stiftleisten für die Radarsensoren haben leider eine etwas andere Belegung (VCC-Signal-GND) als die Sharp-Sensoren (VCC-GND-Signal) .&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Leider haben diese Radarsensoren keinen eingebauten Verstärker.&lt;br /&gt;
&lt;br /&gt;
Eine Anleitung für so einen Verstärker findet ihr [http://www.jokesoft.de/weidmann/index.php?option=com_content&amp;amp;view=section&amp;amp;layout=blog&amp;amp;id=17&amp;amp;Itemid=21 HIER]. Zu kaufen gibts das dann [http://s164863055.e-shop.info/shop/article_ART0006/Radarsensor-165-inkl.-Verst%C3%A4rkung-(73-dB).html?sessid=i3esovGNRhZtFaDorAQGpYddJY6il5knlqkgDXpJXs5XQHXTA27r12wr3rhlXqRE&amp;amp;shop_param=cid%3D1%26aid%3DART0006%26 HIER].&lt;br /&gt;
&lt;br /&gt;
=====Verwendung der SRF02=====&lt;br /&gt;
Werden die SRF02 verwendet, können diese an P_SRF__1 und 2 angesteckt oder angelötet werden. Die Kondensatoren C3 und 4 (100nF) sind zu verwenden.&lt;br /&gt;
&lt;br /&gt;
====Anschluß auf Hauptplatine====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Anschluss_Bumper.jpeg|thumb|So erfolgt der Anschluss des Bumperboards auf der Hauptplatine. Das rote Kabel ist VCC (=5V).]]&lt;br /&gt;
Das Board kann mit einem 7-poligen Flachbandkabel am Multi-IO-Modul angesteckt werden. Dort kann via Jumper JP1 und JP2 gewählt werden, ob digitale (SRF02 via I2C) oder analoge Sensoren (SharpGP2D via ADC) benutzt werden. Die Verwendung von analogen Sensoren geht nur mit dem Modul [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]], da hier die ADC-Kanäle PF3 und PF4 des 14-poligen ADC-Wannensteckers verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Befestigt werden kann das Board mit zwei M3-Schrauben am Heck des RP6. Dafür benötigst du noch zwei Distanzbolzen mit M3-Gewinde und zugehörige Muttern (analog zur Befestigung des originalen Bumper-Boards auf der Vorderseite des Rp6). Diese kannst du von Innen am RP6 befestigen und danach das Bumper-Board anbringen.&lt;br /&gt;
&lt;br /&gt;
===Liniensucher-Board===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
&lt;br /&gt;
=====Für Verwendung von 3 Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| CNY70 von Vishay || IC8-10 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R45, 46, 18 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15Ω || R57 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R15 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 47kΩ || R47 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, gelb || LED9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C28, 29, 30 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Transistor IRF5210, SO220-Package || Q9 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x8, RM2,54, stehend oder 90° || P_CNY_ALL1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 8-poliges Flachbandkabel ||  || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x8-poliger Stecker, RM2,54 || Anschluss am Liniensucher-Board || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x4-poliger Stecker, RM2,54 || Anschluss am Multi-IO-Board || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Zusätzlich für die Verwendung von 5 Sensoren=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| CNY70 von Vishay || IC11-12 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R19, 43 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 68Ω || R56 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C6, 7 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54, stehend oder 90° || J_CNY || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Liniensucher-Board.jpeg|thumb|Das Liniensucher-Board mit den 5 CNY70-Reflexoptokopplern und dem IRF5201-Transistor]]&lt;br /&gt;
Das Board besitzt drei CNY70 (L, M, R = IC8-10) der Firma Vishay sowie zwei weitere, durch Jumper zuschaltbare (L1 = IC11, R1 = IC 12). Die Spannungsversorgung (5V) kann durch einen Transistor (Q9) geschaltet werden. Eine LED (LED9) zeigt den Status On/Off an.&lt;br /&gt;
Die Beschriftete Seite der CNY70 muss ihre AUsrichtung zur dickeren Linie des Bestückungsdrucks haben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Reflexoptokoppler CNY70 können gut zur Linienerkennung (hell/dunkel) eigesetzt werden. Siehe dazu [[CNY70]].&lt;br /&gt;
&lt;br /&gt;
====Anschluß auf Hauptplatine====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Anschluss_Liniensucher.jpeg|thumb|Anschluss des Liniensucher-Boards auf der Hauptplatine]]&lt;br /&gt;
Das Board kann durch ein 8-poliges Flachbandkabel auf dem Multi-IO-Modul angesteckt werden. Die Sensoren R1 und L1 können dabei nur mit dem M256-Modul verschaltet werden (freie ADC-Kanäle PF2 und PF3). Die Sensoren L, M und R können durch Jumper JP4 auf die ADC-Pins ADC_1, ADC_3 und ADC_5 gelegt werden (Pins 1, 3 und 5 des 10-poligen ADC_Mxxx-Wannensteckers).&lt;br /&gt;
Man benötigt also ein 8-poliges Flachbandkabel sowie einen 1x8-Stecker (RM2,54mm) und einen 2,4-Stecker (RM2,54mm). Die Pinbelegung ist dann wie im Bestückungsdruck dargestellt.&lt;br /&gt;
&lt;br /&gt;
Die Löcher zur Befestigung entsprechen dem Abstand der Löcher auf der originalen Front-Bumperplatine des RP6, um hier Möglichkeiten zur Befestigung zu schaffen.&lt;br /&gt;
&lt;br /&gt;
===Radio-Board===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| SI4735 im SSOP24-Package || U2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3,5mm Stereo-Buchse || X2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Quarz, 32.768kHz, TC26H-Package || Q5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| TDA7050-NF-Amplifier, DIL8-Package || IC4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C16, 25, 32 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 47uF || C40, 42 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Spule SMD, C0402-Package, 180nH || L1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Spule SMD, C0402-Package, 4,7uH || L2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 220nF || C8 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 33pF || C20 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 18pF || C19 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 470nF ||C23  || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 22pF || 18 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0402-Package, 100nF || 24 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 0402-Package, 22kΩ || R29 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Potentiometer SMD, 3223G-Package, 22kΩ || R27, 28 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R37 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206-Package || LED2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 1x4, RM2,54 || P_RADIO || 1&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x2, RM2,54 || L-R-OUT, J_F-ANT, J_AM, P_GPIO || 4&lt;br /&gt;
|-&lt;br /&gt;
| Jumper 1x1, RM2,54 || P_ANT || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-poliges Flachbandkabel || || 1&lt;br /&gt;
|-&lt;br /&gt;
| 4-poliger Stecker, RM2,54 || || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Das Radio-Board besitzt einen digitalen I2C-Radioempfänger (auf 3,3V-Pegel!!! ) U1 und einen Verstärker IC4. Eine Stab- oder Draht-Antenne kann an P_ANT angesteckt werden. Diese Antenne dient dann hauptsächlich dem FM-Empfang (UKW). Wird Jumper J_AM geschlossen, kann diese Antenne auch für den AM-Empfang (LW, MW, KW) mit genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Man kann aber für die AM-Bereiche auch eine separate Ferrit-Antenne an J_F-ANT anschließen. Dann muss der Jumper J_AM offen bleiben.&lt;br /&gt;
&lt;br /&gt;
An der Buchse X2 können 3,5mm-Stereo-Kopfhörer (oder Lautsprecher) eingesteckt werden. An den Potentiometern R27 und 28 können die Lautstärken links und rechts eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
An den beiden Pins der Pinreihe P_GPIO können die beiden GPIOs 1 und 2 (3,3V-Pegel!) des Empfängers U1 genutzt werden.&lt;br /&gt;
&lt;br /&gt;
An den Pins der Pinreihe L-R-OUT können die Signale für rechts und links abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Über die mit „0“ und „1“ bezeichneten Pads kann das I2C-Adressbit des SEN-Ausgangs des Empfängers gewählt werden. Hier einfach eine Überbrückung zu „0“ oder „1“ einlöten, wenn gewünscht.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Da leider die Löcher für die Stereobuchse etwas zu klein sind, muss diese oben auf die Löcher bzw. die Pads gelötet werden.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Sicherungshalter 20x5mm || F1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Sicherung 20x5mm || F1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Schalter || S1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Schalter oder Jumper, 2x1 Pins, RM2,54 || S2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x2-Jumper, RM2,54 || P_UB || 1&lt;br /&gt;
|-&lt;br /&gt;
| Buchse 2mm/2,5mm || B1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 5V-Regler 78x5, TO220- oder TO92-Package || U1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED low current, 3mm || LED1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 820 Ohm || R1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Diode || D1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Bei Bedarf: Jumper, 2x1 Pins, RM2,54 || J_UB, J_U-RP6, J_VCC || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stromversorgung.jpeg|thumb|]]&lt;br /&gt;
Ein externer Akku kann an die Pins P_UB angeschlossen werden (auf Polung achten!). Um ihn zu laden, kann ein Ladegerät an Buchse B1 angeschlossen werden, wobei dafür automatisch die Platine vom Akku getrennt wird.&lt;br /&gt;
&lt;br /&gt;
Es ist auch möglich, einen Akku oder ein Netzgerät an B1 anzuschließen. Um dafür die genannte Trennung der Platine zu überbrücken, kann der Schalter S2 bzw. der dort angebrachte Jumper diese Verbindung herstellen.&lt;br /&gt;
&lt;br /&gt;
Der Schalter S1 schaltet die Batteriespannung entweder des externen Akkus oder des RP6-Eigenen Akkus zum 5V-Regler U1 (jeder Regler der Baureihe 78x5 ist möglich)  durch. Die dickere Linie auf dem Bestückungsdruck zeigt die Kühlseite des 78x5 an. Sie muss also in Platinenmitte zeigen. Möchte man den Akku des RP6 verwenden, muss hierfür Jumper J_U-RP6 gesteckt sein.&lt;br /&gt;
&lt;br /&gt;
Die LED LED1 zeigt an, ob der 5V-Regler U1 in Betrieb ist.&lt;br /&gt;
&lt;br /&gt;
'''ACHTUNG''': ''Es ist auch möglich, den RP6 mit dem am Multi-IO-Modul angeschlossenen externen Akku zu betreiben. Dafür muss Jumper J_UB gesteckt sein und es darf kein Akku im RP6 verbaut sein! Ansonsten können Bauteile und Akkus Schaden nehmen!&lt;br /&gt;
&lt;br /&gt;
''Des Weiteren können die meisten Bereiche (NICHT der Servobereich) mit der 5V-Versorgung des RP6 versorgt werden. Dafür den Jumper J_VCC einstecken, ein weiterer 5V-Regler auf dem Multi-IO-Modul ist dann nicht notwendig. Jedoch wird empfohlen, diesen Jumper nicht zu setzen, sondern einen eigenen 5V-Regler für dieses Modul zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Die Sicherung F1 sollte mindestens 3A zulassen (je nach Anforderung: werden keine Servomotoren verwendet, kann auch eine kleinere Sicherung verwendet werden).&lt;br /&gt;
&lt;br /&gt;
Die Diode D1 lässt einen Stromfluss erst zu, wenn ein Akku falsch gepolt eingesteckt wird. Dann kommt es durch die Diode zum Kurzschluss und die Sicherung F1 verhindert Schäden an der Hardware.''&lt;br /&gt;
&lt;br /&gt;
===USRBUS===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 14polige Wannenbuchse || SV_USRBUS1,2 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die 14 Pins des USRBUS sind nicht belegt und stehen zur freien Verfügung. Durch sie kann man Signale des Multi-IO-Moduls mit anderen Modulen austauschen.&lt;br /&gt;
&lt;br /&gt;
Der USRBUS liegt direkt an den Pins des I2C-LED-Treibers, wodurch die Output-Signale dieses Treibers direkt weitergeleitet werden können.&lt;br /&gt;
&lt;br /&gt;
===XBUS===&lt;br /&gt;
&lt;br /&gt;
Der XBUS verbindet wichtige Leitungen von Platine zu Platine, so z.B. GND, Batteriespannung, VCC (5V), Interruptleitungen, I2C-Bus.&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 14polige Wannenbuchse || SV_XBUS1,2 || 2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Leitungen des XBUS sind analog zu den anderen RP6-Modulen. Es werden lediglich die I2C-Leitungen, der Int1, GND und (bei Bedarf) die Batteriespannung verwendet.&lt;br /&gt;
&lt;br /&gt;
Es sind diverse Pinherausführungen für die I2C-Leitungen auf dem Multi-IO-Modul vorhanden.&lt;br /&gt;
&lt;br /&gt;
===Der 3,3V-I2C-Bus===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| BSN20, SOT-23-Package || Q6, 11 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 4,7kΩ || R67, 68, 70 || 3&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 2,2kΩ || R71 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R69 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 470Ω || 36 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C13, 14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 470pF || C12 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3,3V-Regler MIC5219-3.3BM5 , SOT23-5-Package || IC2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-Jumper, RM2,54 || J_INT_ON, J3_I5, J3_SDA, J3_I3, J_3VON || 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Widerstände und Feldeffekttransistoren dienen als Pegelwandler für die Leitungen des I2C (SDA und SCL) und der Interruptleitung (Int1). Die Kondensatoren dienen der Abschirmung. Es muss darauf geachtet werden, dass der 3,3V-Regler MIC5219-3.3BM5 verwendet wird (oder ein identischer).&lt;br /&gt;
&lt;br /&gt;
Die ausgegebene Spannung des 3,3V-Reglers kann über einen ADC-Kanal gemessen werden. Siehe dazu den Punkt &amp;quot;Weitere Pinreihen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Die 3,3V-Spannung kann darüber hinaus über einen ADC-Kanal überwacht werden (über einen Widerstand R36, 470 Ohm, 1206-Package).&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_3VON schaltet den 3,3V-Regler an.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_INT_ON verbindet die Interrupt-Leitungen im 3,3V-Pegel mit der Int1-Leitung des XBUS.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_I5 schaltet einen Pullup-Widerstand (R71) zur Interrupt-Leitung auf der 5V-Seite zu.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_I3 schaltet einen Pullup-Widerstand (R67) zur Interrupt-Leitung auf der 3,3V-Seite zu.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J3_SDA schaltet einen Pullup-Widerstand für die SDA-Leitung zu.&lt;br /&gt;
&lt;br /&gt;
Nähere Erläuterungen finden sich im Netz, siehe Weblinks.&lt;br /&gt;
&lt;br /&gt;
===Temperatursensor===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Temperatursensor.jpeg|thumb|Der Temperatursensor TCN75A. Schwarzer Jumper: Stromversorgung. Grüne Jumper: Adressbits.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| TCN75-Temperatursensor, MSOP8-Package || U26 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C39 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || J_TCN_ADR || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x1-Jumper, RM2,54 || J_TCN || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Temperatursensor TCN75 kommt auch bei der [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]] zum Einsatz. Er sendet seine Daten via I2C. Die Adressleitungen A0 und A2 können am Jumper J_TCN_ADR eingestellt werden. Das Adressbit A1 ist 0. Der Jumper J_TCN schaltet VCC an/aus.&lt;br /&gt;
&lt;br /&gt;
===16-facher PWM-Modulator===&lt;br /&gt;
&lt;br /&gt;
[[Bild:PWM-Modulator.jpeg|thumb|16-facher PWM-Modulator für den I2C-Bus. Blaue Jumper: Adressbits.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| PCA9685, TSSOP28-Package || U7 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 0805-Package, 10uF || C10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 0805-Package, 220Ω || R48-R55 || 8&lt;br /&gt;
|-&lt;br /&gt;
| LED low current, 3mm || SL1-4 || 4&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 820Ω || R5-R8 || 4&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || J_S1 bis J_S8 || 8&lt;br /&gt;
|-&lt;br /&gt;
| 1x8-Jumper, RM2,54 || P_PWM || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || JP_PWM_ADR || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der PCA9685 ist ein 16-facher PWM-Modulator via I2C. Seine Adressbits A0 und A1 sind am Jumper JP_PWM_ADR einstellbar, alle anderen Adressbits sind 0.&lt;br /&gt;
&lt;br /&gt;
Acht Pins (PWM0 bis 7) sind für Servos reserviert. PWM8 schaltet die Servospannung an/aus. PWM12 bis PWM15 sind für die Status-LEDs SL1 bis SL4 reserviert. PWM9 bis PWM11 sind frei.&lt;br /&gt;
&lt;br /&gt;
Beim Einlöten ist natürlich auf die Richtung zu achten! Der Markierungspunkt muss nach rechts unten, also zur Platinenmitte hin zeigen.&lt;br /&gt;
&lt;br /&gt;
===Servos der M32===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Servos_M32.jpeg|thumb|Anschlussmöglichkeit für bis zu acht Servos des RP6-M32-Moduls]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 10-polige Wannenbuchse || SV_SERVOSM32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x1-Jumper, RM2,54 || P_S_M32_5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 3x8-Jumper, RM2,54 || P_S_M32_1-4 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Es ist möglich, mit Hilfe der Servolib (siehe Weblinks unten) acht Servos durch die [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] anzusteuern. Hierfür den 10-poligen Wannenstecker der M32 in SV_SERVOSM32 einstecken.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung für Servomotoren===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Stromversorgung_Servos.jpeg|thumb|Die wichtigsten Teile der Servo-Stromversorgung mit einem LT1084CP-5]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| BUZ11 Transistor, TO220-Package || Q4 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 100kΩ || R11 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R17 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 240Ω || R25 || 1&lt;br /&gt;
|-&lt;br /&gt;
| LED SMD, 1206, grün || LED10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator, E3,5-8-Package, 470uF || C11 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || J_SERVOS-ON || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C50 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kühlrippen für ICs || - || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung eines LT1084CP-5 oder eines LT1084CT-5 als 5V-Regler=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| LT1084CP-5 im TO247-3-Package oder LT1084CT-5 im TO220-Package || IC1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 10uF || C49 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, EIA3528- od. 1206-Package, 470uF oder 220uF || C51 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Potentiometer, PT-10-Package, 500Ω, liegend oder stehend || R26 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Verwendung eines 78x5 als 5V-Regler=====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 78x5, TO220-Package || IC6 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C49, 51 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Die Servospannung ist über den BUZ11 (Q4) schaltbar. Dieser kann durch einen Jumper J_SERVOS-ON überbrückt werden. Wird ein LT1084CP-5 oder ein LT1084CT-5 als 5V-Regler verwendet, müssen größere Kondensatoren eingebaut werden. Zusätzlich wird ein 500Ω-Potentiometer benötigt, über welche die Spannung im Bereich von etwa 5V bis 7,5V eingestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung eines einfachen 78x5 Reglers werden weniger Teile benötigt. Die Kondensatoren C49 und C51 können nur 100nF betragen. Außerdem sind Regler der 78x5-Reihe bedeutend billiger.&lt;br /&gt;
&lt;br /&gt;
Nachteile der 78x5er-Reihe sind die bedeutend geringere Leistungsumsetzung und die Servospannung kann hier nicht justiert werden.&lt;br /&gt;
&lt;br /&gt;
Bei allen ICs gilt: Die dickere Linie auf dem Bestückungsdruck zeigt die Kühlseite des ICs (5V-Regler und BUZ11) an. Sie muss also beim BUZ11 und den höherwerigen Spannungsreglern zum Platinenrand zeigen, beim 7805 zur Platinenmitte.&lt;br /&gt;
&lt;br /&gt;
===Strom-Spannungs-Temperatur-Sensor===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| LTC2990, MSOP10-Package || U10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R2, 3, 9, 12, 14, 22 || 6&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 15kΩ || R32 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 22kΩ || R13 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C41 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Shuntwiderstand, 0,05Ω, 5Watt || R10 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || J_CURRENT_ADR || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Sensor U10 (Platinenunterseite) überwacht durch den Shunt-Widerstand (R10) den gesamten, von der Platine benötigten Strom, die Batteriespannung und die Versorgungsspannung der Servos. Darüber hinaus misst er seine eigene Temperatur.&lt;br /&gt;
&lt;br /&gt;
Über den Jumper J_CURRENT_ADR sind die Adressbits A0 und A1 einstellbar.&lt;br /&gt;
&lt;br /&gt;
===Echtzeit-Uhr===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Uhr.jpeg|thumb|Die Bauteile der Uhr DS1307. Man sieht den IC-Käfer, den Jumper (schwarz) für die Stromversorgung und den Uhrenquarz.]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| DS1307, SOIC8-Package || IC3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C38 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Quarz, 32.768 kHz, TC26H-Package || Q3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Knopfzellenhalter, SN2032 || BAT1 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || JP_RTC || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Diese Uhr (Real-Time-Clock, RTC) kann durch Jumper JP_RTC von VCC getrennt werden. Dann, oder aber wenn die Stromversorgung abgeschaltet wird, übernimmt die 3V-Knopfzelle für den Stand-By-Betrieb. Sie kann via I2C ausgelesen und gestellt werden.&lt;br /&gt;
&lt;br /&gt;
===Berührungssensor===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Berührungssensor.jpeg|thumb|Der Berührungssensor mit dem Timer-IC NE555]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| NE555, SO8-Package || IC14 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 1MΩ || R58, 59 || 2&lt;br /&gt;
|-&lt;br /&gt;
| BC847, SOT23-Package || Q13, 14 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 10uF || C31 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x1-Jumper, RM2,54 || J_NE || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Bei Berührung einer Antenne schaltet der Timerbaustein (IC14) den Output auf etwa 3V. Dies kann an einem ADC gemessen werden. Der Berührungssensor kann entweder auf PF3 des ADC_M256-Wannensteckers oder auf ADC1 (Pin 1) des ADC_Mxxx-Wannensteckers gemessen werden.&lt;br /&gt;
&lt;br /&gt;
Das Signal des Berührungssensors muss analog (nicht mit dem I2C-Bus) ausgelesen werden. Das Signal geht weiter an den Wahljumper (siehe unten) und kann dann auf den ADC_Mxxx-Wannenstecker oder auf dem ADC_M256-Wannenstecker weitergegeben werden.&lt;br /&gt;
&lt;br /&gt;
===Buzzer===&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buzzer BMT1205XH7.5 || SG2 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
Der Buzzer ist derselbe wie bei den Modulen [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]] und [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]]. Er wird durch Pin 5 des IO_Mxxx-Wannensteckers gesteuert.&lt;br /&gt;
&lt;br /&gt;
Da leider kein geeignetes Datenblatt zu finden war, sind die Löcher leider nicht ganz richtig gesetzt. Das ist nicht weiter schlimm. Einfach die Pins des Buzzers etwas verbiegen, dann geht das. Und das tut dem Buzzer nichts!&lt;br /&gt;
&lt;br /&gt;
===Spannungsteiler===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Spannungsteiler.jpeg|thumb|Die Vorbereitung für Analoge Sensoren]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator SMD, 1206-Package, 100nF || C26, C27 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206er-Package, Wert je nach Sensor || R41, R42 || 2&lt;br /&gt;
|-&lt;br /&gt;
| Pinreihe 2x2, RM2,54 || P_UT || 1&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
An den Pins P_UT können analoge Sensoren angeschlossen werden, welche einen Spannungsteiler benötigen. Dies könnten z.B. zwei lichtsensitive Widerstände (LDRs) sein. Dafür müssen für R41 und R42 die nötigen Widerstände eingelötet werden. Diese liegen bei vielen LDRs z.B. bei 68kΩ.&lt;br /&gt;
Die Sensoren können nur in Verbindung mit dem M256-Modul verwendet werden, da sie an PF0 und PF1 des ADC_M256-Wannensteckers angeschlossen sind.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Leider ist mir hier ein Fehler unterlaufen. der auf dem Bestückungsdruck auf der Unterseite benannte C42 ist nicht C42, sondern C27!&lt;br /&gt;
&lt;br /&gt;
===EEPROM===&lt;br /&gt;
&lt;br /&gt;
[[Bild:EEPROM.jpeg|thumb|Das EEPROM des Typs 24LCxxx mit den drei Adress-Jumpern]]&lt;br /&gt;
&lt;br /&gt;
====Benötigte Teile====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| I2C-EEPROM, DIL8-Package, 24LCxxx-Serie || IC5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| IC-Sockel, DIL8-Package || IC5 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C43 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || J_EEP_A0-2 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Beschreibung====&lt;br /&gt;
&lt;br /&gt;
In den IC-Sockel (IC5) können diverse I2C-EEPROMs der 24LCxxx-Serie gesteckt werden.&lt;br /&gt;
Am Jumper J_EEP_A0-2 können die Adressbits A0, A1 und A2 gewählt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluß der anderen Boards===&lt;br /&gt;
&lt;br /&gt;
====Taster-Board====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Tasterboard_befestigt.jpeg|thumb|Das Tasterboard, mittels vier 90grad-Stiften am Multi-IO-Modul verlötet]]&lt;br /&gt;
Das Taster-Board kann an die linke Vorderseite des Multi-IO-Moduls aufgesteckt oder angelötet werden.&lt;br /&gt;
Statt dieses Boards können auch andere Tastaturen mit ADC an die dreipolige Stiftleiste P_TAST-EXT angesteckt werden.&lt;br /&gt;
&lt;br /&gt;
====Bumper-Board====&lt;br /&gt;
&lt;br /&gt;
Das Bumper-Board kann an der 7-poligen Stiftleiste P_BUMP angesteckt werden. Die Bumper-Ausgänge gehen dabei auf Pin 4 (L) und Pin 8 (R) des IO_Mxxx-Wannensteckers. Dafür müssen noch die Jumper bei diesen Pins gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Die analogen (Sharp-Sensoren) oder digitalen (I2C der SRF02) Sensorleitungen sind dieselben. Um das zu realisieren, müssen zwei Jumper gesetzt werden. Dies geschieht über JP2 und JP1. Hier kann man (siehe Platinenaufdruck) die Leitungen des Bumper-Boards wahlweise auf den I2C legen, oder auf PF3 und PF4 des ADC_M256-Wannensteckers.&lt;br /&gt;
&lt;br /&gt;
SDA des I2C liegt dabei auf einer Leitung mit dem Signal des linken Sharp-Sensors, SCL auf dem des rechten.&lt;br /&gt;
&lt;br /&gt;
====Liniensucher-Board====&lt;br /&gt;
&lt;br /&gt;
Das Liniensucher-Board kann mit einem 8-poligen Flachbandkabel an das Multi-IO-Modul gesteckt werden. Jedoch ist die Pinreihe am Liniensucher-Board einreihig (1x8), auf dem Multi-IO-Modul zweireihig (2x4). Dabei bitte die Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
====Radio-Board====&lt;br /&gt;
&lt;br /&gt;
Das Radio-Board hat keinen speziellen Anschluss. Da das Board aber auf 3,3V läuft und via I2C gesteuert werden kann, kann es mit der Pinreihe P_RADIO an den 3,3V-I2C-Bus auf dem Multi-IO-Modul angesteckt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschlussmöglichkeiten weiterer Sensoren===&lt;br /&gt;
&lt;br /&gt;
====DCF77-Funkuhr====&lt;br /&gt;
&lt;br /&gt;
[[Bild:DCF77.jpeg|thumb|50px|]]&lt;br /&gt;
&lt;br /&gt;
Diese kann an die Pinreihe P_DCF angesteckt werden. Zur Sicherheit wird ein Kondensator (100nF, SMD, 1206-Package, C35) empfohlen. Das Signal des DCF77 wird über Pin 1 des IO_Mxxx-Wannensteckers ausgelesen, wenn der Jumper bei Pin 1 geschlossen ist.&lt;br /&gt;
&lt;br /&gt;
====GPS-Modul====&lt;br /&gt;
&lt;br /&gt;
[[Bild:GPS.jpeg|thumb|Der Anschluss des GPS-Moduls erfolgt über 5 Pins]]&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Kondensator  SMD, 1206-Package, 100nF || C22 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 4,7kΩ || R39 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Widerstand SMD, 1206-Package, 10kΩ || R40 || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x5-Jumper, RM2,54 || P_GPS || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x2-Jumper, RM2,54 || J_GPS_5V || 1&lt;br /&gt;
|-&lt;br /&gt;
| 1x3-Jumper, RM2,54 || P_GPS1, J_GPS_TX || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das GPS-Modul Navilock NL-552ETTL kann an P_GPS angeschlossen werden und wird via UART ausgelesen. Dafür müssen die Pegel für Rx des GPS-Moduls jedoch angepasst werden, da das GPS auf 3,3V-Pegel liegt. Ein 5V-Pegel könnte das GPS-Modul beschädigen. Die ausgehenden Daten (Tx) des GPS-Moduls müssen dagegen nicht unbedingt angepasst werden, da UART auch 3,3V-Pegel akzeptiert.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_GPS_5V schaltet das GPS an.&lt;br /&gt;
&lt;br /&gt;
Der Jumper J_GPS_TX wählt den Tx-Pin des Master-Moduls ([[RP6]](v2) BASE, [[RP6#RP6_CONTROL_M32_Platine|RP6-Control-M32]], [[RP6#RP6_CCPRO_M128_Platine|RP6-CCPRO-M128]], [[RP6v2#RP6v2_M256_WiFi_Platine|M256-WiFi-Platine]]) aus: bei manchen ist dies der Pin 6 (Jumper muss links stecken), bei manchen der Pin 8 (Jumper muss rechts stecken).&lt;br /&gt;
&lt;br /&gt;
An P_GPS1 kann ein weiterer Mikrocontroller über UART direkt an Rx (mit Pegelwandler) und Tx des GPS-Moduls angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
====2D-Kompass====&lt;br /&gt;
&lt;br /&gt;
Dieses Modul kommuniziert über I2C und kann daher auf allen 5V-, GND- und I2C-Pins des Multi-IO-Modul angesteckt werden. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====3D-Kompass====&lt;br /&gt;
&lt;br /&gt;
Dieses Modul kommuniziert über I2C und kann daher auf allen 5V-, GND- und I2C-Pins des Multi-IO-Modul angesteckt werden. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====9D-Kompass====&lt;br /&gt;
&lt;br /&gt;
[[Bild:9D-3D-Kompass.jpeg|thumb|Anschluss der Kompassmodule]]&lt;br /&gt;
&lt;br /&gt;
Für den 9D-Kompass ist am unteren rechten Rand eine Pinreihe P_KOMPASS angebracht, an welcher das Kompassmodul direkt auf- oder angesteckt werden kann. Es wird ein Kondensator (SMD, 1206-Package, 100nF, C33) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x8, RM2,54 || P_KOMPASS ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Luftfeuchtigkeits-Temperatur-Sensor====&lt;br /&gt;
&lt;br /&gt;
Dieser Sensor misst die Luftfeuchtigkeit und die Temperatur. Er kann über I2C ausgelesen werden und an der Pinreihe P_FEUCHTE an- oder aufgesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C21) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x4, RM2,54 || P_FEUCHTE ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Luftdrucksensor====&lt;br /&gt;
&lt;br /&gt;
Dieser Sensor kann an der Pinreihe P_LUFTDRUCK an- oder aufgesteckt werden. Da er 3,3V Versorgungsspannung und 3,3V-I2C benötigt, liegen diese hier an.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C34) empfohlen.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Buchsenleiste 1x6, RM2,54 || P_LUFTDRUCK ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====SRF02-Abstandssensoren====&lt;br /&gt;
&lt;br /&gt;
Bis zu vier SRF02 können an die Pinreihen P_SRF1 und P_SRF2 angeschlossen werden. Pinbelegung siehe Platinenaufdruck.&lt;br /&gt;
&lt;br /&gt;
Es wird ein Kondensator (SMD, 1206-Package, 100nF, C5) empfohlen.&lt;br /&gt;
&lt;br /&gt;
====Snake-Vision-Modul====&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| 2x3-Jumper, RM2,54 || P_SNAKE ||  1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Snake-Vision-Modul kann an die Pinreihe P_SNAKE angeschlossen werden (auf Pinbelegung achten). Die Sensoren (rechts, links) sowie Taster und GND sind einfach an P_SNAKE anzuschließen.&lt;br /&gt;
&lt;br /&gt;
Für die Versorgungsspannung gibt es drei Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
Überbrückung des Spannungsreglers und der Dioden des Snake-Vision-Moduls und Anschluss von VCC des Snake-Vision-Moduls an VCC des Multi-IO-Moduls. Der Umbau wird im RP6-Forum beschrieben, siehe Weblinks unten.&lt;br /&gt;
&lt;br /&gt;
Die zweite Möglichkeit entspricht der Ersten, mit der Ausnahme, dass VCC des Snake-Vision-Moduls an IO des Multi-IO-Moduls angeschlossen wird. Dadurch kann das Snake-Vision-Modul über einen High-Side-Switch (Q2 und R16) an Pin 4 des IO_Mxxx-Wannensteckers an- und abgeschaltet werden. &lt;br /&gt;
&lt;br /&gt;
Die dafür benötigten Teile sind:&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Transistor SMD, 1206-Package, BC807 || Q2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Widerstand SMD, 1206-Package, 1kΩ || R16 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die letzte Möglichkeit benötigt keinen Umbau des Snake-Vision-Moduls, da an seinen Eingang OC2 eine Ladungspumpe angeschlossen wird. Schließe dafür VCC des Snake-Vision-Moduls an VCC des Multi-IO-Moduls und OC2 an IO. Des Weiteren wird ein Jumper J_OC2 benötigt, welcher den nur hier notwendigen Widerstand R33 als Pulldown hinzuschaltet. Der Jumper J_OC2 sollte also geschlossen sein.&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Artikel''' || '''Name''' || '''Anzahl'''&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. Widerstand SMD, 1206-Package, 2,2..4,7kΩ || R33 || 1&lt;br /&gt;
|-&lt;br /&gt;
| Evtl. 1x2-Jumper, RM2,54 || J_OC2 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Weitere Pinreihen====&lt;br /&gt;
* Am vorderen linken Rand kann man bis zu 10 Pins anbringen. Belegung siehe Platinenaufdruck&lt;br /&gt;
* Hinter dem 78x5-5V-Regler (U1) kann man auf 3x6 Pins VCC (die linken sechs Pins), GND (die mittleren sechs Pins) und die Batteriespannung (die rechten sechs Pins) abgreifen.&lt;br /&gt;
* Am Jumper P_5V-I2C kann man 5V, GND, Int1 (5V-Pegel) und die I2C-Leitungen (5V-Pegel) abgreifen.&lt;br /&gt;
* Am Jumper P_3V3-I2C kann man 3,3V, GND, Int1 (3,3V-Pegel) und die I2C-Leitungen (3,3V-Pegel) abgreifen.&lt;br /&gt;
* Vor dem 10-poligen Wannenstecker SV_IO_MXXX  befindet sich eine zweireihige Stiftleiste JP_IO1,2. An JP_IO 1 liegen alle auf der Platine verwendeten Signale für den Wannenstecker SV_IO_MXXX an. An JP_IO2 sind die Pins des Wannensteckers SV_IO_MXXX direkt herausgeführt. Dadurch können diese Pins auch auf andere Weise verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wünscht man eine Verwendung, wie in dieser Anleitung empfohlen, müssen nur alle 9 Jumper gesetzt werden.&lt;br /&gt;
Da Pin 2 jedoch nur von der M32 angesprochen werden kann (auf anderen Modulen ist dieser Pin auf GND) und Pin 9 nur von M32 oder der M128, liegt an beiden der Transistor zum Schalten des Liniensucher-Boards. Damit kann dieses Board sowohl von der M32 (Pin 2 oder Pin 9) als auch von der M256 (Pin 9) aus geschaltet werden. Lediglich die M128 kann diesen Transistor nicht schalten.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Natürlich steht es jedem frei, andere Pins des Wannensteckers mit der IO-Leitung des Liniensucher-Boards zu verschalten.&lt;br /&gt;
&lt;br /&gt;
* Ähnlich wie im gerade genannten Fall ist es auch beim 10-poligen Wannenstecker SV_ADC_MXXX. Jedoch sind hier manche Pins (1, 3, 5 und 6) direkt auf einen Wähl-Jumper JP1,2,4 gelegt, wo sie mit Jumpern weiter auf Signale gelegt werden können. Nur Pin 6 ist nicht weitergeführt und steht zur eigenen Verfügung, ist jedoch nur bei dem M128-Modul  als ADC verwendbar, auf allen anderen Modulen liegt hier GND an.&lt;br /&gt;
* Vor dem 14-poligen Wannenstecker SV_ADC_M256 liegt eine weitere solche doppreihige Stiftleiste: JP_ADIO. Dieser verbindet wieder durch setzen der Jumper die Signale der Platine mit den Pins des Wannensteckers.&lt;br /&gt;
* Der Jumper J_WAHL, eine 2x6-Stiftleiste, kann dazu verwendet werden, einige Signale auf verschiedene Arten weiterzuleiten:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Wahljumper.jpeg|thumb|]]&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Eigehendes Signal''' || '''1. Möglichkeit''' || '''2. Möglichkeit'''&lt;br /&gt;
|-&lt;br /&gt;
| Sharp '''links''' bzw. I2C der SRF02 || '''PF4''' des ADC_M256 (für Sharp-Verwendung) || '''SCL''' des I2C (für SRF02-Verwendung)&lt;br /&gt;
|-&lt;br /&gt;
| Sharp '''rechts''' bzw. I2C der SRF02 || '''PF3''' des ADC_M256 (für Sharp-Verwendung) || '''SDA''' des I2C (für SRF02-Verwendung)&lt;br /&gt;
|-&lt;br /&gt;
| Messung der '''3,3V'''-Spannung über Widerstand R36|| '''PF4''' des ADC_M256 || '''Pin 3''' des ADC_Mxxx&lt;br /&gt;
|-&lt;br /&gt;
| NE555-'''Berührungssensor''' || '''PF3''' des ADC_M256 || '''Pin 1''' des ADC_Mxxx&lt;br /&gt;
|-&lt;br /&gt;
| CNY70-L ('''linker''' der drei Sensoren) || '''Pin 1''' des ADC_Mxxx || -&lt;br /&gt;
|-&lt;br /&gt;
| CNY70-M ('''mittlerer''' der drei Sensoren) || '''Pin 3''' des ADC_Mxxx || -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bekannte Probleme==&lt;br /&gt;
&lt;br /&gt;
Dies soll eine Sammlung mit den bisher bekannten Problemen sein, um sich künftig bei ähnlichen Problemen schneller zurecht zu finden.&lt;br /&gt;
&lt;br /&gt;
===Taster des Tasterboards sind nur einzeln abzufragen===&lt;br /&gt;
&lt;br /&gt;
'''Das Problem''': Leider sind die Taster des Tasterboards nur einzeln abzufragen, da sie sich gegenseitig nach unten bedingen. Das heißt: Wer Taster 1 und drei drückt, wird nur Taster 1 registrieren. &lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': Eine Lösung dafür gibt es nicht direkt, aber man kann anstatt des Tasterboards jede andere analoge Tastatur an die drei Pins hinter dem Tasterboard anschließen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LTC2990-Strom-Spannungs-Temperatursensor===&lt;br /&gt;
&lt;br /&gt;
Des öfteren kam es vor, dass dieser Sensor keine oder nur unvernünftige Werte ausgab. So z.B. in diesem Output:&lt;br /&gt;
&lt;br /&gt;
 Temperature:  0.0Â°&lt;br /&gt;
 BAT Current:  0.0mA&lt;br /&gt;
 BAT Voltage:  0.0V&lt;br /&gt;
 SERVO Volt.:  0.0V&lt;br /&gt;
 VCC Voltage:  2.5V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Der Grund''': meist lag es an einem kleinen Kontaktproblem eines der Pins, vermutlich GND- oder VCC-Pin.&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': einfach mit einem Lötkolben (Temperatur etwa 350 Grad C) vorsichtig über die Beinchen dieses ICs streichen, ohne weiteren Lötzinn zu verwenden. Dadurch wird der schon aufgebrachte Lötzinn neu geschmolzen und kann wieder Kontakte herstellen.&lt;br /&gt;
&lt;br /&gt;
===Falscher 3,3V-Regler verwendet===&lt;br /&gt;
&lt;br /&gt;
Wer einen 3,3V-Regler des Typs SPX3819 auf seinem Board hat anstelle des MIC5219-3.3YMS, der wird feststellen, dass die die Regleung auf 3,3V nicht oder nur schlecht funktioniert.&lt;br /&gt;
&lt;br /&gt;
'''Der Grund''': Der SPX3819 arbeitet mit Hilfe eines Spannungsteilers, bestehend aus zwei Widerständen R1 und R2. Die ausgegebene Spannung definiert sich nach folgender Formel:&lt;br /&gt;
&lt;br /&gt;
V(out) = 1,235 * ( 1 + ( R1 / R2 ) )&lt;br /&gt;
&lt;br /&gt;
Somit ergeben sich gute Werte für R1 = 36kOhm und R2 = 22kOhm.&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''': Nimm diese zwei SMD-Widerstände im 0805er Package. Löte R1 (36kOhm) auf die beiden einzelnen Beinchen des 3,3V-Reglers und R2 (22kOhm) auf den C12. Ob du C12 vorher ausbaust, oder drinnen lässt, ändert nichts.&lt;br /&gt;
&lt;br /&gt;
Wer im E12er Regime bleiben möchte kann einen 68k Ohm (R1) und einen 39k Ohm (R2) nehmen, dann kommen 3,38V heraus.&lt;br /&gt;
&lt;br /&gt;
===Verwendung eines LT1084===&lt;br /&gt;
&lt;br /&gt;
[[Bild:LT1084CT.jpeg|thumb|91-Ohm-Widerstand zwischen &amp;quot;Adj&amp;quot; und &amp;quot;Out&amp;quot; eines LT1084CT]]&lt;br /&gt;
&lt;br /&gt;
Auch dieser Spannungsregler kann für die Servos verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Dafür benötigt man einen 91 Ohm widerstand R1 (bedrahtet oder SMD 1206) und das 500 Ohm-Standardpotentiometer R2, welches auch bei den anderen Spannungsreglern zum Einsatz kommt.&lt;br /&gt;
&lt;br /&gt;
R1 lötet man zwischen die Beinchen Adj und Out des LT1084.&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich die Outputspannung zu&lt;br /&gt;
&lt;br /&gt;
V(out) = 1,25 * ( 1 + R2 / R1 )&lt;br /&gt;
&lt;br /&gt;
V(out) ist dann von etwa 2 bis etwa 8 Volt regelbar. Verwendet man also nur den oberen Einstellbereich des Potis, kann man wie üblich zwischen 5V und 7,5V regeln, man muss nur etwas besser aufpassen, dass man nicht zu hohe Spannungen ansetzt.&lt;br /&gt;
&lt;br /&gt;
1.       Poti R2 auf Maximalstellung 500 Ohm, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 500/91) = 8,11V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2.       Poti R2 auf niedriger Stellung 50 Ohm, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 50/91) = 1,94V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3.       Potistellung R2 bei Ausgangsspannung von 5V, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1 + 273/91) = 5,0V è Also 273 Ohm (etwas über Mittelstellung 250 Ohm)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4.       Potistellung R2 bei Ausgangsspannung von 7,5V, R1 = 91 Ohm:&lt;br /&gt;
&lt;br /&gt;
1,25 * (1+ 455/91) = 7,5V è Also 455 Ohm (fast max. Stellung)&lt;br /&gt;
&lt;br /&gt;
===Pins zu eng für manche Bauteile===&lt;br /&gt;
&lt;br /&gt;
'''Welche Teile?''' Dieses Problem betrifft eigentlich nur die Stereobuchse des Radiomoduls, den Shunt-Widerstand zur Strommessung und den großen 5V-Regler (LT1084CP-5).&lt;br /&gt;
&lt;br /&gt;
'''Die Lösung''' Bitte NIEMALS versuchen, die Löcher aufzubohren oder dergleichen. Das beschädigt die Platine, im schlimmsten Fall irreparabel.&lt;br /&gt;
&lt;br /&gt;
Die Stereobuchse kann man einfach auf die Pins Löten, anstatt sie in die Pins zu stecken. Das hält gut genug.&lt;br /&gt;
&lt;br /&gt;
Für den 5V-Regler hat Dirk folgende Lösung präsentiert: zuerst die Beinchen ganz oben am IC mit Silberdraht (nicht isoliert) umwickeln, sodass die drei Pins kurzgeschlossen sind. Dies vermeidet Aufladungen eines Pins beim Feilen der Beinchen. Dann die Beinchen in der gewünschten Länge abzwicken (etwa 3mm unterhalb der Verbreiterung). Nun die beiden äußeren Pins VON AUßEN mit einer Metall-Flachfeile schmaler feilen. Danach den mittleren Pin abwechselnd von beiden Seiten feilen.&lt;br /&gt;
&lt;br /&gt;
Beim Einlöten darauf achten, dass der GND-Pin des Reglers nicht zu dicht am Vorwiderstand der Servo-LED (R25) sitzt, um hier Kurzschlüsse zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
Den Shunt-Widerstand entweder vorher auf die richtige Länge kürzen und dann sanft in die Löcher Zwängen, oder die Beine etwas schmälern, z.B. durch Feilen.&lt;br /&gt;
&lt;br /&gt;
===Beschriftung===&lt;br /&gt;
Diese Probleme sind nicht wirklich wichtig, sollen aber nicht unerwähnt bleiben!&lt;br /&gt;
&lt;br /&gt;
- Die Beschriftung auf dem Radioboard sagt, dass man dort 5V anschließen kann. Das geht leider nicht, da das Modul nur auf 3,3V läuft! Bitte daran denken: I2C (SDA und SCL) dürfen nur an den 3,3V-I2C des Multi-IO-Boards und die Spannungsversorgung darf nur mit 3,3V geschehen. Auch alle anderen Ein- und Ausgänge (GPIO1, GPIO2, R und L) dürfen nur im 3,3V-Pegel angesprochen werden, sollte man sie benötigen.&lt;br /&gt;
&lt;br /&gt;
- An den vorbereiteten Spannungsteilern &amp;quot;LDR&amp;quot; ist ein Kondensator falsch beschriftet: Nicht C42 ist richtig, sondern C27, ein 1206er 100nF-Kondensator. Auch ist es hier besser, die 100nF-Kondensatoren auf der Oberseite zu verlöten (dort, wo die beiden Widerstände R41 und R42 sitzen) und diese beiden Widerstände an die Kondensatorplätze auf der Unterseite zu verlöten. Denn bei voll bestückter Platine wird es nachträglich schwierig, die Widerstände ein- oder umzulöten.&lt;br /&gt;
&lt;br /&gt;
- C28 am Liniensucher-Board ist nur mit einem &amp;quot;C&amp;quot; beschriftet. Ist aber ein &amp;quot;normaler&amp;quot; 100nF-Kondensator, 1206er Package.&lt;br /&gt;
&lt;br /&gt;
- R46 auf dem Liniensucher-Board ist nur zweimal mit seinem Wert (15kOhm) beschriftet, nicht aber mit seinem Namen &amp;quot;R46&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
- Die Bumperwiderstände R23 und R24 sind nur mit 470 Ohm-Widerständen zu bestücken, wenn man keine Low-Current-LEDs an den Bumpern möchte, dann kann man diese LEDs aber nicht mehr mit dem uC ansprechen. Will man sie auch vom uC her an/abschalten, müssen R23 und R24 mit 270-Ohm-Widerständen (1206er Package) bestückt werden.&lt;br /&gt;
&lt;br /&gt;
- Der &amp;quot;große&amp;quot; Kondensator (470uF, E3,5-8-Package, Elektrolyt) ist nicht mit seiner Nummer beschriftet: Es ist der C11.&lt;br /&gt;
&lt;br /&gt;
- R1 und L1 auf dem Liniensucher-Board sind falsch herum beschriftet.&lt;br /&gt;
&lt;br /&gt;
==Teileliste==&lt;br /&gt;
&lt;br /&gt;
Nicht alle der in diesen Listen aufgeführten Teile werden für den Bau benötigt. Bitte dafür die Anleitung genau lesen. Man muss nicht die gesamte Platine aufbauen, man kann auch nur einen Teil der Schaltung realisieren.&lt;br /&gt;
Für das Löten lese bitte eine Lötanleitung und übe das Löten vorher. Ansonsten können Teile durch den zu langen Kontakt mit dem Lötkolben überhitzen oder es kann zu Kurzschlüssen auf der Platine kommen.&lt;br /&gt;
Die angegebenen Bestellnummern sind nur ein Vorschlag, wo die Teile gekauft werden.&lt;br /&gt;
&lt;br /&gt;
Die Teileliste samt Bestellnummern der Shops und Preisen wird als MS Excel-Sheet veröffentlicht, Lieferanten findet man unter [[Bezugsquellen]].&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[RP6]]&lt;br /&gt;
* [[RP6 - Programmierung]]&lt;br /&gt;
* [[RP6v2]]&lt;br /&gt;
* [[RP6 Kamera - Mitmach-Projekt]]&lt;br /&gt;
* [[RP6v2 I2C-Portexpander]]&lt;br /&gt;
* [[RP6v2 USB-RS232-Adapter]]&lt;br /&gt;
* [[RP6v2 Orientierung]]&lt;br /&gt;
* [[RP6 Multi IO Projekt - Software]]&lt;br /&gt;
* [[CCRP5]]&lt;br /&gt;
* [[Yeti]]&lt;br /&gt;
* [[Asuro]]&lt;br /&gt;
* [[C't-Bot]]&lt;br /&gt;
* [[Bezugsquellen]]&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [https://www.dropbox.com/sh/7fab3gyweezdrcy/l4uw9djFxP HIER] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.'''&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/40090-RP6Control-M32-Library-f%C3%BCr-8-Servos?highlight=servo+lib Servo-Lib für M32 von Dirk]&lt;br /&gt;
&lt;br /&gt;
[http://www.rn-wissen.de/index.php/RP6v2_Orientierung Orientierungs-Mitmach-Projekt von Dirk]&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/59387-RP6%28v2%29-Experimentierplatine-Orientierung Mitmachprojekt Orientierung]&lt;br /&gt;
&lt;br /&gt;
[http://www.roboternetz.de/community/threads/47843-Projekt-RP6-mit-Snake-Vision Umbau des Snake Vision für RP6]&lt;br /&gt;
&lt;br /&gt;
[http://www.rn-wissen.de/index.php/RP6v2_I2C-Portexpander/ EEPROM]&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
--[[Benutzer:Fabian|fabqu]] 21:30, 17. Feb 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Dirk|Dirk]] 08:48, 19. Feb 2013 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25593</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25593"/>
				<updated>2014-12-01T11:42:27Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Arduino-Aufnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der linken Seite für den 3,3V-Pegel, auf der rechten für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25592</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25592"/>
				<updated>2014-12-01T11:24:18Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO_-_Software&amp;diff=25591</id>
		<title>RP6 ArduIO - Software</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO_-_Software&amp;diff=25591"/>
				<updated>2014-12-01T11:24:15Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsmodul=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von [http://www.roboternetz.de/community/members/47148-fabqu fabqu] (Hardwarearbeiten) und [http://www.roboternetz.de/community/members/1972-Dirk Dirk] (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Eine Kurzbeschreibung der RP6-ArduIO Erweiterungsplatine findet ihr [[RP6_ArduIO#Kurzbeschreibung|HIER]].&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
'''Der Hardware-Artikel befindet sich [[RP6 ArduIO|HIER]].'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Hier geht es um die Software für das von fabqu designte ArduIO Board. Für dieses Board soll es eine gemeinsame Library für die drei wesentlichen Plattformen des RP6-Systems und eine Library für den Arduino UNO geben. Ob auch eine Library für die RP6 CCPRO M128 veröffentlicht wird, ist noch offen.&lt;br /&gt;
 &lt;br /&gt;
===RP6 M256 WIFI, CONTROL M32, BASE===&lt;br /&gt;
Für die RP6 M256 WiFi, RP6 CONTROL M32 und RP6(v2) Base gibt es hier eine [[RP6_ArduIO_-_Software#ArduIO_Library|gemeinsame ArduIO Library]]. Die nachfolgenden Demos zu den einzelnen RP6-Mikrocontroller-Systemen nutzen diese Library.&lt;br /&gt;
&lt;br /&gt;
====ArduIO Library====&lt;br /&gt;
Hier findet ihr die neue [[Avr-gcc|AVR-GCC]] Library für das [[RP6_ArduIO|ArduIO Board]]. Sie ist ausgelegt für die [[RP6_ArduIO_-_Software#RP6_M256_WIFI|RP6 M256 WiFi]], die [[RP6_ArduIO_-_Software#RP6_CONTROL_M32|RP6 CONTROL M32]] und die [[RP6_ArduIO_-_Software#RP6_BASE|RP6(v2) Base]]. Für die [[RP6_ArduIO_-_Software#RP6_CCPRO_M128|RP6 CCPRO M128]] wird es vielleicht eine [[RP6_ArduIO_-_Software#ArduIO_Library_2|eigene Library]] geben.&lt;br /&gt;
&lt;br /&gt;
Die Library für das Ardu IO Projekt Board (= &amp;quot;ArduIO&amp;quot;) geht von folgenden Voraussetzungen aus:&lt;br /&gt;
* Der RP6(v2) Roboter (= &amp;quot;[[RP6|BASE]]&amp;quot;), die RP6 CONTROL M32 (= &amp;quot;[[RP6#RP6_CONTROL_M32_Platine|M32]]&amp;quot;) oder RP6v2 M256 WiFi Platine (= &amp;quot;[[RP6v2#RP6v2_M256_WiFi_Platine|M256]]&amp;quot;) wird für die Ansteuerung der ArduIO benutzt.&lt;br /&gt;
* Die BASE, M32 oder M256 ist der I2C-Bus Master.&lt;br /&gt;
* Die I2C-Bus Geschwindigkeit beträgt 100 kHz.&lt;br /&gt;
* Alle Hardware-Komponenten der ArduIO sind aufgebaut (1).&lt;br /&gt;
* Alle Jumper auf der ArduIO sind in ihrer Standardstellung (2).&lt;br /&gt;
* Die ArduIO ist mit dem XBUS der BASE, M32 oder M256 1:1 verbunden.&lt;br /&gt;
&lt;br /&gt;
 Zu (1): Wenn nicht alle Komponenten aufgebaut sind, sind die zugehörigen&lt;br /&gt;
         Funktionen natürlich nicht funktionsfähig und können nicht benutzt&lt;br /&gt;
         werden.&lt;br /&gt;
 Zu (2): Siehe folgende Abbildung!&lt;br /&gt;
&lt;br /&gt;
'''Standard-Jumperstellung'''&lt;br /&gt;
&lt;br /&gt;
[[Bild:ArduIO_JPdef_1.png|ArduIO Jumper Standardstellung]]&lt;br /&gt;
''Hinweis: Die Jumper sind orange eingezeichnet!''&lt;br /&gt;
&lt;br /&gt;
''Die Jumper der Stromversorgung (S1, JP_5V, JP_UB, JP_LOAD) wurden nicht berücksichtigt!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die '''Library''' (Software-Bibliothek) besteht aus drei Teilen:&lt;br /&gt;
* Dem [[RP6_ArduIO_-_Software#Configuration_Header|Configuration Header]] -&amp;gt; Hier stehen alle Definitionen und Festlegungen, die der grundlegenden Konfiguration der ArduIO dienen. Diese Datei kann auf die eigenen Hardware-Voraussetzungen angepaßt werden, ohne dass die eigentliche Library (Header und Source) verändert werden muss.&lt;br /&gt;
* Dem [[RP6_ArduIO_-_Software#Library_Header|Library Header]] -&amp;gt; Hier gibt es Definitionen, Variablen- und Funktionsdeklarationen für die Library.&lt;br /&gt;
* Der [[RP6_ArduIO_-_Software#Library_Source|Library Source]] -&amp;gt; Das ist die eigentliche Library.&lt;br /&gt;
&lt;br /&gt;
=====Configuration Header=====&lt;br /&gt;
Diese Datei ist der &amp;quot;Configuration Header&amp;quot; der neuen ArduIO Library. Sie gehört in den Ordner '''/.../RP6Lib/RP6common/'''.&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/* ****************************************************************************&lt;br /&gt;
 *                           _______________________&lt;br /&gt;
 *                           \| RP6  ROBOT SYSTEM |/&lt;br /&gt;
 *                            \_-_-_-_-_-_-_-_-_-_/                  &amp;gt;&amp;gt;&amp;gt; COMMON&lt;br /&gt;
 * ----------------------------------------------------------------------------&lt;br /&gt;
 * ----------------------------- [c]2014 - Dirk -------------------------------&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * File: RP6_ArduIO.h&lt;br /&gt;
 * Version: 1.1&lt;br /&gt;
 * Target: RP6 Base &amp;amp; Processor Expansion - ATMEGA32 @8.00 or 16.00MHz&lt;br /&gt;
 *         &amp;amp; RP6 M256 WiFi                - ATMEGA2560 @16.00MHz&lt;br /&gt;
 * Author(s): Dirk&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Description:&lt;br /&gt;
 * Configuration header file for new ArduIO Board library.&lt;br /&gt;
 *&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * THE CHANGELOG CAN BE FOUND AT THE END OF THIS FILE!&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#ifndef RP6_ARDUIO_H&lt;br /&gt;
#define RP6_ARDUIO_H&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO hardwired components:&lt;br /&gt;
// - I2C PWM Controller (IC3: PCA9685)&lt;br /&gt;
// - I2C I/O Expander 1 5V (IC8: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 2 5V (IC13: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 3 3V3 (IC12: PCA9535)&lt;br /&gt;
// - I2C A/D and D/A Converter 1 (IC11: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 2 (IC10: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 3 (IC9: PCF8591)&lt;br /&gt;
// - UB Voltage Sensor&lt;br /&gt;
// - LEDs&lt;br /&gt;
// - PWM Ports&lt;br /&gt;
// - Power PWM Ports &amp;amp; H-Bridges&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Includes:&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6_ArduIOConfig.h&amp;quot;		// Configure the target system&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C PWM Controller (PCA9685):&lt;br /&gt;
// (A5, A4, A3 always 0, A1 always 1!)&lt;br /&gt;
#define I2C_ARDUIO_PWM_ADR				0x84	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR			0x86	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR			0x8c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR			0x8e	// A2/0 = 1/1&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR			0xe0	// ALLCALLADR&lt;br /&gt;
&lt;br /&gt;
// ---------------------------------------------------------------&lt;br /&gt;
#define PWM_FREQUENCY					1000	// 1kHz (default)&lt;br /&gt;
// ---------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#define CHALL_LED						0		// All LEDs (channels)&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C I/O Expander (PCA9535):&lt;br /&gt;
// (A1 always 1!)&lt;br /&gt;
#define I2C_ARDUIO_IO_1_ADR				0x44	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_1_ADR			0x46	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_IO_1_ADR			0x4c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_1_ADR			0x4e	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_IO_2_ADR			0x44	// A2/0 = 0/0&lt;br /&gt;
#define I2C_ARDUIO_IO_2_ADR				0x46	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_IO_2_ADR			0x4c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_2_ADR			0x4e	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_IO_3_ADR			0x44	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_3_ADR			0x46	// A2/0 = 0/1&lt;br /&gt;
#define I2C_ARDUIO_IO_3_ADR				0x4c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_3_ADR			0x4e	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591):&lt;br /&gt;
// (A1 always 1!)&lt;br /&gt;
#define I2C_ARDUIO_AD_1_ADR				0x94	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_1_ADR			0x96	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_AD_1_ADR			0x9c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_1_ADR			0x9e	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_AD_2_ADR			0x94	// A2/0 = 0/0&lt;br /&gt;
#define I2C_ARDUIO_AD_2_ADR				0x96	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_AD_2_ADR			0x9c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_2_ADR			0x9e	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_AD_3_ADR			0x94	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_3_ADR			0x96	// A2/0 = 0/1&lt;br /&gt;
#define I2C_ARDUIO_AD_3_ADR				0x9c	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_3_ADR			0x9e	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// UB Voltage Sensor:&lt;br /&gt;
// (Connected to A/D and D/A Converter 1 (ADDA_1: IC11), AIN3 (AD13),&lt;br /&gt;
//  if jumper JP_AD-UB on the ArduIO Board is CLOSED!)&lt;br /&gt;
#define ADCVAL_UB_LOW					175		// UB 6.9V&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// LEDs:&lt;br /&gt;
// (Status LED1..LED4 are connected to LED11..LED8 of the PCA9685!)&lt;br /&gt;
#define ARD_CHLED1						12&lt;br /&gt;
#define ARD_CHLED2						11&lt;br /&gt;
#define ARD_CHLED3						10&lt;br /&gt;
#define ARD_CHLED4						9&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// PWM Ports:&lt;br /&gt;
// (Ports PWM1..PWM4 are connected to LED15..LED12 of the PCA9685!)&lt;br /&gt;
#define CHPWM1							16&lt;br /&gt;
#define CHPWM2							15&lt;br /&gt;
#define CHPWM3							14&lt;br /&gt;
#define CHPWM4							13&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
// (H-Bridges HB1/HB2 are connected to LED0..LED3/LED4..LED7 of the PCA9685!)&lt;br /&gt;
// Power PWM Ports:&lt;br /&gt;
#define CHPOWERPWM1_P					1&lt;br /&gt;
#define CHPOWERPWM2_N					2&lt;br /&gt;
#define CHPOWERPWM3_P					3&lt;br /&gt;
#define CHPOWERPWM4_N					4&lt;br /&gt;
#define CHPOWERPWM5_P					5&lt;br /&gt;
#define CHPOWERPWM6_N					6&lt;br /&gt;
#define CHPOWERPWM7_P					7&lt;br /&gt;
#define CHPOWERPWM8_N					8&lt;br /&gt;
&lt;br /&gt;
// H-Bridges:&lt;br /&gt;
#define CHHB1_P1						1&lt;br /&gt;
#define CHHB1_N1						2&lt;br /&gt;
#define CHHB1_P2						3&lt;br /&gt;
#define CHHB1_N2						4&lt;br /&gt;
#define CHHB2_P1						5&lt;br /&gt;
#define CHHB2_N1						6&lt;br /&gt;
#define CHHB2_P2						7&lt;br /&gt;
#define CHHB2_N2						8&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Interrupt portpin definitions:&lt;br /&gt;
// Select INTx portpin definitions depending on RP6_ArduIOConfig.h:&lt;br /&gt;
#ifdef ARDUIO_RP6BASE&lt;br /&gt;
// Interrupt I/O portpin definitions (RP6Base):&lt;br /&gt;
#define IO_ARDUIO_INT1_IN				E_INT1	// ADC4 PA4  XBUS Pin 8&lt;br /&gt;
#define IO_ARDUIO_INT1_DDR				DDRA&lt;br /&gt;
#define IO_ARDUIO_INT1_PIN				PINA&lt;br /&gt;
#define IO_ARDUIO_INT1_PORT				PORTA&lt;br /&gt;
#else&lt;br /&gt;
#ifdef ARDUIO_RP6CONTROL&lt;br /&gt;
// Interrupt I/O portpin definitions (RP6Control M32):&lt;br /&gt;
#define IO_ARDUIO_INT1_IN				EINT1	// INT0 PD2  XBUS Pin 8&lt;br /&gt;
#define IO_ARDUIO_INT1_DDR				DDRD&lt;br /&gt;
#define IO_ARDUIO_INT1_PIN				PIND&lt;br /&gt;
#define IO_ARDUIO_INT1_PORT				PORTD&lt;br /&gt;
#define IO_ARDUIO_INT2_IN				EINT2	// INT1 PD3  XBUS Pin 11&lt;br /&gt;
#define IO_ARDUIO_INT2_DDR				DDRD&lt;br /&gt;
#define IO_ARDUIO_INT2_PIN				PIND&lt;br /&gt;
#define IO_ARDUIO_INT2_PORT				PORTD&lt;br /&gt;
#define IO_ARDUIO_INT3_IN				EINT3	// AIN0/INT2 PB2  XBUS Pin 9&lt;br /&gt;
#define IO_ARDUIO_INT3_DDR				DDRB&lt;br /&gt;
#define IO_ARDUIO_INT3_PIN				PINB&lt;br /&gt;
#define IO_ARDUIO_INT3_PORT				PORTB&lt;br /&gt;
#else&lt;br /&gt;
#ifdef ARDUIO_RP6M256WIFI&lt;br /&gt;
// Interrupt I/O portpin definitions (RP6M256 WiFi):&lt;br /&gt;
#define IO_ARDUIO_INT1_IN				INT1_PI12 // PCINT12 PJ3  XBUS Pin 8&lt;br /&gt;
#define IO_ARDUIO_INT1_DDR				DDRJ&lt;br /&gt;
#define IO_ARDUIO_INT1_PIN				PINJ&lt;br /&gt;
#define IO_ARDUIO_INT1_PORT				PORTJ&lt;br /&gt;
#define IO_ARDUIO_INT2_IN				INT2_PI15 // PCINT15 PJ6  XBUS Pin 11&lt;br /&gt;
#define IO_ARDUIO_INT2_DDR				DDRJ&lt;br /&gt;
#define IO_ARDUIO_INT2_PIN				PINJ&lt;br /&gt;
#define IO_ARDUIO_INT2_PORT				PORTJ&lt;br /&gt;
#define IO_ARDUIO_INT3_IN				INT3_PI14 // PCINT14 PJ5  XBUS Pin 9&lt;br /&gt;
#define IO_ARDUIO_INT3_DDR				DDRJ&lt;br /&gt;
#define IO_ARDUIO_INT3_PIN				PINJ&lt;br /&gt;
#define IO_ARDUIO_INT3_PORT				PORTJ&lt;br /&gt;
#define IO_ARDUIO_INTU_IN				INTU_PI13 // PCINT13 PJ4  XBUS Pin 7&lt;br /&gt;
#define IO_ARDUIO_INTU_DDR				DDRJ&lt;br /&gt;
#define IO_ARDUIO_INTU_PIN				PINJ&lt;br /&gt;
#define IO_ARDUIO_INTU_PORT				PORTJ&lt;br /&gt;
#else&lt;br /&gt;
	#error DEFINE &amp;quot;ARDUIO_RP6BASE&amp;quot;, &amp;quot;ARDUIO_RP6CONTROL&amp;quot; OR &amp;quot;ARDUIO_RP6M256WIFI&amp;quot;&lt;br /&gt;
	#error AS TARGET IN RP6_ArduIOConfig.h&lt;br /&gt;
#endif&lt;br /&gt;
#endif&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                     Arduino Uno Expander definitions                      */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ATTENTION: Using this library you MAY NOT connect an Arduino Uno Board to&lt;br /&gt;
//            the RP6 ArduIO Board using the Arduino Uno Expander pin headers&lt;br /&gt;
//            on the ArduIO Board, if the Arduino Uno Board is the I2C bus&lt;br /&gt;
//            master!!!!!!&lt;br /&gt;
//            BE VERY CAREFUL:&lt;br /&gt;
//            You may damage the Arduino Uno AND your RP6 ArduIO Board!&lt;br /&gt;
//&lt;br /&gt;
//            Of course you may connect Arduino ADDON boards (shields) to the&lt;br /&gt;
//            Arduino Uno Expander pin headers on the ArduIO Board.&lt;br /&gt;
//            BE VERY CAREFUL:&lt;br /&gt;
//            Not all Arduino shields will work on the RP6 ArduIO Board!  &lt;br /&gt;
//            You may damage the Arduino shield AND your RP6 ArduIO Board!&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Arduino Uno Expander &amp;lt;-&amp;gt; RP6_ArduIO Mapping Table:&lt;br /&gt;
//   Arduino Uno:  ATmega328:              RP6_ArduIO:&lt;br /&gt;
//   Pin Function  Pin  Functions          Pin   Name  IO ADDA&lt;br /&gt;
//  -----------------------------------------------------------&lt;br /&gt;
//    0  D0  RX    PD0  RXD_PCINT16        P00   GP200  2&lt;br /&gt;
//    1  D1  TX    PD1  TXD_PCINT17        P01   GP201  2&lt;br /&gt;
//    2  D2        PD2  INT0_PCINT18       P02   GP202  2&lt;br /&gt;
//    3  D3  PWM   PD3  INT1_OC2B_PCINT19  P03   GP203  2&lt;br /&gt;
//    4  D4        PD4  T0_XCK_PCINT20     P04   GP204  2&lt;br /&gt;
//    5  D5  PWM   PD5  T1_OC0B_PCINT21    P05   GP205  2&lt;br /&gt;
//    6  D6  PWM   PD6  AIN0_OC0A_PCINT22  P06   GP206  2&lt;br /&gt;
//    7  D7        PD7  AIN1_PCINT23       P07   GP207  2&lt;br /&gt;
//    8  D8        PB0  ICP1_CLKO_PCINT0   P15   GP215  2&lt;br /&gt;
//    9  D9  PWM   PB1  OC1A_PCINT1        P14   GP214  2&lt;br /&gt;
//   10  D10 PWM   PB2  SS_OC1B_PCINT2     P13   GP213  2&lt;br /&gt;
//   11  D11 PWM   PB3  MOSI_OC2A_PCINT13  P12   GP212  2&lt;br /&gt;
//   12  D12       PB4  MISO_PCINT4        P11   GP211  2&lt;br /&gt;
//   13  D13       PB5  SCK_PCINT5         P10   GP210  2&lt;br /&gt;
//&lt;br /&gt;
//    0  A0        PC0  ADC0_PCINT8        AIN0  AD30      3&lt;br /&gt;
//    1  A1        PC1  ADC1_PCINT9        AIN1  AD31      3&lt;br /&gt;
//    2  A2        PC2  ADC2_PCINT10       AIN2  AD32      3&lt;br /&gt;
//    3  A3        PC3  ADC3_PCINT11       AIN3  AD33      3&lt;br /&gt;
//    4  A4  SDA   PC4  ADC4_SDA_PCINT12         SDA&lt;br /&gt;
//    5  A5  SCL   PC5  ADC5_SCL_PCINT13         SCL&lt;br /&gt;
&lt;br /&gt;
//   Special &amp;quot;PWM portpin&amp;quot; connections:&lt;br /&gt;
//   Arduino Uno:  ATmega328:              RP6_ArduIO:&lt;br /&gt;
//   Pin Function  Pin  Functions          Name  JP_   Pins (*)&lt;br /&gt;
//  ------------------------------------------------------------&lt;br /&gt;
//    3  D3  PWM   PD3  INT1_OC2B_PCINT19  PWM3  PWM3  2-3&lt;br /&gt;
//    5  D5  PWM   PD5  T1_OC0B_PCINT21    PWM1  PWM1  1-2&lt;br /&gt;
//    6  D6  PWM   PD6  AIN0_OC0A_PCINT22  PWM1  PWM1  2-3&lt;br /&gt;
//    9  D9  PWM   PB1  OC1A_PCINT1        PWM2  PWM2  1-2&lt;br /&gt;
//   10  D10 PWM   PB2  SS_OC1B_PCINT2     PWM2  PWM2  2-3&lt;br /&gt;
//   11  D11 PWM   PB3  MOSI_OC2A_PCINT13  PWM3  PWM3  1-2&lt;br /&gt;
//  (At (*): Pins of JP_PWMx to be closed!)&lt;br /&gt;
&lt;br /&gt;
// Arduino Uno Expander ATmega 328 portpin names:&lt;br /&gt;
#define IO_ARD_D0_RXD_PCINT16			0&lt;br /&gt;
#define IO_ARD_D1_TXD_PCINT17			1&lt;br /&gt;
#define IO_ARD_D2_INT0_PCINT18			2&lt;br /&gt;
#define IO_ARD_D3_INT1_OC2B_PCINT19		3&lt;br /&gt;
#define IO_ARD_D4_T0_XCK_PCINT20		4&lt;br /&gt;
#define IO_ARD_D5_T1_OC0B_PCINT21		5&lt;br /&gt;
#define IO_ARD_D6_AIN0_OC0A_PCINT22		6&lt;br /&gt;
#define IO_ARD_D7_AIN1_PCINT23			7&lt;br /&gt;
#define IO_ARD_D8_ICP1_CLKO_PCINT0		8&lt;br /&gt;
#define IO_ARD_D9_OC1A_PCINT1			9&lt;br /&gt;
#define IO_ARD_D10_SS_OC1B_PCINT2		10&lt;br /&gt;
#define IO_ARD_D11_MOSI_OC2A_PCINT13	11&lt;br /&gt;
#define IO_ARD_D12_MISO_PCINT4			12&lt;br /&gt;
#define IO_ARD_D13_SCK_PCINT5			13&lt;br /&gt;
&lt;br /&gt;
#define AD_ARD_A0_ADC0_PCINT8			0&lt;br /&gt;
#define AD_ARD_A1_ADC1_PCINT9			1&lt;br /&gt;
#define AD_ARD_A2_ADC2_PCINT10			2&lt;br /&gt;
#define AD_ARD_A3_ADC3_PCINT11			3&lt;br /&gt;
#define AD_ARD_A4_ADC4_SDA_PCINT12		4&lt;br /&gt;
#define AD_ARD_A5_ADC5_SCL_PCINT13		5&lt;br /&gt;
&lt;br /&gt;
// Arduino Uno Expander portpin short definitions:&lt;br /&gt;
#define IO_ARD_D0_RX					0&lt;br /&gt;
#define IO_ARD_D1_TX					1&lt;br /&gt;
#define IO_ARD_D2						2&lt;br /&gt;
#define IO_ARD_D3_PWM					3&lt;br /&gt;
#define IO_ARD_D4						4&lt;br /&gt;
#define IO_ARD_D5_PWM					5&lt;br /&gt;
#define IO_ARD_D6_PWM					6&lt;br /&gt;
#define IO_ARD_D7						7&lt;br /&gt;
#define IO_ARD_D8						8&lt;br /&gt;
#define IO_ARD_D9_PWM					9&lt;br /&gt;
#define IO_ARD_D10_PWM					10&lt;br /&gt;
#define IO_ARD_D11_PWM					11&lt;br /&gt;
#define IO_ARD_D12						12&lt;br /&gt;
#define IO_ARD_D13						13&lt;br /&gt;
&lt;br /&gt;
#define AD_ARD_A0						0&lt;br /&gt;
#define AD_ARD_A1						1&lt;br /&gt;
#define AD_ARD_A2						2&lt;br /&gt;
#define AD_ARD_A3						3&lt;br /&gt;
#define AD_ARD_A4_SDA					4&lt;br /&gt;
#define AD_ARD_A5_SCL					5&lt;br /&gt;
&lt;br /&gt;
// Arduino Uno Expander PWM portpin definitions:&lt;br /&gt;
// (Use only ONE of the IO_ARD_PWMx definitions! Never two or three!)&lt;br /&gt;
#define IO_ARD_PWM1						0				// JP_PWM1 open&lt;br /&gt;
//#define IO_ARD_PWM1						IO_ARD_D5_PWM	// JP_PWM1 1-2 closed&lt;br /&gt;
//#define IO_ARD_PWM1						IO_ARD_D6_PWM	// JP_PWM1 2-3 closed&lt;br /&gt;
// IMPORTANT: If JP_PWM1 is CLOSED on any pins, the JP_ARD2 jumper of that&lt;br /&gt;
//            Arduino Uno Expander PWM portpin (D5 or D6) MUST BE OPEN!!!&lt;br /&gt;
#define IO_ARD_PWM2						0				// JP_PWM2 open&lt;br /&gt;
//#define IO_ARD_PWM2						IO_ARD_D9_PWM	// JP_PWM2 1-2 closed&lt;br /&gt;
//#define IO_ARD_PWM2						IO_ARD_D10_PWM	// JP_PWM2 2-3 closed&lt;br /&gt;
// IMPORTANT: If JP_PWM2 is CLOSED on any pins, the JP_ARD2 jumper of that&lt;br /&gt;
//            Arduino Uno Expander PWM portpin (D9 or D10) MUST BE OPEN!!!&lt;br /&gt;
#define IO_ARD_PWM3						0				// JP_PWM3 open&lt;br /&gt;
//#define IO_ARD_PWM3						IO_ARD_D11_PWM	// JP_PWM3 1-2 closed&lt;br /&gt;
//#define IO_ARD_PWM3						IO_ARD_D3_PWM	// JP_PWM3 2-3 closed&lt;br /&gt;
// IMPORTANT: If JP_PWM3 is CLOSED on any pins, the JP_ARD2 jumper of that&lt;br /&gt;
//            Arduino Uno Expander PWM portpin (D11 or D3) MUST BE OPEN!!!&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Arduino Uno Expander read/write software examples:&lt;br /&gt;
// 1. Writing to the digital portpins (D0..D13):&lt;br /&gt;
//    io2outs.ARD_D10 = true;&lt;br /&gt;
//    updateArduino_Uno_Exp_IO();				// Set D10&lt;br /&gt;
//    ==&amp;gt; Hint: If D10 is connected to PWM2, then D10 will be set by this&lt;br /&gt;
//              PWM port instead of IO_2: P13!!!&lt;br /&gt;
//    io2outs.ARD_D8 = false;&lt;br /&gt;
//    updateArduino_Uno_Exp_IO();				// Clear D8&lt;br /&gt;
//    setArduino_Uno_Exp_IO(0b0001000000000000);// Set D9 &amp;amp; clear all others&lt;br /&gt;
//    ==&amp;gt; Bit positions in the io2ins and io2outs word:&lt;br /&gt;
//                          0b0000000000000000&lt;br /&gt;
//                            |||    ||      |&lt;br /&gt;
//                   Arduino: ||D8   |D7     D0&lt;br /&gt;
//                            n.c.   D13 &lt;br /&gt;
// 2. Controlling the digital &amp;quot;PWM portpins&amp;quot; (D3, 5, 6, 9, 10, 11):&lt;br /&gt;
//    ==&amp;gt; If one of these pins is disconnected from the IO_2 portpins and&lt;br /&gt;
//        instead is connected to a PWM port (PWM1, 2, 3), this &amp;quot;PWM portpin&amp;quot;&lt;br /&gt;
//        can be controlled by the PWM function:&lt;br /&gt;
//    dimArduino_Uno_Exp_PWM(1,duty);			// Set the D5 OR D6 duty cycle&lt;br /&gt;
//    dimArduino_Uno_Exp_PWM1(duty);			// The same!&lt;br /&gt;
//    ==&amp;gt; Hint: Depending on JP_PWM1 the PWM can be found at D5 OR D6!!!&lt;br /&gt;
// 3. Reading the digital portpins (D0..D13):&lt;br /&gt;
//    configArduIO_IO2(0b1111111111111111);		// All portpins are INPUTs&lt;br /&gt;
//    ==&amp;gt; This function must be called only ONCE!&lt;br /&gt;
//    task_readArduino_Uno_Exp_IO();			// Read D0..D13&lt;br /&gt;
//    io_D0 = io2ins.ARD_D0;					// This is D0&lt;br /&gt;
//    io_D11 = io2ins.ARD_D11;					// This is D11&lt;br /&gt;
//    all_ios = io2ins.word &amp;amp; 0x3fff;			// All portpins in 1 word&lt;br /&gt;
// 4. Reading the analog portpins (A0..A3):&lt;br /&gt;
//    task_readArduino_Uno_Exp_AD();			// Read A0..A3&lt;br /&gt;
//    adc_A0 = ad3ins.ARD_A0;					// This is A0&lt;br /&gt;
//    adc_A3 = ad3ins.ARD_A3;					// This is A3&lt;br /&gt;
// 5. Reading all portpins and the interrupt signal:&lt;br /&gt;
//    task_Arduino_Uno_Exp();					// Read D0..D13, A0..A3 and&lt;br /&gt;
//                                              // PCA9535 (2) INT&lt;br /&gt;
//    int = interrupt_RP6ArduIOstatus.ioexp_2	// This is PCA9535 (2) INT&lt;br /&gt;
//    ==&amp;gt; Hint 1: This XBUS INT1 indicates a level change on D0..D13!!!&lt;br /&gt;
//    ==&amp;gt; Hint 2: If the variable interrupt_rp6arduiostatus_changed becomes&lt;br /&gt;
//                TRUE after execution of this task, INT1 has changed!!!&lt;br /&gt;
//    ==&amp;gt; Hint 3: Pins 1-2 of jumper JP_INT3V3 must be CLOSED!!!&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                   Arduino Uno Expander definitions end                    */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Additional info&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Changelog:&lt;br /&gt;
 * &lt;br /&gt;
 *  ---&amp;gt; changes are documented in the file &amp;quot;RP6_ArduIOLib.c&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Library Header=====&lt;br /&gt;
Diese Datei ist der &amp;quot;Header&amp;quot; der neuen ArduIO Library. Sie gehört in den Ordner '''/.../RP6Lib/RP6common/'''.&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIOLib.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/* ****************************************************************************&lt;br /&gt;
 *                           _______________________&lt;br /&gt;
 *                           \| RP6  ROBOT SYSTEM |/&lt;br /&gt;
 *                            \_-_-_-_-_-_-_-_-_-_/                  &amp;gt;&amp;gt;&amp;gt; COMMON&lt;br /&gt;
 * ----------------------------------------------------------------------------&lt;br /&gt;
 * ----------------------------- [c]2014 - Dirk -------------------------------&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * File: RP6_ArduIOLib.h&lt;br /&gt;
 * Version: 1.1&lt;br /&gt;
 * Target: RP6 Base &amp;amp; Processor Expansion - ATMEGA32 @8.00 or 16.00MHz&lt;br /&gt;
 *         &amp;amp; RP6 M256 WiFi                - ATMEGA2560 @16.00MHz&lt;br /&gt;
 * Author(s): Dirk&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Description:&lt;br /&gt;
 * This is the RP6_ArduIOLib header file.&lt;br /&gt;
 * You have to include this file, if you want to use the library&lt;br /&gt;
 * RP6_ArduIOLib.c in your own projects.&lt;br /&gt;
 *&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * THE CHANGELOG CAN BE FOUND AT THE END OF THIS FILE!&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#ifndef RP6_ARDUIOLIB_H&lt;br /&gt;
#define RP6_ARDUIOLIB_H&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO hardwired components:&lt;br /&gt;
// - I2C PWM Controller (IC3: PCA9685)&lt;br /&gt;
// - I2C I/O Expander 1 5V (IC8: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 2 5V (IC13: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 3 3V3 (IC12: PCA9535)&lt;br /&gt;
// - I2C A/D and D/A Converter 1 (IC11: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 2 (IC10: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 3 (IC9: PCF8591)&lt;br /&gt;
// - UB Voltage Sensor&lt;br /&gt;
// - LEDs&lt;br /&gt;
// - PWM Ports&lt;br /&gt;
// - Power PWM Ports &amp;amp; H-Bridges&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Includes:&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6_ArduIO.h&amp;quot;				// Config. header for ArduIO Library&lt;br /&gt;
&lt;br /&gt;
// Select includes depending on RP6_ArduIOConfig.h:&lt;br /&gt;
#ifdef ARDUIO_RP6BASE&lt;br /&gt;
	#include &amp;quot;RP6RobotBaseLib.h&amp;quot;	// The RP6 Robot Base Library.&lt;br /&gt;
#else&lt;br /&gt;
#ifdef ARDUIO_RP6CONTROL&lt;br /&gt;
	#include &amp;quot;RP6ControlLib.h&amp;quot;		// The RP6 Control M32 Library.&lt;br /&gt;
#else&lt;br /&gt;
#ifdef ARDUIO_RP6M256WIFI&lt;br /&gt;
	#include &amp;quot;RP6M256Lib.h&amp;quot; 		// The RP6 M256 Library.&lt;br /&gt;
#else&lt;br /&gt;
	#error DEFINE &amp;quot;ARDUIO_RP6BASE&amp;quot;, &amp;quot;ARDUIO_RP6CONTROL&amp;quot; OR &amp;quot;ARDUIO_RP6M256WIFI&amp;quot;&lt;br /&gt;
	#error AS TARGET IN RP6_ArduIOConfig.h&lt;br /&gt;
#endif&lt;br /&gt;
#endif&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;quot;RP6I2CmasterTWI.h&amp;quot;		// Include the I2C-Bus Master Library&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO Status:&lt;br /&gt;
&lt;br /&gt;
#define DISABLE_ON_SHUTDOWN				// Disable access to PPWM, PWM, Out&lt;br /&gt;
										// &amp;amp; DAC ports in SHUTDOWN mode&lt;br /&gt;
										// (default)!&lt;br /&gt;
&lt;br /&gt;
// The ArduIO status bits with access settings &amp;amp; UB voltage low flag:&lt;br /&gt;
typedef union {&lt;br /&gt;
 	uint8_t byte;&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned ubatLow       :1;		// UB voltage low&lt;br /&gt;
		unsigned hb1Enable     :1;		// H-Bridge 1 (HB1) enable&lt;br /&gt;
		unsigned hb2Enable     :1;		// H-Bridge 2 (HB2) enable&lt;br /&gt;
		unsigned ppwm_g1Enable :1;		// Power PWM group 1 (PPWM1..4) enable&lt;br /&gt;
		unsigned ppwm_g2Enable :1;		// Power PWM group 2 (PPWM5..8) enable&lt;br /&gt;
		unsigned pwmsEnable    :1;		// Free PWMs (PWM1..4) enable&lt;br /&gt;
		unsigned outsEnable    :1;		// IO_1..3 IOs enable as outputs&lt;br /&gt;
		unsigned dasEnable     :1;		// ADDA_1..3 DACs enable&lt;br /&gt;
	};&lt;br /&gt;
} RP6ArduIOstatus_t;&lt;br /&gt;
&lt;br /&gt;
extern RP6ArduIOstatus_t RP6ArduIOstatus;	// ArduIO status bits (read only)&lt;br /&gt;
&lt;br /&gt;
void enableHB(uint8_t);&lt;br /&gt;
#define enableHB1() {enableHB(1);}&lt;br /&gt;
#define enableHB2() {enableHB(2);}&lt;br /&gt;
#define isHB1Enable() (RP6ArduIOstatus_LIB.byte &amp;amp; 2)&lt;br /&gt;
#define isHB2Enable() (RP6ArduIOstatus_LIB.byte &amp;amp; 4)&lt;br /&gt;
void disableHB(uint8_t);&lt;br /&gt;
#define disableHB1() {disableHB(1);}&lt;br /&gt;
#define disableHB2() {disableHB(2);}&lt;br /&gt;
void enablePPWM_G(uint8_t);&lt;br /&gt;
#define enablePPWM_G1() {enablePPWM_G(1);}&lt;br /&gt;
#define enablePPWM_G2() {enablePPWM_G(2);}&lt;br /&gt;
#define isPPWM_G1Enable() (RP6ArduIOstatus_LIB.byte &amp;amp; 8)&lt;br /&gt;
#define isPPWM_G2Enable() (RP6ArduIOstatus_LIB.byte &amp;amp; 16)&lt;br /&gt;
void disablePPWM_G(uint8_t);&lt;br /&gt;
#define disablePPWM_G1() {disablePPWM_G(1);}&lt;br /&gt;
#define disablePPWM_G2() {disablePPWM_G(2);}&lt;br /&gt;
void enablePWMs(void);&lt;br /&gt;
#define isPWMsEnable() (RP6ArduIOstatus_LIB.byte &amp;amp; 32)&lt;br /&gt;
void disablePWMs(void);&lt;br /&gt;
void enableOuts(void);&lt;br /&gt;
#define isOutsEnable() (RP6ArduIOstatus_LIB.byte &amp;amp; 64)&lt;br /&gt;
void disableOuts(void);&lt;br /&gt;
void enableDAs(void);&lt;br /&gt;
#define isDAsEnable() (RP6ArduIOstatus_LIB.byte &amp;amp; 128)&lt;br /&gt;
void disableDAs(void);&lt;br /&gt;
#define setArduIODefaultStatus() {enablePPWM_G(1);enablePPWM_G(2); \&lt;br /&gt;
 enablePWMs();enableOuts();enableDAs();}&lt;br /&gt;
#define setArduIOShutdownStatus() {disableHB(1);disableHB(2); \&lt;br /&gt;
 disablePPWM_G(1);disablePPWM_G(2);disablePWMs();disableOuts();disableDAs();}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C PWM Controller (PCA9685):&lt;br /&gt;
&lt;br /&gt;
// Registers:&lt;br /&gt;
#define PCA9685_MODE1					0&lt;br /&gt;
#define PCA9685_MODE2					1&lt;br /&gt;
#define PCA9685_SUBADR1					2&lt;br /&gt;
#define PCA9685_SUBADR2					3&lt;br /&gt;
#define PCA9685_SUBADR3					4&lt;br /&gt;
#define PCA9685_ALLCALLADR				5&lt;br /&gt;
#define PCA9685_LED0_ON_L				6&lt;br /&gt;
#define PCA9685_LED0_ON_H				7&lt;br /&gt;
#define PCA9685_LED0_OFF_L				8&lt;br /&gt;
#define PCA9685_LED0_OFF_H				9&lt;br /&gt;
#define PCA9685_LED1_ON_L				10&lt;br /&gt;
#define PCA9685_LED1_ON_H				11&lt;br /&gt;
#define PCA9685_LED1_OFF_L				12&lt;br /&gt;
#define PCA9685_LED1_OFF_H				13&lt;br /&gt;
#define PCA9685_LED2_ON_L				14&lt;br /&gt;
#define PCA9685_LED2_ON_H				15&lt;br /&gt;
#define PCA9685_LED2_OFF_L				16&lt;br /&gt;
#define PCA9685_LED2_OFF_H				17&lt;br /&gt;
#define PCA9685_LED3_ON_L				18&lt;br /&gt;
#define PCA9685_LED3_ON_H				19&lt;br /&gt;
#define PCA9685_LED3_OFF_L				20&lt;br /&gt;
#define PCA9685_LED3_OFF_H				21&lt;br /&gt;
#define PCA9685_LED4_ON_L				22&lt;br /&gt;
#define PCA9685_LED4_ON_H				23&lt;br /&gt;
#define PCA9685_LED4_OFF_L				24&lt;br /&gt;
#define PCA9685_LED4_OFF_H				25&lt;br /&gt;
#define PCA9685_LED5_ON_L				26&lt;br /&gt;
#define PCA9685_LED5_ON_H				27&lt;br /&gt;
#define PCA9685_LED5_OFF_L				28&lt;br /&gt;
#define PCA9685_LED5_OFF_H				29&lt;br /&gt;
#define PCA9685_LED6_ON_L				30&lt;br /&gt;
#define PCA9685_LED6_ON_H				31&lt;br /&gt;
#define PCA9685_LED6_OFF_L				32&lt;br /&gt;
#define PCA9685_LED6_OFF_H				33&lt;br /&gt;
#define PCA9685_LED7_ON_L				34&lt;br /&gt;
#define PCA9685_LED7_ON_H				35&lt;br /&gt;
#define PCA9685_LED7_OFF_L				36&lt;br /&gt;
#define PCA9685_LED7_OFF_H				37&lt;br /&gt;
#define PCA9685_LED8_ON_L				38&lt;br /&gt;
#define PCA9685_LED8_ON_H				39&lt;br /&gt;
#define PCA9685_LED8_OFF_L				40&lt;br /&gt;
#define PCA9685_LED8_OFF_H				41&lt;br /&gt;
#define PCA9685_LED9_ON_L				42&lt;br /&gt;
#define PCA9685_LED9_ON_H				43&lt;br /&gt;
#define PCA9685_LED9_OFF_L				44&lt;br /&gt;
#define PCA9685_LED9_OFF_H				45&lt;br /&gt;
#define PCA9685_LED10_ON_L				46&lt;br /&gt;
#define PCA9685_LED10_ON_H				47&lt;br /&gt;
#define PCA9685_LED10_OFF_L				48&lt;br /&gt;
#define PCA9685_LED10_OFF_H				49&lt;br /&gt;
#define PCA9685_LED11_ON_L				50&lt;br /&gt;
#define PCA9685_LED11_ON_H				51&lt;br /&gt;
#define PCA9685_LED11_OFF_L				52&lt;br /&gt;
#define PCA9685_LED11_OFF_H				53&lt;br /&gt;
#define PCA9685_LED12_ON_L				54&lt;br /&gt;
#define PCA9685_LED12_ON_H				55&lt;br /&gt;
#define PCA9685_LED12_OFF_L				56&lt;br /&gt;
#define PCA9685_LED12_OFF_H				57&lt;br /&gt;
#define PCA9685_LED13_ON_L				58&lt;br /&gt;
#define PCA9685_LED13_ON_H				59&lt;br /&gt;
#define PCA9685_LED13_OFF_L				60&lt;br /&gt;
#define PCA9685_LED13_OFF_H				61&lt;br /&gt;
#define PCA9685_LED14_ON_L				62&lt;br /&gt;
#define PCA9685_LED14_ON_H				63&lt;br /&gt;
#define PCA9685_LED14_OFF_L				64&lt;br /&gt;
#define PCA9685_LED14_OFF_H				65&lt;br /&gt;
#define PCA9685_LED15_ON_L				66&lt;br /&gt;
#define PCA9685_LED15_ON_H				67&lt;br /&gt;
#define PCA9685_LED15_OFF_L				68&lt;br /&gt;
#define PCA9685_LED15_OFF_H				69&lt;br /&gt;
#define PCA9685_ALL_LED_ON_L			250&lt;br /&gt;
#define PCA9685_ALL_LED_ON_H			251&lt;br /&gt;
#define PCA9685_ALL_LED_OFF_L			252&lt;br /&gt;
#define PCA9685_ALL_LED_OFF_H			253&lt;br /&gt;
#define PCA9685_PRE_SCALE				254&lt;br /&gt;
#define PCA9685_TESTMODE				255&lt;br /&gt;
&lt;br /&gt;
// Mode1 register bitmasks:&lt;br /&gt;
#define PCA9685_MODE1_DEFAULT			17&lt;br /&gt;
#define PCA9685_MODE1_ALLCALL			1&lt;br /&gt;
#define PCA9685_MODE1_SUB3				2&lt;br /&gt;
#define PCA9685_MODE1_SUB2				4&lt;br /&gt;
#define PCA9685_MODE1_SUB1				8&lt;br /&gt;
#define PCA9685_MODE1_SLEEP				16&lt;br /&gt;
#define PCA9685_MODE1_AI				32&lt;br /&gt;
#define PCA9685_MODE1_EXTCLK			64&lt;br /&gt;
#define PCA9685_MODE1_RESTART			128&lt;br /&gt;
&lt;br /&gt;
// Mode2 register bitmasks:&lt;br /&gt;
#define PCA9685_MODE2_DEFAULT			4		// Totem poles (default)&lt;br /&gt;
#define PCA9685_MODE2_ARDUIO			16		// Inverted open-drains&lt;br /&gt;
#define PCA9685_MODE2_OUTDRV			4&lt;br /&gt;
#define PCA9685_MODE2_OCH				8&lt;br /&gt;
#define PCA9685_MODE2_INVRT				16&lt;br /&gt;
&lt;br /&gt;
#define F_PCA9685						25000000.0	// Int. Clock: 25 MHz&lt;br /&gt;
&lt;br /&gt;
void PCA9685_ARD_init(uint16_t);&lt;br /&gt;
#define initPWM(__FREQ__) {PCA9685_ARD_init(__FREQ__);}&lt;br /&gt;
void PCA9685_ARD_set(uint8_t, uint16_t);&lt;br /&gt;
#define setPWM(__CHANNEL__,__DUTY__) {PCA9685_ARD_set(__CHANNEL__,__DUTY__);}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C I/O Expander (PCF9535):&lt;br /&gt;
&lt;br /&gt;
// Registers:&lt;br /&gt;
#define PCA9535_INPUT_P0				0&lt;br /&gt;
#define PCA9535_INPUT_P1				1&lt;br /&gt;
#define PCA9535_OUTPUT_P0				2&lt;br /&gt;
#define PCA9535_OUTPUT_P1				3&lt;br /&gt;
#define PCA9535_POL_INV_P0				4&lt;br /&gt;
#define PCA9535_POL_INV_P1				5&lt;br /&gt;
#define PCA9535_CONFIG_P0				6&lt;br /&gt;
#define PCA9535_CONFIG_P1				7&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander 1 5V (IC8: PCA9535):&lt;br /&gt;
#define IO_1							1&lt;br /&gt;
typedef union {&lt;br /&gt;
	uint16_t word;&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned P00:1;					// P00&lt;br /&gt;
		unsigned P01:1;					// P01&lt;br /&gt;
		unsigned P02:1;					// P02&lt;br /&gt;
		unsigned P03:1;					// P03&lt;br /&gt;
		unsigned P04:1;					// P04&lt;br /&gt;
		unsigned P05:1;					// P05&lt;br /&gt;
		unsigned P06:1;					// P06&lt;br /&gt;
		unsigned P07:1;					// P07&lt;br /&gt;
		unsigned P10:1;					// P10&lt;br /&gt;
		unsigned P11:1;					// P11&lt;br /&gt;
		unsigned P12:1;					// P12&lt;br /&gt;
		unsigned P13:1;					// P13&lt;br /&gt;
		unsigned P14:1;					// P14&lt;br /&gt;
		unsigned P15:1;					// P15&lt;br /&gt;
		unsigned P16:1;					// P16&lt;br /&gt;
		unsigned P17:1;					// P17&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned GP100:1;				// IO_1: P00&lt;br /&gt;
		unsigned GP101:1;				// IO_1: P01&lt;br /&gt;
		unsigned GP102:1;				// IO_1: P02&lt;br /&gt;
		unsigned GP103:1;				// IO_1: P03&lt;br /&gt;
		unsigned GP104:1;				// IO_1: P04&lt;br /&gt;
		unsigned GP105:1;				// IO_1: P05&lt;br /&gt;
		unsigned GP106:1;				// IO_1: P06&lt;br /&gt;
		unsigned GP107:1;				// IO_1: P07&lt;br /&gt;
		unsigned GP110:1;				// IO_1: P10&lt;br /&gt;
		unsigned GP111:1;				// IO_1: P11&lt;br /&gt;
		unsigned GP112:1;				// IO_1: P12&lt;br /&gt;
		unsigned GP113:1;				// IO_1: P13&lt;br /&gt;
		unsigned GP114:1;				// IO_1: P14&lt;br /&gt;
		unsigned GP115:1;				// IO_1: P15&lt;br /&gt;
		unsigned GP116:1;				// IO_1: P16&lt;br /&gt;
		unsigned GP117:1;				// IO_1: P17&lt;br /&gt;
	};&lt;br /&gt;
} ioexp_1_t;&lt;br /&gt;
&lt;br /&gt;
extern ioexp_1_t io1config;&lt;br /&gt;
extern ioexp_1_t io1invrt;&lt;br /&gt;
extern ioexp_1_t io1ins;&lt;br /&gt;
extern ioexp_1_t io1outs;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander 2 5V (IC13: PCA9535):&lt;br /&gt;
#define IO_2							2&lt;br /&gt;
typedef union {&lt;br /&gt;
	uint16_t word;&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned P00:1;					// P00&lt;br /&gt;
		unsigned P01:1;					// P01&lt;br /&gt;
		unsigned P02:1;					// P02&lt;br /&gt;
		unsigned P03:1;					// P03&lt;br /&gt;
		unsigned P04:1;					// P04&lt;br /&gt;
		unsigned P05:1;					// P05&lt;br /&gt;
		unsigned P06:1;					// P06&lt;br /&gt;
		unsigned P07:1;					// P07&lt;br /&gt;
		unsigned P10:1;					// P10&lt;br /&gt;
		unsigned P11:1;					// P11&lt;br /&gt;
		unsigned P12:1;					// P12&lt;br /&gt;
		unsigned P13:1;					// P13&lt;br /&gt;
		unsigned P14:1;					// P14&lt;br /&gt;
		unsigned P15:1;					// P15&lt;br /&gt;
		unsigned P16:1;					// P16&lt;br /&gt;
		unsigned P17:1;					// P17&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned GP200:1;				// IO_2: P00&lt;br /&gt;
		unsigned GP201:1;				// IO_2: P01&lt;br /&gt;
		unsigned GP202:1;				// IO_2: P02&lt;br /&gt;
		unsigned GP203:1;				// IO_2: P03&lt;br /&gt;
		unsigned GP204:1;				// IO_2: P04&lt;br /&gt;
		unsigned GP205:1;				// IO_2: P05&lt;br /&gt;
		unsigned GP206:1;				// IO_2: P06&lt;br /&gt;
		unsigned GP207:1;				// IO_2: P07&lt;br /&gt;
		unsigned GP210:1;				// IO_2: P10&lt;br /&gt;
		unsigned GP211:1;				// IO_2: P11&lt;br /&gt;
		unsigned GP212:1;				// IO_2: P12&lt;br /&gt;
		unsigned GP213:1;				// IO_2: P13&lt;br /&gt;
		unsigned GP214:1;				// IO_2: P14&lt;br /&gt;
		unsigned GP215:1;				// IO_2: P15&lt;br /&gt;
		unsigned GP216:1;				// IO_2: P16&lt;br /&gt;
		unsigned GP217:1;				// IO_2: P17&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned ARD_D0:1;				// ARD: D0&lt;br /&gt;
		unsigned ARD_D1:1;				// ARD: D1&lt;br /&gt;
		unsigned ARD_D2:1;				// ARD: D2&lt;br /&gt;
		unsigned ARD_D3:1;				// ARD: D3&lt;br /&gt;
		unsigned ARD_D4:1;				// ARD: D4&lt;br /&gt;
		unsigned ARD_D5:1;				// ARD: D5&lt;br /&gt;
		unsigned ARD_D6:1;				// ARD: D6&lt;br /&gt;
		unsigned ARD_D7:1;				// ARD: D7&lt;br /&gt;
		unsigned ARD_D13:1;				// ARD: D13&lt;br /&gt;
		unsigned ARD_D12:1;				// ARD: D12&lt;br /&gt;
		unsigned ARD_D11:1;				// ARD: D11&lt;br /&gt;
		unsigned ARD_D10:1;				// ARD: D10&lt;br /&gt;
		unsigned ARD_D9:1;				// ARD: D9&lt;br /&gt;
		unsigned ARD_D8:1;				// ARD: D8&lt;br /&gt;
		unsigned GP216:1;				// IO_2: P16&lt;br /&gt;
		unsigned GP217:1;				// IO_2: P17&lt;br /&gt;
	};&lt;br /&gt;
} ioexp_2_t;&lt;br /&gt;
&lt;br /&gt;
extern ioexp_2_t io2config;&lt;br /&gt;
extern ioexp_2_t io2invrt;&lt;br /&gt;
extern ioexp_2_t io2ins;&lt;br /&gt;
extern ioexp_2_t io2outs;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander 3 3V3 (IC12: PCA9535):&lt;br /&gt;
#define IO_3							3&lt;br /&gt;
typedef union {&lt;br /&gt;
	uint16_t word;&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned P00:1;					// P00&lt;br /&gt;
		unsigned P01:1;					// P01&lt;br /&gt;
		unsigned P02:1;					// P02&lt;br /&gt;
		unsigned P03:1;					// P03&lt;br /&gt;
		unsigned P04:1;					// P04&lt;br /&gt;
		unsigned P05:1;					// P05&lt;br /&gt;
		unsigned P06:1;					// P06&lt;br /&gt;
		unsigned P07:1;					// P07&lt;br /&gt;
		unsigned P10:1;					// P10&lt;br /&gt;
		unsigned P11:1;					// P11&lt;br /&gt;
		unsigned P12:1;					// P12&lt;br /&gt;
		unsigned P13:1;					// P13&lt;br /&gt;
		unsigned P14:1;					// P14&lt;br /&gt;
		unsigned P15:1;					// P15&lt;br /&gt;
		unsigned P16:1;					// P16&lt;br /&gt;
		unsigned P17:1;					// P17&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned GP300:1;				// IO_3: P00&lt;br /&gt;
		unsigned GP301:1;				// IO_3: P01&lt;br /&gt;
		unsigned GP302:1;				// IO_3: P02&lt;br /&gt;
		unsigned GP303:1;				// IO_3: P03&lt;br /&gt;
		unsigned GP304:1;				// IO_3: P04&lt;br /&gt;
		unsigned GP305:1;				// IO_3: P05&lt;br /&gt;
		unsigned GP306:1;				// IO_3: P06&lt;br /&gt;
		unsigned GP307:1;				// IO_3: P07&lt;br /&gt;
		unsigned GP310:1;				// IO_3: P10&lt;br /&gt;
		unsigned GP311:1;				// IO_3: P11&lt;br /&gt;
		unsigned GP312:1;				// IO_3: P12&lt;br /&gt;
		unsigned GP313:1;				// IO_3: P13&lt;br /&gt;
		unsigned GP314:1;				// IO_3: P14&lt;br /&gt;
		unsigned GP315:1;				// IO_3: P15&lt;br /&gt;
		unsigned GP316:1;				// IO_3: P16&lt;br /&gt;
		unsigned GP317:1;				// IO_3: P17&lt;br /&gt;
	};&lt;br /&gt;
} ioexp_3_t;&lt;br /&gt;
&lt;br /&gt;
extern ioexp_3_t io3config;&lt;br /&gt;
extern ioexp_3_t io3invrt;&lt;br /&gt;
extern ioexp_3_t io3ins;&lt;br /&gt;
extern ioexp_3_t io3outs;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander (PCA9535) interrupt status bits:&lt;br /&gt;
typedef union {&lt;br /&gt;
 	uint8_t byte;&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned int1    :1;			// INT1  XBUS Pin 8&lt;br /&gt;
		unsigned int2    :1;			// INT2  XBUS Pin 11&lt;br /&gt;
		unsigned int3    :1;			// INT3  XBUS Pin 9&lt;br /&gt;
		unsigned intu    :1;			// INTU  XBUS Pin 7&lt;br /&gt;
		unsigned unused  :4;&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		unsigned ioexp_2 :1;			// INT1: PCA9535 (2) INT&lt;br /&gt;
		unsigned ioexp_1 :1;			// INT2: PCA9535 (1) INT&lt;br /&gt;
		unsigned ioexp_3 :1;			// INT3: PCA9535 (3) INT&lt;br /&gt;
		unsigned noname  :5;&lt;br /&gt;
	};&lt;br /&gt;
} interrupt_RP6ArduIOstatus_t;&lt;br /&gt;
&lt;br /&gt;
extern interrupt_RP6ArduIOstatus_t interrupt_RP6ArduIOstatus;&lt;br /&gt;
extern uint8_t interrupt_rp6arduiostatus_changed;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander (PCA9535) general functions:&lt;br /&gt;
void configArduIO_IO(uint8_t, uint16_t);&lt;br /&gt;
#define configArduIO_IO1(__INOUT__) {configArduIO_IO(1,__INOUT__);}&lt;br /&gt;
#define configArduIO_IO2(__INOUT__) {configArduIO_IO(2,__INOUT__);}&lt;br /&gt;
#define configArduIO_IO3(__INOUT__) {configArduIO_IO(3,__INOUT__);}&lt;br /&gt;
void updateArduIO_IO(uint8_t);&lt;br /&gt;
#define updateArduIO_IO1() {updateArduIO_IO(1);}&lt;br /&gt;
#define updateArduIO_IO2() {updateArduIO_IO(2);}&lt;br /&gt;
#define updateArduIO_IO3() {updateArduIO_IO(3);}&lt;br /&gt;
void setArduIO_IO(uint8_t, uint16_t);&lt;br /&gt;
#define setArduIO_IO1(__OUT__) {setArduIO_IO(1,__OUT__);}&lt;br /&gt;
#define setArduIO_IO2(__OUT__) {setArduIO_IO(2,__OUT__);}&lt;br /&gt;
#define setArduIO_IO3(__OUT__) {setArduIO_IO(3,__OUT__);}&lt;br /&gt;
void invertArduIO_IO(uint8_t, uint16_t);&lt;br /&gt;
#define invertArduIO_IO1(__INVRT__) {invertArduIO_IO(1,__INVRT__);}&lt;br /&gt;
#define invertArduIO_IO2(__INVRT__) {invertArduIO_IO(2,__INVRT__);}&lt;br /&gt;
#define invertArduIO_IO3(__INVRT__) {invertArduIO_IO(3,__INVRT__);}&lt;br /&gt;
void task_readArduIO_IO(uint8_t);&lt;br /&gt;
#define task_readArduIO_IO1() {task_readArduIO_IO(1);}&lt;br /&gt;
#define task_readArduIO_IO2() {task_readArduIO_IO(2);}&lt;br /&gt;
#define task_readArduIO_IO3() {task_readArduIO_IO(3);}&lt;br /&gt;
#define task_readAllArduIO_IOs() {task_readArduIO_IO(1); \&lt;br /&gt;
 task_readArduIO_IO(2);task_readArduIO_IO(3);}&lt;br /&gt;
void task_checkArduIO_INTs(void);&lt;br /&gt;
#define int_status_changed() (interrupt_rp6arduiostatus_changed)&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591):&lt;br /&gt;
&lt;br /&gt;
#define READ_ADCUB	// If defined: Function task_readArduIO_AD(1) will also&lt;br /&gt;
					//  (default)  read the UB voltage ADC value (adcub) and&lt;br /&gt;
					//             will update the UB voltage low condition&lt;br /&gt;
					//             flag (RP6ArduIOstatus.ubatLow)!&lt;br /&gt;
					// If NOT defined: The UB voltage ADC value can be found&lt;br /&gt;
					//                 in the variable ad1ins.ArduIO_UB after&lt;br /&gt;
					//                 execution of task_readArduIO_AD(1)!&lt;br /&gt;
					// READ_ADCUB should NOT be defined, if jumper JP_AD-UB&lt;br /&gt;
					// on the ArduIO Board is OPEN!&lt;br /&gt;
&lt;br /&gt;
// Control Byte bitmasks:&lt;br /&gt;
#define PCF8591_CONTROL_DEFAULT			0&lt;br /&gt;
#define PCF8591_CONTROL_ARDUIO			0b01000100	// Auto-increment &amp;amp; DAC&lt;br /&gt;
&lt;br /&gt;
#define PCF8591_CONTROL_AUTO_INC		4			// Auto-increment&lt;br /&gt;
#define PCF8591_CONTROL_DAC_ENABLE		64			// DAC enable&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter 1 (IC11: PCF8591):&lt;br /&gt;
#define ADDA_1							1&lt;br /&gt;
typedef union {&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AIN0;					// AIN0&lt;br /&gt;
		uint8_t AIN1;					// AIN1&lt;br /&gt;
		uint8_t AIN2;					// AIN2&lt;br /&gt;
		uint8_t AIN3;					// AIN3&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AD10;					// ADDA_1: AIN0&lt;br /&gt;
		uint8_t AD11;					// ADDA_1: AIN1&lt;br /&gt;
		uint8_t AD12;					// ADDA_1: AIN2&lt;br /&gt;
		uint8_t AD13;					// ADDA_1: AIN3&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AD10;					// ADDA_1: AIN0&lt;br /&gt;
		uint8_t AD11;					// ADDA_1: AIN1&lt;br /&gt;
		uint8_t AD12;					// ADDA_1: AIN2&lt;br /&gt;
		uint8_t ArduIO_UB;				// ArduIO: UB&lt;br /&gt;
	};&lt;br /&gt;
} addaexp_1_t;&lt;br /&gt;
&lt;br /&gt;
extern addaexp_1_t ad1ins;&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter 2 (IC10: PCF8591):&lt;br /&gt;
#define ADDA_2							2&lt;br /&gt;
typedef union {&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AIN0;					// AIN0&lt;br /&gt;
		uint8_t AIN1;					// AIN1&lt;br /&gt;
		uint8_t AIN2;					// AIN2&lt;br /&gt;
		uint8_t AIN3;					// AIN3&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AD20;					// ADDA_2: AIN0&lt;br /&gt;
		uint8_t AD21;					// ADDA_2: AIN1&lt;br /&gt;
		uint8_t AD22;					// ADDA_2: AIN2&lt;br /&gt;
		uint8_t AD23;					// ADDA_2: AIN3&lt;br /&gt;
	};&lt;br /&gt;
} addaexp_2_t;&lt;br /&gt;
&lt;br /&gt;
extern addaexp_2_t ad2ins;&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter 3 (IC9: PCF8591):&lt;br /&gt;
#define ADDA_3							3&lt;br /&gt;
typedef union {&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AIN0;					// AIN0&lt;br /&gt;
		uint8_t AIN1;					// AIN1&lt;br /&gt;
		uint8_t AIN2;					// AIN2&lt;br /&gt;
		uint8_t AIN3;					// AIN3&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t AD30;					// ADDA_3: AIN0&lt;br /&gt;
		uint8_t AD31;					// ADDA_3: AIN1&lt;br /&gt;
		uint8_t AD32;					// ADDA_3: AIN2&lt;br /&gt;
		uint8_t AD33;					// ADDA_3: AIN3&lt;br /&gt;
	};&lt;br /&gt;
	struct {&lt;br /&gt;
		uint8_t ARD_A0;					// ARD: A0&lt;br /&gt;
		uint8_t ARD_A1;					// ARD: A1&lt;br /&gt;
		uint8_t ARD_A2;					// ARD: A2&lt;br /&gt;
		uint8_t ARD_A3;					// ARD: A3&lt;br /&gt;
	};&lt;br /&gt;
} addaexp_3_t;&lt;br /&gt;
&lt;br /&gt;
extern addaexp_3_t ad3ins;&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591) general functions:&lt;br /&gt;
#define UCV_AD(__AD__) (uint16_t)(__AD__*500.0f/255.0f)&lt;br /&gt;
&lt;br /&gt;
void task_readArduIO_AD(uint8_t);&lt;br /&gt;
#define task_readArduIO_AD1() {task_readArduIO_AD(1);}&lt;br /&gt;
#define task_readArduIO_AD2() {task_readArduIO_AD(2);}&lt;br /&gt;
#define task_readArduIO_AD3() {task_readArduIO_AD(3);}&lt;br /&gt;
#define task_readAllArduIO_ADs() {task_readArduIO_AD(1); \&lt;br /&gt;
 task_readArduIO_AD(2);task_readArduIO_AD(3);}&lt;br /&gt;
&lt;br /&gt;
#define AOUT_CV(__CV__) (uint8_t)(__CV__*0.51f)&lt;br /&gt;
&lt;br /&gt;
extern uint8_t da1aout;&lt;br /&gt;
extern uint8_t da2aout;&lt;br /&gt;
extern uint8_t da3aout;&lt;br /&gt;
&lt;br /&gt;
void writeArduIO_DA(uint8_t, uint8_t);&lt;br /&gt;
#define writeArduIO_DA1(__AOUT__) {writeArduIO_DA(1,__AOUT__);}&lt;br /&gt;
#define writeArduIO_DA2(__AOUT__) {writeArduIO_DA(2,__AOUT__);}&lt;br /&gt;
#define writeArduIO_DA3(__AOUT__) {writeArduIO_DA(3,__AOUT__);}&lt;br /&gt;
void disableArduIO_DA(uint8_t);&lt;br /&gt;
#define disableArduIO_DA1() {disableArduIO_DA(1);}&lt;br /&gt;
#define disableArduIO_DA2() {disableArduIO_DA(2);}&lt;br /&gt;
#define disableArduIO_DA3() {disableArduIO_DA(3);}&lt;br /&gt;
#define disableAllArduIO_DAs() {disableArduIO_DA(1); \&lt;br /&gt;
 disableArduIO_DA(2);disableArduIO_DA(3);}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// UB Voltage Sensor:&lt;br /&gt;
&lt;br /&gt;
extern uint8_t adcub;&lt;br /&gt;
extern double ubv;&lt;br /&gt;
&lt;br /&gt;
uint8_t getUbSensor(void);&lt;br /&gt;
double calculateUb(void);&lt;br /&gt;
double measureUb(void);&lt;br /&gt;
#define isUbLow() (RP6ArduIOstatus_LIB.byte &amp;amp; 1)&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// LEDs:&lt;br /&gt;
&lt;br /&gt;
// --------------------------------------------------------------&lt;br /&gt;
// Duty cycle constants:&lt;br /&gt;
#define DUTY_0							0		// 0%&lt;br /&gt;
#define DUTY_10							409		// 10%&lt;br /&gt;
#define DUTY_25							1023	// 25%&lt;br /&gt;
#define DUTY_50							2047	// 50%&lt;br /&gt;
#define DUTY_75							3071	// 75%&lt;br /&gt;
#define DUTY_90							3685	// 90%&lt;br /&gt;
#define DUTY_100						4095	// 100%&lt;br /&gt;
// Relative duty cycle [__PCT__ = 0..100%] macro:&lt;br /&gt;
#define DUTY_PCT(__PCT__) (uint16_t)((uint32_t)__PCT__*4095/100)&lt;br /&gt;
// --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
void setArduIOLEDs(uint8_t);&lt;br /&gt;
&lt;br /&gt;
void dimArduIOLED(uint8_t, uint16_t);&lt;br /&gt;
#define dimArduIOLED1(__DUTY__) {dimArduIOLED(1,__DUTY__);}&lt;br /&gt;
#define dimArduIOLED2(__DUTY__) {dimArduIOLED(2,__DUTY__);}&lt;br /&gt;
#define dimArduIOLED3(__DUTY__) {dimArduIOLED(3,__DUTY__);}&lt;br /&gt;
#define dimArduIOLED4(__DUTY__) {dimArduIOLED(4,__DUTY__);}&lt;br /&gt;
void setArduIOLED1(uint8_t);&lt;br /&gt;
void setArduIOLED2(uint8_t);&lt;br /&gt;
void setArduIOLED3(uint8_t);&lt;br /&gt;
void setArduIOLED4(uint8_t);&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// PWM Ports:&lt;br /&gt;
&lt;br /&gt;
void setArduIOPWMs(uint8_t);&lt;br /&gt;
&lt;br /&gt;
void dimArduIOPWM(uint8_t, uint16_t);&lt;br /&gt;
#define dimArduIOPWM1(__DUTY__) {dimArduIOPWM(1,__DUTY__);}&lt;br /&gt;
#define dimArduIOPWM2(__DUTY__) {dimArduIOPWM(2,__DUTY__);}&lt;br /&gt;
#define dimArduIOPWM3(__DUTY__) {dimArduIOPWM(3,__DUTY__);}&lt;br /&gt;
#define dimArduIOPWM4(__DUTY__) {dimArduIOPWM(4,__DUTY__);}&lt;br /&gt;
void setArduIOPWM1(uint8_t);&lt;br /&gt;
void setArduIOPWM2(uint8_t);&lt;br /&gt;
void setArduIOPWM3(uint8_t);&lt;br /&gt;
void setArduIOPWM4(uint8_t);&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
&lt;br /&gt;
// Power PWM Ports:&lt;br /&gt;
void setArduIOPowerPWMMode(void);&lt;br /&gt;
void setArduIOPowerPWMs(uint8_t);&lt;br /&gt;
&lt;br /&gt;
void dimArduIOPowerPWM(uint8_t, uint16_t);&lt;br /&gt;
#define dimArduIOPowerPWM1(__DUTY__) {dimArduIOPowerPWM(1,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM2(__DUTY__) {dimArduIOPowerPWM(2,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM3(__DUTY__) {dimArduIOPowerPWM(3,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM4(__DUTY__) {dimArduIOPowerPWM(4,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM5(__DUTY__) {dimArduIOPowerPWM(5,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM6(__DUTY__) {dimArduIOPowerPWM(6,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM7(__DUTY__) {dimArduIOPowerPWM(7,__DUTY__);}&lt;br /&gt;
#define dimArduIOPowerPWM8(__DUTY__) {dimArduIOPowerPWM(8,__DUTY__);}&lt;br /&gt;
void setArduIOPowerPWM1(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM2(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM3(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM4(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM5(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM6(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM7(uint8_t);&lt;br /&gt;
void setArduIOPowerPWM8(uint8_t);&lt;br /&gt;
&lt;br /&gt;
// H-Bridges:&lt;br /&gt;
&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// Direction/command:&lt;br /&gt;
#ifndef FWD&lt;br /&gt;
#define FWD								0		// Forwards&lt;br /&gt;
#define BWD								1		// Backwards&lt;br /&gt;
#endif&lt;br /&gt;
#define BRK								4		// Speed break&lt;br /&gt;
#define OFF								5		// Power OFF&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
void adjustArduIOPowerHB(uint8_t hb, uint8_t dir, uint16_t duty);&lt;br /&gt;
#define powerHB1(__DIR__,__DUTY__) {adjustArduIOPowerHB(1,__DIR__,__DUTY__);}&lt;br /&gt;
#define powerHB1STOP() {adjustArduIOPowerHB(1,FWD,DUTY_0);}&lt;br /&gt;
#define powerHB1FWD(__DUTY__) {adjustArduIOPowerHB(1,FWD,__DUTY__);}&lt;br /&gt;
#define powerHB1BWD(__DUTY__) {adjustArduIOPowerHB(1,BWD,__DUTY__);}&lt;br /&gt;
#define powerHB1BRK() {adjustArduIOPowerHB(1,BRK,0);}&lt;br /&gt;
#define powerHB1OFF() {adjustArduIOPowerHB(1,OFF,0);}&lt;br /&gt;
#define powerHB2(__DIR__,__DUTY__) {adjustArduIOPowerHB(2,__DIR__,__DUTY__);}&lt;br /&gt;
#define powerHB2STOP() {adjustArduIOPowerHB(2,FWD,DUTY_0);}&lt;br /&gt;
#define powerHB2FWD(__DUTY__) {adjustArduIOPowerHB(2,FWD,__DUTY__);}&lt;br /&gt;
#define powerHB2BWD(__DUTY__) {adjustArduIOPowerHB(2,BWD,__DUTY__);}&lt;br /&gt;
#define powerHB2BRK() {adjustArduIOPowerHB(2,BRK,0);}&lt;br /&gt;
#define powerHB2OFF() {adjustArduIOPowerHB(2,OFF,0);}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO Board system control routine:&lt;br /&gt;
&lt;br /&gt;
void task_RP6_ArduIOSystem(void);&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO Board initialisation and shutdown:&lt;br /&gt;
&lt;br /&gt;
void arduio_init(void);&lt;br /&gt;
void arduio_shutdown(void);&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                      Arduino Uno Expander functions                       */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void updateArduino_Uno_Exp_IO(void);&lt;br /&gt;
void setArduino_Uno_Exp_IO(uint16_t);&lt;br /&gt;
#define task_readArduino_Uno_Exp_IO() {task_readArduIO_IO(2);}&lt;br /&gt;
#define task_readArduino_Uno_Exp_AD() {task_readArduIO_AD(3);}&lt;br /&gt;
#define dimArduino_Uno_Exp_PWM(__PWM__,__DUTY__) \&lt;br /&gt;
 {dimArduIOPWM(__PWM__,(4095-__DUTY__));}&lt;br /&gt;
#define dimArduino_Uno_Exp_PWM1(__DUTY__) \&lt;br /&gt;
 {dimArduIOPWM(1,(4095-__DUTY__));}&lt;br /&gt;
#define dimArduino_Uno_Exp_PWM2(__DUTY__) \&lt;br /&gt;
 {dimArduIOPWM(2,(4095-__DUTY__));}&lt;br /&gt;
#define dimArduino_Uno_Exp_PWM3(__DUTY__) \&lt;br /&gt;
 {dimArduIOPWM(3,(4095-__DUTY__));}&lt;br /&gt;
// ArduIO Board Arduino Uno Expander control routine:&lt;br /&gt;
void task_Arduino_Uno_Exp(void);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                    Arduino Uno Expander functions end                     */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Additional info&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Changelog:&lt;br /&gt;
 * &lt;br /&gt;
 *  ---&amp;gt; changes are documented in the file &amp;quot;RP6_ArduIOLib.c&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Library Source=====&lt;br /&gt;
Diese Datei enthält den &amp;quot;Sourcecode&amp;quot; der neuen ArduIO Library. Sie gehört in den Ordner '''/.../RP6Lib/RP6common/'''.&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIOLib.c:&lt;br /&gt;
&amp;lt;pre&amp;gt;/* ****************************************************************************&lt;br /&gt;
 *                           _______________________&lt;br /&gt;
 *                           \| RP6  ROBOT SYSTEM |/&lt;br /&gt;
 *                            \_-_-_-_-_-_-_-_-_-_/                  &amp;gt;&amp;gt;&amp;gt; COMMON&lt;br /&gt;
 * ----------------------------------------------------------------------------&lt;br /&gt;
 * ----------------------------- [c]2014 - Dirk -------------------------------&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * File: RP6_ArduIOLib.c&lt;br /&gt;
 * Version: 1.1&lt;br /&gt;
 * Target: RP6 Base &amp;amp; Processor Expansion - ATMEGA32 @8.00 or 16.00MHz&lt;br /&gt;
 *         &amp;amp; RP6 M256 WiFi                - ATMEGA2560 @16.00MHz&lt;br /&gt;
 *         with the RP6_ArduIO Board.&lt;br /&gt;
 * Author(s): Dirk&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Description:&lt;br /&gt;
 * &lt;br /&gt;
 * This is our new Library that contains basic routines and functions for&lt;br /&gt;
 * accessing the hardwired components of the ArduIO Board.&lt;br /&gt;
 *&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * THE CHANGELOG CAN BE FOUND AT THE END OF THIS FILE!&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO hardwired components:&lt;br /&gt;
// - I2C PWM Controller (IC3: PCA9685)&lt;br /&gt;
// - I2C I/O Expander 1 5V (IC8: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 2 5V (IC13: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 3 3V3 (IC12: PCA9535)&lt;br /&gt;
// - I2C A/D and D/A Converter 1 (IC11: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 2 (IC10: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 3 (IC9: PCF8591)&lt;br /&gt;
// - UB Voltage Sensor&lt;br /&gt;
// - LEDs&lt;br /&gt;
// - PWM Ports&lt;br /&gt;
// - Power PWM Ports &amp;amp; H-Bridges&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Includes:&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6_ArduIOLib.h&amp;quot; 		&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Variables:&lt;br /&gt;
&lt;br /&gt;
uint8_t registerBuf[5]; &lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO Status:&lt;br /&gt;
&lt;br /&gt;
RP6ArduIOstatus_t RP6ArduIOstatus;		// ArduIO status bits (public)&lt;br /&gt;
RP6ArduIOstatus_t RP6ArduIOstatus_LIB;	// ArduIO status bits (lib internal)&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Enable access to a H-Bridge [1 or 2].&lt;br /&gt;
 *&lt;br /&gt;
 * HB1: Power PWM group 1 (power PWM numbers 1..4)&lt;br /&gt;
 * HB2: Power PWM group 2 (power PWM numbers 5..8)&lt;br /&gt;
 *&lt;br /&gt;
 * Input: hb -&amp;gt; H-Bridge (HB) number [1 or 2]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro enableHBx(),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = H-Bridge number = [1 or 2].&lt;br /&gt;
 * There is a macro isHBxEnable(), that may be&lt;br /&gt;
 * used to read the HBx access status.&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - If you ENABLE access to a H-Bridge,&lt;br /&gt;
 *          access to the corresponding power&lt;br /&gt;
 *          PWM group will be DISABLED!&lt;br /&gt;
 *        - In order to use H-Bridge 1, you have&lt;br /&gt;
 *          to connect pins 3-4 and 5-6 of the&lt;br /&gt;
 *          SV_H-BRIDGES plug on the ArduIO&lt;br /&gt;
 *          Board!&lt;br /&gt;
 *        - Motor 1 connection schematic:&lt;br /&gt;
 *           Pins      Motor 1      pins&lt;br /&gt;
 *           ---------------------------&lt;br /&gt;
 *            3-4  -&amp;gt;  +     -  &amp;lt;-  5-6&lt;br /&gt;
 *        - In order to use H-Bridge 2, you have&lt;br /&gt;
 *          to connect pins 7-8 and 9-10 of the&lt;br /&gt;
 *          SV_H-BRIDGES plug on the ArduIO&lt;br /&gt;
 *          Board!&lt;br /&gt;
 *        - Motor 2 connection schematic:&lt;br /&gt;
 *           Pins      Motor 2      pins&lt;br /&gt;
 *           ---------------------------&lt;br /&gt;
 *            7-8  -&amp;gt;  +     -  &amp;lt;-  9-10&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   enableHB1();   // Or enableHB(1);&lt;br /&gt;
 *   // this enables access to H-Bridge 1!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void enableHB(uint8_t hb)&lt;br /&gt;
{&lt;br /&gt;
	if (hb == 1) {&lt;br /&gt;
		RP6ArduIOstatus_LIB.ppwm_g1Enable = false;&lt;br /&gt;
		RP6ArduIOstatus_LIB.hb1Enable = true;&lt;br /&gt;
	}&lt;br /&gt;
	if (hb == 2) {&lt;br /&gt;
		RP6ArduIOstatus_LIB.ppwm_g2Enable = false;&lt;br /&gt;
		RP6ArduIOstatus_LIB.hb2Enable = true;&lt;br /&gt;
	}&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Disable access to a H-Bridge [1 or 2]&lt;br /&gt;
 * (default).&lt;br /&gt;
 *&lt;br /&gt;
 * Input: hb -&amp;gt; H-Bridge (HB) number [1 or 2]&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   disableHB2();   // Or disableHB(2);&lt;br /&gt;
 *   // this disables access to H-Bridge 2!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void disableHB(uint8_t hb)&lt;br /&gt;
{&lt;br /&gt;
	if (hb == 1) RP6ArduIOstatus_LIB.hb1Enable = false;&lt;br /&gt;
	if (hb == 2) RP6ArduIOstatus_LIB.hb2Enable = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Enable access to a power PWM group [1 or 2]&lt;br /&gt;
 * (default).&lt;br /&gt;
 *&lt;br /&gt;
 * Power PWM group 1: HB1 (power PWM numbers 1..4)&lt;br /&gt;
 * Power PWM group 2: HB2 (power PWM numbers 5..8)&lt;br /&gt;
 *&lt;br /&gt;
 * Input: ppwm_g -&amp;gt; Power PWM group [1 or 2]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro enablePPWM_Gx(),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = Power PWM group = [1 or 2].&lt;br /&gt;
 * There is a macro isPPWM_GxEnable(), that may&lt;br /&gt;
 * be used to read the power PWM group x access&lt;br /&gt;
 * status.&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - If you ENABLE access to a power PWM&lt;br /&gt;
 *          group, access to the corresponding&lt;br /&gt;
 *          H-Bridge will be DISABLED!&lt;br /&gt;
 *        - ! IF  YOU  WANT  TO  USE  POWER  PWM !&lt;br /&gt;
 *          ! NUMBERS  1..4  (POWER PWM GROUP 1) !&lt;br /&gt;
 *          ! AS 4 SINGLE POWER PWM OUTPUTS, YOU !&lt;br /&gt;
 *          ! HAVE TO ENSURE,  THAT PINS 3-4 AND !&lt;br /&gt;
 *          ! 5-6  OF SV_H-BRIDGES PLUG ARE  NOT !&lt;br /&gt;
 *          ! CONNECTED!!!  YOU MAY  DAMAGE  THE !&lt;br /&gt;
 *          ! ARDUIO  BOARD,  IF THESE PINS  ARE !&lt;br /&gt;
 *          ! CONNECTED!!!                       !&lt;br /&gt;
 *        - ! IF  YOU  WANT  TO  USE  POWER  PWM !&lt;br /&gt;
 *          ! NUMBERS  5..8  (POWER PWM GROUP 2) !&lt;br /&gt;
 *          ! AS 4 SINGLE POWER PWM OUTPUTS, YOU !&lt;br /&gt;
 *          ! HAVE TO ENSURE,  THAT PINS 7-8 AND !&lt;br /&gt;
 *          ! 9-10 OF SV_H-BRIDGES PLUG ARE  NOT !&lt;br /&gt;
 *          ! CONNECTED!!!  YOU MAY  DAMAGE  THE !&lt;br /&gt;
 *          ! ARDUIO  BOARD,  IF THESE PINS  ARE !&lt;br /&gt;
 *          ! CONNECTED!!!                       !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   enablePPWM_G1();   // Or enablePPWM_G(1);&lt;br /&gt;
 *   // this enables access to power PWM group 1&lt;br /&gt;
 *   // (power PWM numbers 1..4)!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void enablePPWM_G(uint8_t ppwm_g)&lt;br /&gt;
{&lt;br /&gt;
	if (ppwm_g == 1) {&lt;br /&gt;
		RP6ArduIOstatus_LIB.hb1Enable = false;&lt;br /&gt;
		RP6ArduIOstatus_LIB.ppwm_g1Enable = true;&lt;br /&gt;
	}&lt;br /&gt;
	if (ppwm_g == 2) {&lt;br /&gt;
		RP6ArduIOstatus_LIB.hb2Enable = false;&lt;br /&gt;
		RP6ArduIOstatus_LIB.ppwm_g2Enable = true;&lt;br /&gt;
	}&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Disable access to a power PWM group [1 or 2].&lt;br /&gt;
 *&lt;br /&gt;
 * Input: ppwm_g -&amp;gt; Power PWM group [1 or 2]&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   disablePPWM_G2();   // Or disablePPWM_G(2);&lt;br /&gt;
 *   // this disables access to power PWM group 2&lt;br /&gt;
 *   // (power PWM numbers 5..8)!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void disablePPWM_G(uint8_t ppwm_g)&lt;br /&gt;
{&lt;br /&gt;
	if (ppwm_g == 1) RP6ArduIOstatus_LIB.ppwm_g1Enable = false;&lt;br /&gt;
	if (ppwm_g == 2) RP6ArduIOstatus_LIB.ppwm_g2Enable = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Enable access to the 4 free PWMs (default).&lt;br /&gt;
 * There is a macro isPWMsEnable(), that may be&lt;br /&gt;
 * used to read the PWMs access status.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void enablePWMs(void)&lt;br /&gt;
{&lt;br /&gt;
	RP6ArduIOstatus_LIB.pwmsEnable = true;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Disable access to the 4 free PWMs.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void disablePWMs(void)&lt;br /&gt;
{&lt;br /&gt;
	RP6ArduIOstatus_LIB.pwmsEnable = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Enable access to all IO_1..3 IO ports to be&lt;br /&gt;
 * used as outputs (Outs) (default).&lt;br /&gt;
 * There is a macro isOutsEnable(), that may be&lt;br /&gt;
 * used to read the Outs access status.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void enableOuts(void)&lt;br /&gt;
{&lt;br /&gt;
	RP6ArduIOstatus_LIB.outsEnable = true;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Disable access to all IO_1..3 IO ports to be&lt;br /&gt;
 * used as outputs (Outs).&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: The IO_1..3 IO ports can ALWAYS be used&lt;br /&gt;
 *       as inputs (Ins)!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void disableOuts(void)&lt;br /&gt;
{&lt;br /&gt;
	RP6ArduIOstatus_LIB.outsEnable = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Enable access to all ADDA_1..3 DACs (default).&lt;br /&gt;
 * There is a macro isDAsEnable(), that may be&lt;br /&gt;
 * used to read the DACs access status.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void enableDAs(void)&lt;br /&gt;
{&lt;br /&gt;
	RP6ArduIOstatus_LIB.dasEnable = true;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Disable access to all ADDA_1..3 DACs.&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: The 3 DAC outputs (AOUT) are NOT&lt;br /&gt;
 *       disabled by this function! Pls. use&lt;br /&gt;
 *       function disableAllArduIO_DAs() for&lt;br /&gt;
 *       this!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void disableDAs(void)&lt;br /&gt;
{&lt;br /&gt;
	RP6ArduIOstatus_LIB.dasEnable = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C PWM Controller (PCA9685):&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Call this once before using the PWM function.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: PWM frequency [40..1000 Hz]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro initPWM(freq), which&lt;br /&gt;
 * does exactly the same as this function.&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   initPWM(1000);   // Or PCA9685_ARD_init(1000);&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void PCA9685_ARD_init(uint16_t freq)&lt;br /&gt;
{&lt;br /&gt;
	if ((freq &amp;lt; 40) || (freq &amp;gt; 1000)) freq = 1000;&lt;br /&gt;
	I2CTWI_transmitByte(I2C_ARDUIO_PWM_ADR, PCA9685_MODE2);&lt;br /&gt;
	uint8_t last_mode = I2CTWI_readByte(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
	last_mode |= PCA9685_MODE2_INVRT;			// Set INVRT bit&lt;br /&gt;
	last_mode &amp;amp;= ~PCA9685_MODE2_OUTDRV;			// Clear OUTDRV bit&lt;br /&gt;
	I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_MODE2, last_mode);&lt;br /&gt;
	I2CTWI_transmitByte(I2C_ARDUIO_PWM_ADR, PCA9685_MODE1);&lt;br /&gt;
	last_mode = I2CTWI_readByte(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
	last_mode |= PCA9685_MODE1_AI;				// Set AI bit&lt;br /&gt;
	uint8_t mode1 = last_mode;&lt;br /&gt;
	mode1 |= PCA9685_MODE1_SLEEP;				// Set SLEEP bit&lt;br /&gt;
	I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_MODE1, mode1);&lt;br /&gt;
	uint8_t prescale = (uint8_t) (F_PCA9685 / 4096 / freq - 0.5);&lt;br /&gt;
	I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_PRE_SCALE, prescale);&lt;br /&gt;
	last_mode &amp;amp;= ~PCA9685_MODE1_SLEEP;			// Clear SLEEP bit&lt;br /&gt;
	I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_MODE1, last_mode);&lt;br /&gt;
	mSleep(1);&lt;br /&gt;
	last_mode |= PCA9685_MODE1_RESTART;			// Clear RESTART bit&lt;br /&gt;
	I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_MODE1, last_mode);&lt;br /&gt;
	return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This is the PWM duty set function.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: channel -&amp;gt; Channel number [1..16]&lt;br /&gt;
 *                   0 = ALL 16 channels&lt;br /&gt;
 *        duty    -&amp;gt; Duty cycle [0..4095]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro setPWM(channel, duty),&lt;br /&gt;
 * which does exactly the same as this function.&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   setPWM(2,300);   // Or PCA9685_ARD_set(2,300);&lt;br /&gt;
 *   // this sets channel 2 with a duty cycle&lt;br /&gt;
 *   // value of 300 (about 7.33%).&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void PCA9685_ARD_set(uint8_t channel, uint16_t duty)&lt;br /&gt;
{&lt;br /&gt;
	if (channel &amp;gt; 16) return;&lt;br /&gt;
	if (duty &amp;gt; 4095) duty = 4095;&lt;br /&gt;
	uint8_t reg = channel * 4 + 4;				// Register LEDx_OFF_L&lt;br /&gt;
	if (!channel) reg = PCA9685_ALL_LED_OFF_L;	// Register ALL_LED_OFF_L&lt;br /&gt;
	I2CTWI_transmit3Bytes(I2C_ARDUIO_PWM_ADR, reg, (duty &amp;amp; 0x00ff), (duty &amp;gt;&amp;gt; 8));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C I/O Expander (PCA9535):&lt;br /&gt;
&lt;br /&gt;
ioexp_1_t io1config;&lt;br /&gt;
ioexp_2_t io2config;&lt;br /&gt;
ioexp_3_t io3config;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Configurate the portpins of an IO_x port as&lt;br /&gt;
 * input or output. This port configuration is&lt;br /&gt;
 * stored in the global ioxconfig variable, where&lt;br /&gt;
 * x = IO-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Input: io    -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 *        inout -&amp;gt; Config value (16 bit):&lt;br /&gt;
 *                  Bit 0 = output&lt;br /&gt;
 *                  Bit 1 = input&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro configArduIO_IOx(inout),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = IO-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   configArduIO_IO(IO_1,0b0000000000101001);&lt;br /&gt;
 *   // this configures the IO_1 portpins P00,&lt;br /&gt;
 *   // P03 and P05 as INPUTs and all other&lt;br /&gt;
 *   // portpins as OUTPUTs!&lt;br /&gt;
 *   configArduIO_IO1(0b0000000000101001);&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void configArduIO_IO(uint8_t io, uint16_t inout)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.outsEnable || (inout == 0xffff)) {&lt;br /&gt;
		switch (io) {							// IO-Expander number:&lt;br /&gt;
			case IO_1 :							//  IO_1&lt;br /&gt;
				I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_1_ADR, PCA9535_CONFIG_P0, (inout &amp;amp; 0x00ff), (inout &amp;gt;&amp;gt; 8));&lt;br /&gt;
				io1config.word = inout;&lt;br /&gt;
				break;&lt;br /&gt;
			case IO_2 :							//  IO_2&lt;br /&gt;
				I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_2_ADR, PCA9535_CONFIG_P0, (inout &amp;amp; 0x00ff), (inout &amp;gt;&amp;gt; 8));&lt;br /&gt;
				io2config.word = inout;&lt;br /&gt;
				break;&lt;br /&gt;
			case IO_3 :							//  IO_3&lt;br /&gt;
				I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_3_ADR, PCA9535_CONFIG_P0, (inout &amp;amp; 0x00ff), (inout &amp;gt;&amp;gt; 8));&lt;br /&gt;
				io3config.word = inout;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -----------------------&lt;br /&gt;
&lt;br /&gt;
ioexp_1_t io1outs;&lt;br /&gt;
ioexp_2_t io2outs;&lt;br /&gt;
ioexp_3_t io3outs;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Update an IO_x port with current value from&lt;br /&gt;
 * the global ioxouts variable, where x = IO-&lt;br /&gt;
 * Expander number = [1..3].&lt;br /&gt;
 * The 16 IO_x portpins will be SET (high, ON)&lt;br /&gt;
 * or CLEARED (low, OFF).&lt;br /&gt;
 *&lt;br /&gt;
 * Input: io  -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro updateArduIO_IOx(),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = IO-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 *&lt;br /&gt;
 * Examples:&lt;br /&gt;
 *   io1outs.word = 0b0000000000101001;&lt;br /&gt;
 *   updateArduIO_IO1();&lt;br /&gt;
 *   // this CLEARs the port and SETs the&lt;br /&gt;
 *   // IO_1 portpins P00, P03 and P05!&lt;br /&gt;
 *&lt;br /&gt;
 *   // Other possibility:&lt;br /&gt;
 *   io3outs.GP316 = true;   // Or io3outs.P16 = true;&lt;br /&gt;
 *   updateArduIO_IO(IO_3);&lt;br /&gt;
 *   // this SETs the IO_3 portpin P16 and&lt;br /&gt;
 *   // does not affect any other portpin!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void updateArduIO_IO(uint8_t io)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.outsEnable) {&lt;br /&gt;
		switch (io) {							// IO-Expander number:&lt;br /&gt;
			case IO_1 :							//  IO_1&lt;br /&gt;
				I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_1_ADR, PCA9535_OUTPUT_P0, (io1outs.word &amp;amp; 0x00ff), (io1outs.word &amp;gt;&amp;gt; 8));&lt;br /&gt;
				break;&lt;br /&gt;
			case IO_2 :							//  IO_2&lt;br /&gt;
				I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_2_ADR, PCA9535_OUTPUT_P0, (io2outs.word &amp;amp; 0x00ff), (io2outs.word &amp;gt;&amp;gt; 8));&lt;br /&gt;
				break;&lt;br /&gt;
			case IO_3 :							//  IO_3&lt;br /&gt;
				I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_3_ADR, PCA9535_OUTPUT_P0, (io3outs.word &amp;amp; 0x00ff), (io3outs.word &amp;gt;&amp;gt; 8));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function SETs (high, ON) or CLEARs&lt;br /&gt;
 * (low, OFF) the 16 IO_x portpins, where&lt;br /&gt;
 * x = IO-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Input: io  -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 *        out -&amp;gt; Output value (16 bit)&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro setArduIO_IOx(out),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = IO-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   setArduIO_IO(IO_1,0b0000000000101001);&lt;br /&gt;
 *   // this CLEARs the port and SETs the&lt;br /&gt;
 *   // IO_1 portpins P00, P03 and P05!&lt;br /&gt;
 *   setArduIO_IO1(0b0000000000101001);&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIO_IO(uint8_t io, uint16_t out)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.outsEnable) {&lt;br /&gt;
		switch (io) {							// IO-Expander number:&lt;br /&gt;
			case IO_1 :							//  IO_1&lt;br /&gt;
				io1outs.word = out;&lt;br /&gt;
				updateArduIO_IO(IO_1);&lt;br /&gt;
				break;&lt;br /&gt;
			case IO_2 :							//  IO_2&lt;br /&gt;
				io2outs.word = out;&lt;br /&gt;
				updateArduIO_IO(IO_2);&lt;br /&gt;
				break;&lt;br /&gt;
			case IO_3 :							//  IO_3&lt;br /&gt;
				io3outs.word = out;&lt;br /&gt;
				updateArduIO_IO(IO_3);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -----------------------&lt;br /&gt;
&lt;br /&gt;
ioexp_1_t io1invrt;&lt;br /&gt;
ioexp_2_t io2invrt;&lt;br /&gt;
ioexp_3_t io3invrt;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Invert the input values of the portpins of an&lt;br /&gt;
 * IO_x port. This port setting is stored in the&lt;br /&gt;
 * global ioxinvrt variable, where x = IO-&lt;br /&gt;
 * Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Input: io    -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 *        invrt -&amp;gt; Setting value (16 bit):&lt;br /&gt;
 *                  Bit 0 = retain&lt;br /&gt;
 *                  Bit 1 = invert&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro invertArduIO_IOx(invrt),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = IO-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   invertArduIO_IO(IO_1,0b0000000000101001);&lt;br /&gt;
 *   // this inverts the input values of the IO_1&lt;br /&gt;
 *   // portpins P00, P03 and P05 and retains the&lt;br /&gt;
 *   // input values of all other portpins!&lt;br /&gt;
 *   invertArduIO_IO1(0b0000000000101001);&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void invertArduIO_IO(uint8_t io, uint16_t invrt)&lt;br /&gt;
{&lt;br /&gt;
	switch (io) {								// IO-Expander number:&lt;br /&gt;
		case IO_1 :								//  IO_1&lt;br /&gt;
			I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_1_ADR, PCA9535_POL_INV_P0, (invrt &amp;amp; 0x00ff), (invrt &amp;gt;&amp;gt; 8));&lt;br /&gt;
			io1invrt.word = invrt;&lt;br /&gt;
			break;&lt;br /&gt;
		case IO_2 :								//  IO_2&lt;br /&gt;
			I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_2_ADR, PCA9535_POL_INV_P0, (invrt &amp;amp; 0x00ff), (invrt &amp;gt;&amp;gt; 8));&lt;br /&gt;
			io2invrt.word = invrt;&lt;br /&gt;
			break;&lt;br /&gt;
		case IO_3 :								//  IO_3&lt;br /&gt;
			I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_3_ADR, PCA9535_POL_INV_P0, (invrt &amp;amp; 0x00ff), (invrt &amp;gt;&amp;gt; 8));&lt;br /&gt;
			io3invrt.word = invrt;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -----------------------&lt;br /&gt;
&lt;br /&gt;
ioexp_1_t io1ins;&lt;br /&gt;
ioexp_2_t io2ins;&lt;br /&gt;
ioexp_3_t io3ins;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function checks an IO_x port with it's&lt;br /&gt;
 * 16 pins (P00..P17), where x = IO-Expander&lt;br /&gt;
 * number = [1..3]!&lt;br /&gt;
 * You may call this function (task) frequently&lt;br /&gt;
 * out of the main loop.&lt;br /&gt;
 * The input values (true/false, high/low) of the&lt;br /&gt;
 * portpins are read into the global ioxins&lt;br /&gt;
 * variable.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: io  -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro task_readArduIO_IOx(),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = IO-Expander number = [1..3].&lt;br /&gt;
 * The macro task_readAllArduIO_IOs() reads the&lt;br /&gt;
 * portpins (P00..P17) of ALL 3 IO-Expanders.&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: The portpin input values can be&lt;br /&gt;
 *       inverted with the function&lt;br /&gt;
 *       invertArduIO_IO(io,invrt)!&lt;br /&gt;
 *&lt;br /&gt;
 * Examples:&lt;br /&gt;
 *   task_readArduIO_IO(IO_1);&lt;br /&gt;
 *   if (io1ins.GP101) writeString_P(&amp;quot;IO_1:P01 = High&amp;quot;);&lt;br /&gt;
 *   else writeString_P(&amp;quot;IO_1:P01 = Low&amp;quot;);&lt;br /&gt;
 *   task_readArduIO_IO2();&lt;br /&gt;
 *   if (!io2ins.GP214) writeString_P(&amp;quot;IO_2:P14 = Low&amp;quot;);&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void task_readArduIO_IO(uint8_t io)&lt;br /&gt;
{&lt;br /&gt;
	switch (io) {								// IO-Expander number:&lt;br /&gt;
		case IO_1 :								//  IO_1&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_IO_1_ADR, PCA9535_INPUT_P0);&lt;br /&gt;
			I2CTWI_readBytes(I2C_ARDUIO_IO_1_ADR, registerBuf, 2);&lt;br /&gt;
			io1ins.word = registerBuf[0];&lt;br /&gt;
			io1ins.word |= (registerBuf[1] &amp;lt;&amp;lt; 8);&lt;br /&gt;
			break;&lt;br /&gt;
		case IO_2 :								//  IO_2&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_IO_2_ADR, PCA9535_INPUT_P0);&lt;br /&gt;
			I2CTWI_readBytes(I2C_ARDUIO_IO_2_ADR, registerBuf, 2);&lt;br /&gt;
			io2ins.word = registerBuf[0];&lt;br /&gt;
			io2ins.word |= (registerBuf[1] &amp;lt;&amp;lt; 8);&lt;br /&gt;
			break;&lt;br /&gt;
		case IO_3 :								//  IO_3&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_IO_3_ADR, PCA9535_INPUT_P0);&lt;br /&gt;
			I2CTWI_readBytes(I2C_ARDUIO_IO_3_ADR, registerBuf, 2);&lt;br /&gt;
			io3ins.word = registerBuf[0];&lt;br /&gt;
			io3ins.word |= (registerBuf[1] &amp;lt;&amp;lt; 8);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -----------------------&lt;br /&gt;
&lt;br /&gt;
interrupt_RP6ArduIOstatus_t interrupt_RP6ArduIOstatus, newstatus;&lt;br /&gt;
uint8_t interrupt_rp6arduiostatus_changed;&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * This function checks all interrupt pins on&lt;br /&gt;
 * the XBUS (INT1..3, INTU).&lt;br /&gt;
 * This function (task) must be called VERY&lt;br /&gt;
 * frequently out of the main loop.&lt;br /&gt;
 * Bigger delays result in slower reaction to&lt;br /&gt;
 * interrupt requests of the RP6 ArduIO Board.&lt;br /&gt;
 * Interrupt function table:&lt;br /&gt;
 *   Int. : Function        IRQ&lt;br /&gt;
 *   ---------------------------&lt;br /&gt;
 *   INT1 : PCA9535 (2) INT  L&lt;br /&gt;
 *   INT2 : PCA9535 (1) INT  L&lt;br /&gt;
 *   INT3 : PCA9535 (3) INT  L&lt;br /&gt;
 *   INTU : not used&lt;br /&gt;
 * You can see in the &amp;quot;IRQ&amp;quot; column, which level&lt;br /&gt;
 * (H/L) means an ACTIVE INTERRUPT signal.&lt;br /&gt;
 * The interrupt pin levels (H=true/L=false) are&lt;br /&gt;
 * read into the global interrupt_RP6ArduIOstatus&lt;br /&gt;
 * variable.&lt;br /&gt;
 * The variable interrupt_rp6arduiostatus_changed&lt;br /&gt;
 * will be TRUE, if the RP6ArduIO interrupt status&lt;br /&gt;
 * has changed since the last call of this task,&lt;br /&gt;
 * else it will be FALSE.&lt;br /&gt;
 * There is also a macro int_status_changed(),&lt;br /&gt;
 * that may be used instead of the variable&lt;br /&gt;
 * interrupt_rp6arduiostatus_changed.&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - This function checks the interrupt&lt;br /&gt;
 *          signals by polling. This is NOT the&lt;br /&gt;
 *          best way to to this job. You will&lt;br /&gt;
 *          have to write your own task, if you&lt;br /&gt;
 *          want to use the interrupt function of&lt;br /&gt;
 *          the ATmega32/2560 microcontroller.&lt;br /&gt;
 *        - Every interrupt signal of the ArduIO&lt;br /&gt;
 *          Board may be cut off from the XBUS&lt;br /&gt;
 *          by opening a jumper (JP_INT3V3):&lt;br /&gt;
 *          INT1 -&amp;gt; Pins 1-2 (PCA9535 (2) INT)&lt;br /&gt;
 *          INT2 -&amp;gt; Pins 5-6 (PCA9535 (1) INT)&lt;br /&gt;
 *          INT3 -&amp;gt; Pins 3-4 (PCA9535 (3) INT)&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   task_checkArduIO_INTs();&lt;br /&gt;
 *   if (interrupt_rp6arduiostatus_changed)&lt;br /&gt;
 *        writeString_P(&amp;quot;RP6ArduIO INT state changed!!!\n&amp;quot;);&lt;br /&gt;
 *   if (!interrupt_RP6ArduIOstatus.ioexp_1)&lt;br /&gt;
 *        writeString_P(&amp;quot;==&amp;gt; PCA9535 (1) INT (XBUS INT2)!!!\n&amp;quot;);&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void task_checkArduIO_INTs(void)&lt;br /&gt;
{&lt;br /&gt;
	if(IO_ARDUIO_INT1_PIN &amp;amp; IO_ARDUIO_INT1_IN)	// XBUS INT1&lt;br /&gt;
		newstatus.int1 = true;&lt;br /&gt;
	else&lt;br /&gt;
		newstatus.int1 = false;&lt;br /&gt;
#ifdef IO_ARDUIO_INT2_IN&lt;br /&gt;
	if(IO_ARDUIO_INT2_PIN &amp;amp; IO_ARDUIO_INT2_IN)	// XBUS INT2&lt;br /&gt;
		newstatus.int2 = true;&lt;br /&gt;
	else&lt;br /&gt;
		newstatus.int2 = false;&lt;br /&gt;
#endif&lt;br /&gt;
#ifdef IO_ARDUIO_INT3_IN&lt;br /&gt;
	if(IO_ARDUIO_INT3_PIN &amp;amp; IO_ARDUIO_INT3_IN)	// XBUS INT3&lt;br /&gt;
		newstatus.int3 = true;&lt;br /&gt;
	else&lt;br /&gt;
		newstatus.int3 = false;&lt;br /&gt;
#endif&lt;br /&gt;
//#ifdef IO_ARDUIO_INTU_IN&lt;br /&gt;
//	if(IO_ARDUIO_INTU_PIN &amp;amp; IO_ARDUIO_INTU_IN)	// XBUS INTU&lt;br /&gt;
//		newstatus.intu = true;&lt;br /&gt;
//	else&lt;br /&gt;
//		newstatus.intu = false;&lt;br /&gt;
//#endif&lt;br /&gt;
	if (newstatus.byte != interrupt_RP6ArduIOstatus.byte) {&lt;br /&gt;
		interrupt_rp6arduiostatus_changed = true;&lt;br /&gt;
		interrupt_RP6ArduIOstatus.byte = newstatus.byte;&lt;br /&gt;
	}&lt;br /&gt;
	else interrupt_rp6arduiostatus_changed = false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591):&lt;br /&gt;
&lt;br /&gt;
addaexp_1_t ad1ins;&lt;br /&gt;
addaexp_2_t ad2ins;&lt;br /&gt;
addaexp_3_t ad3ins;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function reads the 3 ADDA_x ADC ports&lt;br /&gt;
 * (AIN0..AIN3), where x = AD/DA-Expander number&lt;br /&gt;
 * = [1..3]!&lt;br /&gt;
 * You may call this function (task) frequently&lt;br /&gt;
 * out of the main loop.&lt;br /&gt;
 * The AIN0..AIN3 ADC values [0..255] are read&lt;br /&gt;
 * into the global adxins struct:&lt;br /&gt;
 *   uint8_t adxins.ADxy, where y = ADC channel&lt;br /&gt;
 *   (AIN0..3) number of ADDA_x = [0..3]&lt;br /&gt;
 *&lt;br /&gt;
 * Input: ad  -&amp;gt; AD/DA-Expander number [1..3]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro task_readArduIO_ADx(),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = AD/DA-Expander number = [1..3].&lt;br /&gt;
 * The macro task_readAllArduIO_ADs() reads the&lt;br /&gt;
 * ADC ports (AIN0..AIN3) of ALL 3 AD/DA-&lt;br /&gt;
 * Expanders.&lt;br /&gt;
 *&lt;br /&gt;
 * Hint only for ad == 1 (ADDA_1):&lt;br /&gt;
 *       If READ_ADCUB is defined, the variable&lt;br /&gt;
 *       adcub is filled with the UB voltage ADC&lt;br /&gt;
 *       value. Depending on adcub the UB voltage&lt;br /&gt;
 *       low flag is SET/CLEARED in the ArduIO&lt;br /&gt;
 *       status byte (RP6ArduIOstatus.ubatLow)!&lt;br /&gt;
 *       There is also a macro isUbLow(), that&lt;br /&gt;
 *       may be used instead of&lt;br /&gt;
 *       RP6ArduIOstatus.ubatLow.&lt;br /&gt;
 *&lt;br /&gt;
 * Examples:&lt;br /&gt;
 *   task_readArduIO_AD(ADDA_1);&lt;br /&gt;
 *   writeString_P(&amp;quot;\nADDA_1:AIN0 = &amp;quot;);&lt;br /&gt;
 *   writeInteger(ad1ins.AD10, DEC);&lt;br /&gt;
 *   writeString_P(&amp;quot;\n&amp;quot;);&lt;br /&gt;
 *&lt;br /&gt;
 *   task_readArduIO_AD2();&lt;br /&gt;
 *   writeString_P(&amp;quot;\nADDA_2:AIN3 = &amp;quot;);&lt;br /&gt;
 *   writeInteger(ad2ins.AD23, DEC);&lt;br /&gt;
 *   writeString_P(&amp;quot; (U: &amp;quot;);&lt;br /&gt;
 *   writeInteger(UCV_AD(ad2ins.AD23), DEC);&lt;br /&gt;
 *   writeString_P(&amp;quot;cV)\n&amp;quot;); // 100cV = 1V&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void task_readArduIO_AD(uint8_t ad)&lt;br /&gt;
{&lt;br /&gt;
	switch (ad) {								// AD/DA-Expander number:&lt;br /&gt;
		case ADDA_1 :							//  ADDA_1&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_AD_1_ADR, PCF8591_CONTROL_ARDUIO);&lt;br /&gt;
			I2CTWI_readBytes(I2C_ARDUIO_AD_1_ADR, registerBuf, 5);&lt;br /&gt;
			ad1ins.AD10 = registerBuf[1];&lt;br /&gt;
			ad1ins.AD11 = registerBuf[2];&lt;br /&gt;
			ad1ins.AD12 = registerBuf[3];&lt;br /&gt;
			ad1ins.AD13 = registerBuf[4];&lt;br /&gt;
#ifdef READ_ADCUB&lt;br /&gt;
			adcub = ad1ins.ArduIO_UB;			// = ad1ins.AD13&lt;br /&gt;
			// Test for UB voltage low condition:&lt;br /&gt;
			if (adcub &amp;lt; ADCVAL_UB_LOW) RP6ArduIOstatus_LIB.ubatLow = true;&lt;br /&gt;
			else RP6ArduIOstatus_LIB.ubatLow = false;&lt;br /&gt;
			RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
#endif&lt;br /&gt;
			break;&lt;br /&gt;
		case ADDA_2 :							//  ADDA_2&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_AD_2_ADR, PCF8591_CONTROL_ARDUIO);&lt;br /&gt;
			I2CTWI_readBytes(I2C_ARDUIO_AD_2_ADR, registerBuf, 5);&lt;br /&gt;
			ad2ins.AD20 = registerBuf[1];&lt;br /&gt;
			ad2ins.AD21 = registerBuf[2];&lt;br /&gt;
			ad2ins.AD22 = registerBuf[3];&lt;br /&gt;
			ad2ins.AD23 = registerBuf[4];&lt;br /&gt;
			break;&lt;br /&gt;
		case ADDA_3 :							//  ADDA_3&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_AD_3_ADR, PCF8591_CONTROL_ARDUIO);&lt;br /&gt;
			I2CTWI_readBytes(I2C_ARDUIO_AD_3_ADR, registerBuf, 5);&lt;br /&gt;
			ad3ins.AD30 = registerBuf[1];&lt;br /&gt;
			ad3ins.AD31 = registerBuf[2];&lt;br /&gt;
			ad3ins.AD32 = registerBuf[3];&lt;br /&gt;
			ad3ins.AD33 = registerBuf[4];&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// -----------------------&lt;br /&gt;
&lt;br /&gt;
uint8_t da1aout = 0;&lt;br /&gt;
uint8_t da2aout = 0;&lt;br /&gt;
uint8_t da3aout = 0;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function sends an 8 bit value (aout) to&lt;br /&gt;
 * one of the three DA converters on the ArduIO&lt;br /&gt;
 * Board. After this the analog voltage [0..5V]&lt;br /&gt;
 * can be measured at the DAC output pin (AOUT)&lt;br /&gt;
 * of the addressed AD/DA-Expander.&lt;br /&gt;
 * The value aout is also stored in daxaout.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: da   -&amp;gt; AD/DA-Expander number [1..3]&lt;br /&gt;
 *        aout -&amp;gt; Output value (8 bit)&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro writeArduIO_DAx(aout),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = AD/DA-Expander number = [1..3].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enableDAs(); &amp;lt;==           !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   writeArduIO_DA1(127);   // Or writeArduIO_DA(1,127);&lt;br /&gt;
 *   // this sends the value 127 to the DAC of&lt;br /&gt;
 *   // AD/DA-Expander 1. This DAC now generates&lt;br /&gt;
 *   // an output voltage (Vo) of 2.5V:&lt;br /&gt;
 *   //   Vo [V] = aout * 5 / 255&lt;br /&gt;
 *   // ... or 250cV (1cV = one-hundreth of 1V):&lt;br /&gt;
 *   //   Vo [cV] = aout * 500 / 255&lt;br /&gt;
 *   writeArduIO_DA1(AOUT_CV(250)); // 250cV = 2.5V&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void writeArduIO_DA(uint8_t da, uint8_t aout)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.dasEnable) {&lt;br /&gt;
		switch (da) {							// AD/DA-Expander number:&lt;br /&gt;
			case ADDA_1 :						//  ADDA_1&lt;br /&gt;
				I2CTWI_transmit2Bytes(I2C_ARDUIO_AD_1_ADR, PCF8591_CONTROL_DAC_ENABLE, aout);&lt;br /&gt;
				da1aout = aout;&lt;br /&gt;
				break;&lt;br /&gt;
			case ADDA_2 :						//  ADDA_2&lt;br /&gt;
				I2CTWI_transmit2Bytes(I2C_ARDUIO_AD_2_ADR, PCF8591_CONTROL_DAC_ENABLE, aout);&lt;br /&gt;
				da2aout = aout;&lt;br /&gt;
				break;&lt;br /&gt;
			case ADDA_3 :						//  ADDA_3&lt;br /&gt;
				I2CTWI_transmit2Bytes(I2C_ARDUIO_AD_3_ADR, PCF8591_CONTROL_DAC_ENABLE, aout);&lt;br /&gt;
				da3aout = aout;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function disables the DAC output (AOUT)&lt;br /&gt;
 * of the addressed AD/DA-Expander (set PCF8591&lt;br /&gt;
 * default mode).&lt;br /&gt;
 *&lt;br /&gt;
 * Input: da  -&amp;gt; AD/DA-Expander number [1..3]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro disableArduIO_DAx(),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = AD/DA-Expander number = [1..3].&lt;br /&gt;
 * The macro disableAllArduIO_DAs() disables the&lt;br /&gt;
 * DAC outputs (AOUT) of ALL 3 AD/DA-Expanders.&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - The function task_readArduIO_AD(ad)&lt;br /&gt;
 *          ENABLES the DAC output (AOUT) of the&lt;br /&gt;
 *          addressed AD/DA-Expander!&lt;br /&gt;
 *        - Access to the 3 DACs is NOT disabled&lt;br /&gt;
 *          by this function! Pls. use function&lt;br /&gt;
 *          disableDAs() for this!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void disableArduIO_DA(uint8_t da)&lt;br /&gt;
{&lt;br /&gt;
	switch (da) {								// AD/DA-Expander number:&lt;br /&gt;
		case ADDA_1 :							//  ADDA_1&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_AD_1_ADR, PCF8591_CONTROL_DEFAULT);&lt;br /&gt;
			break;&lt;br /&gt;
		case ADDA_2 :							//  ADDA_2&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_AD_2_ADR, PCF8591_CONTROL_DEFAULT);&lt;br /&gt;
			break;&lt;br /&gt;
		case ADDA_3 :							//  ADDA_3&lt;br /&gt;
			I2CTWI_transmitByte(I2C_ARDUIO_AD_3_ADR, PCF8591_CONTROL_DEFAULT);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// UB Voltage Sensor:&lt;br /&gt;
&lt;br /&gt;
uint8_t adcub;							// UB voltage sensor ADC value&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function reads and returns the ADC value of&lt;br /&gt;
 * the UB voltage sensor. The value is also stored&lt;br /&gt;
 * in adcub. Depending on adcub the UB voltage low&lt;br /&gt;
 * flag is SET/CLEARED in the ArduIO status byte&lt;br /&gt;
 * (RP6ArduIOstatus.ubatLow)!&lt;br /&gt;
 * There is also a macro isUbLow(), that may be&lt;br /&gt;
 * used instead of RP6ArduIOstatus.ubatLow.&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: Jumper JP_AD-UB must be closed in order to&lt;br /&gt;
 *       measure the UB voltage!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
uint8_t getUbSensor(void)&lt;br /&gt;
{&lt;br /&gt;
	task_readArduIO_AD1();&lt;br /&gt;
	adcub = ad1ins.ArduIO_UB;					// ADDA_1:AIN3&lt;br /&gt;
	// Test for UB voltage low condition:&lt;br /&gt;
	if (adcub &amp;lt; ADCVAL_UB_LOW) RP6ArduIOstatus_LIB.ubatLow = true;&lt;br /&gt;
	else RP6ArduIOstatus_LIB.ubatLow = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
	return adcub;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
double ubv;								// UB voltage [V]&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Calculates and returns the UB voltage value&lt;br /&gt;
 * by using the data read from the UB voltage&lt;br /&gt;
 * sensor with the function getUbSensor().&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: The calculation assumes a reference&lt;br /&gt;
 *       voltage of 5.0V and a voltage divider&lt;br /&gt;
 *       100k/100k at the sensor input!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
double calculateUb(void)&lt;br /&gt;
{&lt;br /&gt;
	return (10.0f / 255.0f * adcub);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Measures and returns the UB voltage value [V].&lt;br /&gt;
 * The ADC value of the UB voltage sensor is also&lt;br /&gt;
 * stored in adcub. Depending on adcub the UB&lt;br /&gt;
 * voltage low flag is SET/CLEARED in the ArduIO&lt;br /&gt;
 * status byte (RP6ArduIOstatus.ubatLow)!&lt;br /&gt;
 * There is also a macro isUbLow(), that may be&lt;br /&gt;
 * used instead of RP6ArduIOstatus.ubatLow.&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - Jumper JP_AD-UB must be closed in&lt;br /&gt;
 *          order to measure the UB voltage!&lt;br /&gt;
 *        - The calculation assumes a reference&lt;br /&gt;
 *          voltage of 5.0V and a voltage&lt;br /&gt;
 *          divider 100k/100k at the sensor&lt;br /&gt;
 *          input!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
double measureUb(void)&lt;br /&gt;
{&lt;br /&gt;
	task_readArduIO_AD1();&lt;br /&gt;
	adcub = ad1ins.ArduIO_UB;					// ADDA_1:AIN3&lt;br /&gt;
	// Test for UB voltage low condition:&lt;br /&gt;
	if (adcub &amp;lt; ADCVAL_UB_LOW) RP6ArduIOstatus_LIB.ubatLow = true;&lt;br /&gt;
	else RP6ArduIOstatus_LIB.ubatLow = false;&lt;br /&gt;
	RP6ArduIOstatus.byte = RP6ArduIOstatus_LIB.byte;&lt;br /&gt;
	return (10.0f / 255.0f * adcub);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// LEDs:&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set the 4 status LEDs of the ArduIO.&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *          setArduIOLEDs(0b1010);&lt;br /&gt;
 *          // this CLEARs LEDs 1 and 3&lt;br /&gt;
 *          // and SETs LEDs 2 and 4!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOLEDs(uint8_t leds)&lt;br /&gt;
{&lt;br /&gt;
	if (leds &amp;amp; 0b00000001) PCA9685_ARD_set(ARD_CHLED1, 4095);&lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED1, 0);&lt;br /&gt;
	if (leds &amp;amp; 0b00000010) PCA9685_ARD_set(ARD_CHLED2, 4095);&lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED2, 0);&lt;br /&gt;
	if (leds &amp;amp; 0b00000100) PCA9685_ARD_set(ARD_CHLED3, 4095);&lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED3, 0);&lt;br /&gt;
	if (leds &amp;amp; 0b00001000) PCA9685_ARD_set(ARD_CHLED4, 4095);&lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED4, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Dim the 4 status LEDs of the ArduIO.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: led  -&amp;gt; LED number [1..4]&lt;br /&gt;
 *        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro dimArduIOLEDx(duty),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = LED number = [1..4].&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   dimArduIOLED2(DUTY_50);   // Or dimArduIOLED(2,2047);&lt;br /&gt;
 *   // this dims LED2 with a&lt;br /&gt;
 *   // duty cycle of 50%!&lt;br /&gt;
 *   dimArduIOLED2(DUTY_PCT(50));   // Or dimArduIOLED2(2047);&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void dimArduIOLED(uint8_t led, uint16_t duty)&lt;br /&gt;
{&lt;br /&gt;
	if (led == 1) PCA9685_ARD_set(ARD_CHLED1, duty);&lt;br /&gt;
	if (led == 2) PCA9685_ARD_set(ARD_CHLED2, duty);&lt;br /&gt;
	if (led == 3) PCA9685_ARD_set(ARD_CHLED3, duty);&lt;br /&gt;
	if (led == 4) PCA9685_ARD_set(ARD_CHLED4, duty);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY LED1, don't change anything for the other LEDs.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: led -&amp;gt; 0 (false) = LED off&lt;br /&gt;
 *               &amp;gt;0 (true) = LED on&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOLED1(uint8_t led)&lt;br /&gt;
{&lt;br /&gt;
	if (led &amp;gt; 0) PCA9685_ARD_set(ARD_CHLED1, 4095); &lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED1, 0);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY LED2, don't change anything for the other LEDs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOLED2(uint8_t led)&lt;br /&gt;
{&lt;br /&gt;
	if (led &amp;gt; 0) PCA9685_ARD_set(ARD_CHLED2, 4095); &lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED2, 0);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY LED3, don't change anything for the other LEDs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOLED3(uint8_t led)&lt;br /&gt;
{&lt;br /&gt;
	if (led &amp;gt; 0) PCA9685_ARD_set(ARD_CHLED3, 4095); &lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED3, 0);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY LED4, don't change anything for the other LEDs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOLED4(uint8_t led)&lt;br /&gt;
{&lt;br /&gt;
	if (led &amp;gt; 0) PCA9685_ARD_set(ARD_CHLED4, 4095); &lt;br /&gt;
	else PCA9685_ARD_set(ARD_CHLED4, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// PWM Ports:&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set the 4 free PWM ports of the ArduIO to ON or&lt;br /&gt;
 * OFF (set the MAX/MIN [100%/0%] PWM duty cycle).&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *          setArduIOPWMs(0b1010);&lt;br /&gt;
 *          // this CLEARs PWMs 1 and 3 [0%]&lt;br /&gt;
 *          // and SETs PWMs 2 and 4 [100%]!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPWMs(uint8_t pwms)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.pwmsEnable) {&lt;br /&gt;
		if (pwms &amp;amp; 0b00000001) PCA9685_ARD_set(CHPWM1, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPWM1, 0);&lt;br /&gt;
		if (pwms &amp;amp; 0b00000010) PCA9685_ARD_set(CHPWM2, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPWM2, 0);&lt;br /&gt;
		if (pwms &amp;amp; 0b00000100) PCA9685_ARD_set(CHPWM3, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPWM3, 0);&lt;br /&gt;
		if (pwms &amp;amp; 0b00001000) PCA9685_ARD_set(CHPWM4, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPWM4, 0);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Dim the 4 free PWM ports of the ArduIO (set the&lt;br /&gt;
 * PWM duty cycle).&lt;br /&gt;
 *&lt;br /&gt;
 * Input: pwm  -&amp;gt; PWM number [1..4]&lt;br /&gt;
 *        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro dimArduIOPWMx(duty),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = PWM number = [1..4].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   dimArduIOPWM2(DUTY_50);   // Or dimArduIOPWM(2,2047);&lt;br /&gt;
 *   // this dims PWM2 with a&lt;br /&gt;
 *   // PWM duty cycle of 50%!&lt;br /&gt;
 *   dimArduIOPWM2(DUTY_PCT(50));   // Or dimArduIOPWM2(2047);&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void dimArduIOPWM(uint8_t pwm, uint16_t duty)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.pwmsEnable) {&lt;br /&gt;
		if (pwm == 1) PCA9685_ARD_set(CHPWM1, duty);&lt;br /&gt;
		if (pwm == 2) PCA9685_ARD_set(CHPWM2, duty);&lt;br /&gt;
		if (pwm == 3) PCA9685_ARD_set(CHPWM3, duty);&lt;br /&gt;
		if (pwm == 4) PCA9685_ARD_set(CHPWM4, duty);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY PWM1, don't change anything for the other PWMs.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: pwm -&amp;gt; 0 (false) = PWM off [0%]&lt;br /&gt;
 *               &amp;gt;0 (true) = PWM max. duty cycle [100%]&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPWM1(uint8_t pwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.pwmsEnable) {&lt;br /&gt;
		if (pwm &amp;gt; 0) PCA9685_ARD_set(CHPWM1, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPWM1, 0);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY PWM2, don't change anything for the other PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPWM2(uint8_t pwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.pwmsEnable) {&lt;br /&gt;
		if (pwm &amp;gt; 0) PCA9685_ARD_set(CHPWM2, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPWM2, 0);&lt;br /&gt;
	}	&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY PWM3, don't change anything for the other PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPWM3(uint8_t pwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.pwmsEnable) {&lt;br /&gt;
		if (pwm &amp;gt; 0) PCA9685_ARD_set(CHPWM3, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPWM3, 0);	&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY PWM4, don't change anything for the other PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPWM4(uint8_t pwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.pwmsEnable) {&lt;br /&gt;
		if (pwm &amp;gt; 0) PCA9685_ARD_set(CHPWM4, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPWM4, 0);	&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
&lt;br /&gt;
// Power PWM Ports:&lt;br /&gt;
/** &lt;br /&gt;
 * Set the 8 power PWM ports of the ArduIO to be&lt;br /&gt;
 * used as 8 SINGLE power PWM ports and switch&lt;br /&gt;
 * all 8 power PWM ports off (0% PWM duty cycle).&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWMMode(void)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED0_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM1_P, 0);&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM2_N, 4095);&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED2_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM3_P, 0);&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM4_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED4_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM5_P, 0);&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM6_N, 4095);&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED6_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM7_P, 0);&lt;br /&gt;
		I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_ON_H, 0);&lt;br /&gt;
		PCA9685_ARD_set(CHPOWERPWM8_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set the 8 power PWM ports of the ArduIO to ON or&lt;br /&gt;
 * OFF (set the MAX/MIN [100%/0%] PWM duty cycle).&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *          setArduIOPowerPWMs(0b00001010);&lt;br /&gt;
 *          // this CLEARs power PWMs 1, 3, 5..8 [0%]&lt;br /&gt;
 *          // and SETs power PWMs 2 and 4 [100%]!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWMs(uint8_t ppwms)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		if (ppwms &amp;amp; 0b00000001) PCA9685_ARD_set(CHPOWERPWM1_P, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM1_P, 0);&lt;br /&gt;
		if (ppwms &amp;amp; 0b00000010) PCA9685_ARD_set(CHPOWERPWM2_N, 0);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM2_N, 4095);&lt;br /&gt;
		if (ppwms &amp;amp; 0b00000100) PCA9685_ARD_set(CHPOWERPWM3_P, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM3_P, 0);&lt;br /&gt;
		if (ppwms &amp;amp; 0b00001000) PCA9685_ARD_set(CHPOWERPWM4_N, 0);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM4_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		if (ppwms &amp;amp; 0b00010000) PCA9685_ARD_set(CHPOWERPWM5_P, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM5_P, 0);&lt;br /&gt;
		if (ppwms &amp;amp; 0b00100000) PCA9685_ARD_set(CHPOWERPWM6_N, 0);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM6_N, 4095);&lt;br /&gt;
		if (ppwms &amp;amp; 0b01000000) PCA9685_ARD_set(CHPOWERPWM7_P, 4095);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM7_P, 0);&lt;br /&gt;
		if (ppwms &amp;amp; 0b10000000) PCA9685_ARD_set(CHPOWERPWM8_N, 0);&lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM8_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Dim the 8 power PWM ports of the ArduIO (set the&lt;br /&gt;
 * PWM duty cycle).&lt;br /&gt;
 *&lt;br /&gt;
 * Input: ppwm -&amp;gt; Power PWM number [1..8]&lt;br /&gt;
 *        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 *&lt;br /&gt;
 * There is also a macro dimArduIOPowerPWMx(duty),&lt;br /&gt;
 * which does exactly the same as this function,&lt;br /&gt;
 * where x = Power PWM number = [1..8].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *   dimArduIOPowerPWM2(DUTY_50);   // Or dimArduIOPowerPWM(2,2047);&lt;br /&gt;
 *   // this dims power PWM2 with a&lt;br /&gt;
 *   // duty cycle of 50%!&lt;br /&gt;
 *   dimArduIOPowerPWM2(DUTY_PCT(50));   // Or dimArduIOPowerPWM2(2047);&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void dimArduIOPowerPWM(uint8_t ppwm, uint16_t duty)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		if (ppwm == 1) PCA9685_ARD_set(CHPOWERPWM1_P, duty);&lt;br /&gt;
		if (ppwm == 2) PCA9685_ARD_set(CHPOWERPWM2_N, (4095 - duty));&lt;br /&gt;
		if (ppwm == 3) PCA9685_ARD_set(CHPOWERPWM3_P, duty);&lt;br /&gt;
		if (ppwm == 4) PCA9685_ARD_set(CHPOWERPWM4_N, (4095 - duty));&lt;br /&gt;
	}&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		if (ppwm == 5) PCA9685_ARD_set(CHPOWERPWM5_P, duty);&lt;br /&gt;
		if (ppwm == 6) PCA9685_ARD_set(CHPOWERPWM6_N, (4095 - duty));&lt;br /&gt;
		if (ppwm == 7) PCA9685_ARD_set(CHPOWERPWM7_P, duty);&lt;br /&gt;
		if (ppwm == 8) PCA9685_ARD_set(CHPOWERPWM8_N, (4095 - duty));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM1, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: ppwm -&amp;gt; 0 (false) = Power PWM off [0%]&lt;br /&gt;
 *                &amp;gt;0 (true) = Power PWM max. duty cycle [100%]&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM1(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM1_P, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM1_P, 0);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM2, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM2(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM2_N, 0); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM2_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM3, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM3(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM3_P, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM3_P, 0);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM4, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM4(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g1Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM4_N, 0); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM4_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM5, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 *       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM5(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM5_P, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM5_P, 0);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM6, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM6(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM6_N, 0); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM6_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM7, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM7(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM7_P, 4095); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM7_P, 0);&lt;br /&gt;
	}&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Set ONLY power PWM8, don't change anything for&lt;br /&gt;
 * the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void setArduIOPowerPWM8(uint8_t ppwm)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.ppwm_g2Enable) {&lt;br /&gt;
		if (ppwm &amp;gt; 0) PCA9685_ARD_set(CHPOWERPWM8_N, 0); &lt;br /&gt;
		else PCA9685_ARD_set(CHPOWERPWM8_N, 4095);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// H-Bridges:&lt;br /&gt;
&lt;br /&gt;
uint8_t last_hb, last_dir;&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * Adjust all functions of the two H-Bridges.&lt;br /&gt;
 *&lt;br /&gt;
 * Input: hb   -&amp;gt; H-Bridge (HB) number [1 or 2]&lt;br /&gt;
 *        dir  -&amp;gt; Direction [0, 1, 4, 5]&lt;br /&gt;
 *        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 * &lt;br /&gt;
 * There are also 6 macros for each HB:&lt;br /&gt;
 *   powerHBx(dir,duty);&lt;br /&gt;
 *   powerHBxSTOP();&lt;br /&gt;
 *   powerHBxFWD(duty);&lt;br /&gt;
 *   powerHBxBWD(duty);&lt;br /&gt;
 *   powerHBxBRK();&lt;br /&gt;
 *   powerHBxOFF();&lt;br /&gt;
 * which do exactly the same as this function,&lt;br /&gt;
 * where x = H-Bridge number = [1 or 2].&lt;br /&gt;
 *&lt;br /&gt;
 * Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 *       ! THE ACCESS IS ENABLED:           !&lt;br /&gt;
 *       !   ==&amp;gt; enableHB(1); &amp;lt;==           !&lt;br /&gt;
 *       !   ==&amp;gt; enableHB(2); &amp;lt;==           !&lt;br /&gt;
 *&lt;br /&gt;
 * Examples:&lt;br /&gt;
 *   powerHB1(BWD,DUTY_50);   // Or adjustArduIOPowerHB(1,1,2047);&lt;br /&gt;
 *   // this moves a motor at HB1 backward with&lt;br /&gt;
 *   // a duty cycle of 50%!&lt;br /&gt;
 *   powerHB1BWD(DUTY_PCT(50));&lt;br /&gt;
 *   // does exactly the same!&lt;br /&gt;
 *&lt;br /&gt;
 *   powerHB2STOP();   // Or powerHB2(FWD,DUTY_0);&lt;br /&gt;
 *   // this stops a motor at HB2 (duty cycle: 0%)&lt;br /&gt;
 *   // and sets direction FWD!&lt;br /&gt;
 *   // If you don't want direction FWD to be set,&lt;br /&gt;
 *   // you have to use: powerHB2(BWD,DUTY_0)!&lt;br /&gt;
 *&lt;br /&gt;
 *   powerHB1BRK();&lt;br /&gt;
 *   // this stops a motor at HB1 faster than the&lt;br /&gt;
 *   // function powerHB1STOP() by shorting it!&lt;br /&gt;
 *&lt;br /&gt;
 *   powerHB2OFF();&lt;br /&gt;
 *   // this stops a motor at HB2 by cutting off&lt;br /&gt;
 *   // all four HB2 motor driver MOSFets!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void adjustArduIOPowerHB(uint8_t hb, uint8_t dir, uint16_t duty)&lt;br /&gt;
{&lt;br /&gt;
	uint8_t newcall = 1;&lt;br /&gt;
	if ((RP6ArduIOstatus_LIB.hb1Enable) || (RP6ArduIOstatus_LIB.hb2Enable)) {&lt;br /&gt;
		if ((hb == last_hb) &amp;amp;&amp;amp; (dir == last_dir))&lt;br /&gt;
			newcall = 0;&lt;br /&gt;
		else {&lt;br /&gt;
			newcall = 1;&lt;br /&gt;
			last_hb = hb;						// Store last H-Bridge number&lt;br /&gt;
			last_dir = dir;						// Store last direction&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
												// H-Bridge 1&lt;br /&gt;
	if ((hb == 1) &amp;amp;&amp;amp; (RP6ArduIOstatus_LIB.hb1Enable)) {&lt;br /&gt;
		switch (dir) {							//  Direction:&lt;br /&gt;
			case FWD :							//   Forwards&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED2_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED0_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED0_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_ON_H, 0);&lt;br /&gt;
				}&lt;br /&gt;
				PCA9685_ARD_set(CHHB1_N2, (4095 - duty));&lt;br /&gt;
				break;&lt;br /&gt;
			case BWD :							//   Backwards&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED0_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED2_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED2_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_ON_H, 0);&lt;br /&gt;
				}&lt;br /&gt;
				PCA9685_ARD_set(CHHB1_N1, (4095 - duty));&lt;br /&gt;
				break;&lt;br /&gt;
			case BRK :							//   Speed break&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED0_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED2_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_OFF_H, 0x10);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case OFF :							//   Power OFF&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED0_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED2_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED1_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED3_ON_H, 0x10);&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
												// H-Bridge 2&lt;br /&gt;
	else if ((hb == 2) &amp;amp;&amp;amp; (RP6ArduIOstatus_LIB.hb2Enable)) {&lt;br /&gt;
		switch (dir) {							//  Direction:&lt;br /&gt;
			case FWD :							//   Forwards&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED6_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED4_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED4_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_ON_H, 0);&lt;br /&gt;
				}&lt;br /&gt;
				PCA9685_ARD_set(CHHB2_N2, (4095 - duty));&lt;br /&gt;
				break;&lt;br /&gt;
			case BWD :							//   Backwards&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED4_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED6_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED6_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_ON_H, 0);&lt;br /&gt;
				}&lt;br /&gt;
				PCA9685_ARD_set(CHHB2_N1, (4095 - duty));&lt;br /&gt;
				break;&lt;br /&gt;
			case BRK :							//   Speed break&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED4_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED6_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_OFF_H, 0x10);&lt;br /&gt;
				}&lt;br /&gt;
				break;&lt;br /&gt;
			case OFF :							//   Power OFF&lt;br /&gt;
				if (newcall) {&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED4_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED6_OFF_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED5_ON_H, 0x10);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_OFF_H, 0);&lt;br /&gt;
					I2CTWI_transmit2Bytes(I2C_ARDUIO_PWM_ADR, PCA9685_LED7_ON_H, 0x10);&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO Board system control routine:&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Call all important ArduIO Board system tasks.&lt;br /&gt;
 * This task will read:&lt;br /&gt;
 *  - All ArduIO Board digital portpins&lt;br /&gt;
 *    Result: io1ins.GP100..io1ins.GP117&lt;br /&gt;
 *            io2ins.GP200..io2ins.GP217&lt;br /&gt;
 *            io3ins.GP300..io3ins.GP317&lt;br /&gt;
 *  - All PCA9535 (1..3) INTs (XBUS INT2, 1, 3)&lt;br /&gt;
 *    Result: interrupt_RP6ArduIOstatus.ioexp_1&lt;br /&gt;
 *            interrupt_RP6ArduIOstatus.ioexp_2&lt;br /&gt;
 *            interrupt_RP6ArduIOstatus.ioexp_3&lt;br /&gt;
 *  - All ArduIO Board analog portpins&lt;br /&gt;
 *    Result: ad1ins.AD10..ad1ins.AD13&lt;br /&gt;
 *            ad2ins.AD20..ad2ins.AD23&lt;br /&gt;
 *            ad3ins.AD30..ad3ins.AD33&lt;br /&gt;
 * The variable interrupt_rp6arduiostatus_changed&lt;br /&gt;
 * will be TRUE, if the RP6ArduIO interrupt status&lt;br /&gt;
 * has changed since the last call of this task&lt;br /&gt;
 * (or task_checkArduIO_INTs), else it will be&lt;br /&gt;
 * FALSE.&lt;br /&gt;
 * There is also a macro int_status_changed(),&lt;br /&gt;
 * that may be used instead of the variable&lt;br /&gt;
 * interrupt_rp6arduiostatus_changed.&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - Do NOT use task_Arduino_Uno_Exp()&lt;br /&gt;
 *          together with THIS task!&lt;br /&gt;
 *        - You should only use this task, if you&lt;br /&gt;
 *          have to read ALL ArduIO Board input&lt;br /&gt;
 *          portpins!&lt;br /&gt;
 *        - Digital portpins can be read, if they&lt;br /&gt;
 *          were configured as INPUTs before:&lt;br /&gt;
 *          configArduIO_IO1(0b1111111111111111);&lt;br /&gt;
 *          configArduIO_IO2(0b1111111111111111);&lt;br /&gt;
 *          configArduIO_IO3(0b1111111111111111);&lt;br /&gt;
 *        - Digital portpin input values can be&lt;br /&gt;
 *          inverted with the function&lt;br /&gt;
 *          invertArduIO_IO(io,invrt)!&lt;br /&gt;
 *        - PCA9535 INTs can only be read, if the&lt;br /&gt;
 *          corresponding jumper (JP_INT3V3) is&lt;br /&gt;
 *          CLOSED:&lt;br /&gt;
 *          INT1 -&amp;gt; Pins 1-2 (PCA9535 (2) INT)&lt;br /&gt;
 *          INT2 -&amp;gt; Pins 5-6 (PCA9535 (1) INT)&lt;br /&gt;
 *          INT3 -&amp;gt; Pins 3-4 (PCA9535 (3) INT)&lt;br /&gt;
 *        - XBUS INT2 and INT3 are NOT available&lt;br /&gt;
 *          with RP6v2 Base!!!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void task_RP6_ArduIOSystem(void)&lt;br /&gt;
{&lt;br /&gt;
	task_readAllArduIO_IOs();&lt;br /&gt;
	task_checkArduIO_INTs();&lt;br /&gt;
	task_readAllArduIO_ADs();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// ArduIO Board initialisation and shutdown:&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * You MUST call this function ONCE at the&lt;br /&gt;
 * beginning of a main program, that uses the&lt;br /&gt;
 * ArduIO Board.&lt;br /&gt;
 * DEFAULT initialisation settings are:&lt;br /&gt;
 * - Default access to ArduIO functions enable&lt;br /&gt;
 * - Default PWM frequency&lt;br /&gt;
 * - Power PWM mode enable&lt;br /&gt;
 * - H-Bridge mode disable&lt;br /&gt;
 * - All 8 power PWMs off&lt;br /&gt;
 * - All 4 free PWMs off&lt;br /&gt;
 * - All 4 LEDs off&lt;br /&gt;
 *&lt;br /&gt;
 * Hints: - After power on the 48 ArduIO IOs are&lt;br /&gt;
 *          configured as INPUTs (PCA9535&lt;br /&gt;
 *          default!). This function does NOT&lt;br /&gt;
 *          configurate the IOs!&lt;br /&gt;
 *        - After power on the 3 ArduIO DACs are&lt;br /&gt;
 *          disabled (PCF8591 default!). This&lt;br /&gt;
 *          function does NOT affect the state or&lt;br /&gt;
 *          the output voltage of the DACs!&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void arduio_init(void)&lt;br /&gt;
{&lt;br /&gt;
	// ArduIO Status (DEFAULT):&lt;br /&gt;
	setArduIODefaultStatus();					// ArduIO access default status&lt;br /&gt;
	// PWM Controller:&lt;br /&gt;
	PCA9685_ARD_init(PWM_FREQUENCY);			// Init PWM default frequency&lt;br /&gt;
	// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
	setArduIOPowerPWMMode();					// ArduIO 8 power PWMs off&lt;br /&gt;
	// PWMs:&lt;br /&gt;
	setArduIOPWMs(0b0000);						// ArduIO 4 free PWMs off&lt;br /&gt;
	// LEDs:&lt;br /&gt;
	setArduIOLEDs(0b0000);						// ArduIO 4 LEDs off&lt;br /&gt;
	// I/O Expanders:&lt;br /&gt;
	io1config.word = 0xffff;&lt;br /&gt;
	io2config.word = 0xffff;&lt;br /&gt;
	io3config.word = 0xffff;					// ArduIO 48 IOs INPUTs&lt;br /&gt;
	io1invrt.word = 0;&lt;br /&gt;
	io2invrt.word = 0;&lt;br /&gt;
	io3invrt.word = 0;							// ArduIO 48 IOs NOT inverted&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * If you don't use any function of the ArduIO&lt;br /&gt;
 * Board, you can put the ArduIO Board into&lt;br /&gt;
 * &amp;quot;SHUTDOWN MODE&amp;quot;. In this mode the electric&lt;br /&gt;
 * power consumption is very low to save energy.&lt;br /&gt;
 * If DISABLE_ON_SHUTDOWN is defined (default),&lt;br /&gt;
 * access to ArduIO functions is disabled in&lt;br /&gt;
 * SHUTDOWN mode.&lt;br /&gt;
 * SHUTDOWN settings are:&lt;br /&gt;
 * - Power PWM mode enable&lt;br /&gt;
 * - H-Bridge mode disable&lt;br /&gt;
 * - All 8 power PWMs off&lt;br /&gt;
 * - All 4 free PWMs off&lt;br /&gt;
 * - All 4 LEDs off&lt;br /&gt;
 * - All 48 IOs INPUTs&lt;br /&gt;
 * - All 3 DACs disable&lt;br /&gt;
 * - Access to ArduIO functions disable&lt;br /&gt;
 *   (if DISABLE_ON_SHUTDOWN is defined!)&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
void arduio_shutdown(void)&lt;br /&gt;
{&lt;br /&gt;
	// ArduIO Status (DEFAULT):&lt;br /&gt;
	setArduIODefaultStatus();					// ArduIO access default status&lt;br /&gt;
	// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
	setArduIOPowerPWMMode();					// ArduIO 8 power PWMs off&lt;br /&gt;
	// PWMs:&lt;br /&gt;
	setArduIOPWMs(0b0000);						// ArduIO 4 free PWMs off&lt;br /&gt;
	// LEDs:&lt;br /&gt;
	setArduIOLEDs(0b0000);						// ArduIO 4 LEDs off&lt;br /&gt;
	// I/O Expanders:&lt;br /&gt;
	configArduIO_IO1(0b1111111111111111);&lt;br /&gt;
	configArduIO_IO2(0b1111111111111111);&lt;br /&gt;
	configArduIO_IO3(0b1111111111111111);		// ArduIO 48 IOs INPUTs&lt;br /&gt;
	// A/D and D/A Converters:&lt;br /&gt;
	disableAllArduIO_DAs();						// ArduIO 3 DACs disable&lt;br /&gt;
#ifdef DISABLE_ON_SHUTDOWN&lt;br /&gt;
	// ArduIO Status (SHUTDOWN):&lt;br /&gt;
	setArduIOShutdownStatus();					// ArduIO access shutdown status&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                       Arduino Uno Expander functions                      */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Update the IO_2 port with current value from&lt;br /&gt;
 ~ the global io2outs variable.&lt;br /&gt;
 ~ The 16 IO_2 portpins will be SET (high, ON)&lt;br /&gt;
 ~ or CLEARED (low, OFF). 14 of these IO_2&lt;br /&gt;
 ~ portpins are connected with the digital &lt;br /&gt;
 ~ Arduino Uno Expander portpins D0..D13.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is a special option for the Arduino Uno&lt;br /&gt;
 ~ Expander &amp;quot;PWM portpins&amp;quot; D3, D5, D6, D9, D10&lt;br /&gt;
 ~ and D11:&lt;br /&gt;
 ~ If you set a jumper on JP_PWMx (x = PWM&lt;br /&gt;
 ~ number), the corresponding PWMx is connected&lt;br /&gt;
 ~ with one of these &amp;quot;PWM portpins&amp;quot;:&lt;br /&gt;
 ~   PWM1 -&amp;gt; P5  (JP_PWM1 pins 1-2 closed)&lt;br /&gt;
 ~        or P6  (JP_PWM1 pins 2-3 closed)&lt;br /&gt;
 ~   PWM2 -&amp;gt; P9  (JP_PWM2 pins 1-2 closed)&lt;br /&gt;
 ~        or P10 (JP_PWM2 pins 2-3 closed)&lt;br /&gt;
 ~   PWM3 -&amp;gt; P11 (JP_PWM3 pins 1-2 closed)&lt;br /&gt;
 ~        or P3  (JP_PWM3 pins 2-3 closed)&lt;br /&gt;
 ~ If all JP_PWMx pins are open, PWMx is NOT&lt;br /&gt;
 ~ connected to the Arduino Uno Expander!!!&lt;br /&gt;
 ~ If JP_PWMx pins are closed, the JP_ARD2 jumper&lt;br /&gt;
 ~ of that &amp;quot;PWM portpin&amp;quot; (D3, D5, D6, D9, D10&lt;br /&gt;
 ~ and/or D11) on the ArduIO Board MUST BE OPEN&lt;br /&gt;
 ~ (IO_2 portpin(s) disconnected)!!!&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Bit positions of the Arduino Uno Expander&lt;br /&gt;
 ~ portpins in the io2outs word:&lt;br /&gt;
 ~          0b0000000000000000&lt;br /&gt;
 ~            |||    ||      |&lt;br /&gt;
 ~   Arduino: ||D8   |D7     D0&lt;br /&gt;
 ~            n.c.   D13 &lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Examples:&lt;br /&gt;
 ~   io2outs.word = 0b0000000100101001;&lt;br /&gt;
 ~   updateArduino_Uno_Exp_IO();&lt;br /&gt;
 ~   // this CLEARs the port and SETs the&lt;br /&gt;
 ~   // Arduino Uno Expander portpins D0, D3,&lt;br /&gt;
 ~   // D5 and D13!&lt;br /&gt;
 ~&lt;br /&gt;
 ~   // Other possibility:&lt;br /&gt;
 ~   io2outs.ARD_D8 = true;   // Or io2outs.P15 = true;&lt;br /&gt;
 ~   updateArduino_Uno_Exp_IO();&lt;br /&gt;
 ~   // this SETs the Arduino Uno Expander&lt;br /&gt;
 ~   // portpin D8 and does not affect any&lt;br /&gt;
 ~   // other portpin!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void updateArduino_Uno_Exp_IO(void)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.outsEnable) {&lt;br /&gt;
		I2CTWI_transmit3Bytes(I2C_ARDUIO_IO_2_ADR, PCA9535_OUTPUT_P0, (io2outs.word &amp;amp; 0x00ff), (io2outs.word &amp;gt;&amp;gt; 8));&lt;br /&gt;
	}&lt;br /&gt;
	// Set the Arduino Uno Expander PWM portpins (see RP6_ArduIO.h!):&lt;br /&gt;
	if (IO_ARD_PWM1) {							// PWM1 -&amp;gt; D5 or D6&lt;br /&gt;
		if (IO_ARD_PWM1 == IO_ARD_D5_PWM) {		// D5&lt;br /&gt;
			setArduIOPWM1(!io2outs.ARD_D5);		// IO:low = PWM:ON!!!&lt;br /&gt;
		}&lt;br /&gt;
		if (IO_ARD_PWM1 == IO_ARD_D6_PWM) {		// D6&lt;br /&gt;
			setArduIOPWM1(!io2outs.ARD_D6);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (IO_ARD_PWM2) {							// PWM2 -&amp;gt; D9 or D10&lt;br /&gt;
		if (IO_ARD_PWM2 == IO_ARD_D9_PWM) {		// D9&lt;br /&gt;
			setArduIOPWM2(!io2outs.ARD_D9);&lt;br /&gt;
		}&lt;br /&gt;
		if (IO_ARD_PWM2 == IO_ARD_D10_PWM) {	// D10&lt;br /&gt;
			setArduIOPWM2(!io2outs.ARD_D10);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if (IO_ARD_PWM3) {							// PWM3 -&amp;gt; D11 or D3&lt;br /&gt;
		if (IO_ARD_PWM3 == IO_ARD_D11_PWM) {	// D11&lt;br /&gt;
			setArduIOPWM3(!io2outs.ARD_D11);&lt;br /&gt;
		}&lt;br /&gt;
		if (IO_ARD_PWM3 == IO_ARD_D3_PWM) {		// D3&lt;br /&gt;
			setArduIOPWM3(!io2outs.ARD_D3);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function SETs (high, ON) or CLEARs&lt;br /&gt;
 ~ (low, OFF) the 16 IO_2 portpins. 14 of these&lt;br /&gt;
 ~ IO_2 portpins are connected with the digital &lt;br /&gt;
 ~ Arduino Uno Expander portpins D0..D13.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is a special option for the Arduino Uno&lt;br /&gt;
 ~ Expander &amp;quot;PWM portpins&amp;quot; D3, D5, D6, D9, D10&lt;br /&gt;
 ~ and D11:&lt;br /&gt;
 ~ If you set a jumper on JP_PWMx (x = PWM&lt;br /&gt;
 ~ number), the corresponding PWMx is connected&lt;br /&gt;
 ~ with one of these &amp;quot;PWM portpins&amp;quot;:&lt;br /&gt;
 ~   PWM1 -&amp;gt; P5  (JP_PWM1 pins 1-2 closed)&lt;br /&gt;
 ~        or P6  (JP_PWM1 pins 2-3 closed)&lt;br /&gt;
 ~   PWM2 -&amp;gt; P9  (JP_PWM2 pins 1-2 closed)&lt;br /&gt;
 ~        or P10 (JP_PWM2 pins 2-3 closed)&lt;br /&gt;
 ~   PWM3 -&amp;gt; P11 (JP_PWM3 pins 1-2 closed)&lt;br /&gt;
 ~        or P3  (JP_PWM3 pins 2-3 closed)&lt;br /&gt;
 ~ If all JP_PWMx pins are open, PWMx is NOT&lt;br /&gt;
 ~ connected to the Arduino Uno Expander!!!&lt;br /&gt;
 ~ If JP_PWMx pins are closed, the JP_ARD2 jumper&lt;br /&gt;
 ~ of that &amp;quot;PWM portpin&amp;quot; (D3, D5, D6, D9, D10&lt;br /&gt;
 ~ and/or D11) on the ArduIO Board MUST BE OPEN&lt;br /&gt;
 ~ (IO_2 portpin(s) disconnected)!!!&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: out -&amp;gt; Output value (16 bit)&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Bit positions of the Arduino Uno Expander&lt;br /&gt;
 ~ portpins in the output value (out):&lt;br /&gt;
 ~          0b0000000000000000&lt;br /&gt;
 ~            |||    ||      |&lt;br /&gt;
 ~   Arduino: ||D8   |D7     D0&lt;br /&gt;
 ~            n.c.   D13 &lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   setArduino_Uno_Exp_IO(0b0010000000101001);&lt;br /&gt;
 ~   // this CLEARs the port and SETs the&lt;br /&gt;
 ~   // Arduino Uno Expander portpins D0, D3,&lt;br /&gt;
 ~   // D5 and D8!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void setArduino_Uno_Exp_IO(uint16_t out)&lt;br /&gt;
{&lt;br /&gt;
	if (RP6ArduIOstatus_LIB.outsEnable) {&lt;br /&gt;
		io2outs.word = out;&lt;br /&gt;
		updateArduino_Uno_Exp_IO();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Board Arduino Uno Expander control routine:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Call all important Arduino Uno Expander tasks.&lt;br /&gt;
 ~ This task will read:&lt;br /&gt;
 ~  - All Arduino digital portpins D0..D13&lt;br /&gt;
 ~    Result: io2ins.ARD_D0..io2ins.ARD_D13&lt;br /&gt;
 ~  - The PCA9535 (2) INT (XBUS INT1)&lt;br /&gt;
 ~    Result: interrupt_RP6ArduIOstatus.ioexp_2&lt;br /&gt;
 ~  - The Arduino analog portpins A0..A3&lt;br /&gt;
 ~    Result: ad3ins.ARD_A0..ad3ins.ARD_A3&lt;br /&gt;
 ~ The variable interrupt_rp6arduiostatus_changed&lt;br /&gt;
 ~ will be TRUE, if the RP6ArduIO interrupt status&lt;br /&gt;
 ~ has changed since the last call of this task&lt;br /&gt;
 ~ (or task_checkArduIO_INTs), else it will be&lt;br /&gt;
 ~ FALSE.&lt;br /&gt;
 ~ There is also a macro int_status_changed(),&lt;br /&gt;
 ~ that may be used instead of the variable&lt;br /&gt;
 ~ interrupt_rp6arduiostatus_changed.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - You can use task_RP6_ArduIOSystem()&lt;br /&gt;
 ~          instead of THIS task! Do NOT use both&lt;br /&gt;
 ~          tasks together!&lt;br /&gt;
 ~        - You should only use this task, if you&lt;br /&gt;
 ~          have to read ALL digital and analog&lt;br /&gt;
 ~          Arduino Uno Expander input portpins!&lt;br /&gt;
 ~        - Digital portpins can be read, if they&lt;br /&gt;
 ~          were configured as INPUTs before:&lt;br /&gt;
 ~          configArduIO_IO2(0b1111111111111111);&lt;br /&gt;
 ~        - Digital portpin input values can be&lt;br /&gt;
 ~          inverted with the function&lt;br /&gt;
 ~          invertArduIO_IO(2,invrt)!&lt;br /&gt;
 ~        - PCA9535 (2) INT can only be read, if&lt;br /&gt;
 ~          the corresponding jumper (JP_INT3V3)&lt;br /&gt;
 ~          is CLOSED:&lt;br /&gt;
 ~          INT1 -&amp;gt; Pins 1-2 (PCA9535 (2) INT)&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void task_Arduino_Uno_Exp(void)&lt;br /&gt;
{&lt;br /&gt;
	task_readArduino_Uno_Exp_IO();				// Or task_readArduIO_IO(2);&lt;br /&gt;
	if(IO_ARDUIO_INT1_PIN &amp;amp; IO_ARDUIO_INT1_IN)	// XBUS INT1&lt;br /&gt;
		newstatus.int1 = true;&lt;br /&gt;
	else&lt;br /&gt;
		newstatus.int1 = false;&lt;br /&gt;
	if (newstatus.int1 != interrupt_RP6ArduIOstatus.int1) {&lt;br /&gt;
		interrupt_rp6arduiostatus_changed = true;&lt;br /&gt;
		interrupt_RP6ArduIOstatus.int1 = newstatus.int1;&lt;br /&gt;
	}&lt;br /&gt;
	else interrupt_rp6arduiostatus_changed = false;&lt;br /&gt;
	task_readArduino_Uno_Exp_AD();				// Or task_readArduIO_AD(3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                    Arduino Uno Expander functions end                     */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 * Additional info&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Changelog:&lt;br /&gt;
 * - v. 1.1 (adapted for use with MultiIOLib) 28.11.2014 by Dirk&lt;br /&gt;
 * - v. 1.0 (initial release) 22.10.2014 by Dirk&lt;br /&gt;
 *&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Erklärung======&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RP6 M256 WIFI====&lt;br /&gt;
Die Demos für die RP6 M256 WiFi (und -wenn ihr wollt- auch eure eigenen Programme) nutzen die [[RP6_ArduIO_-_Software#ArduIO_Library|ArduIO Library]], s.o.! &lt;br /&gt;
=====Config=====&lt;br /&gt;
Diese Datei enthält nur die Information, welches RP6-Mikrocontroller-System (RP6 Base, RP6 CONTROL M32, RP6 M256 WiFi) das ArduIO Board ansteuert. Sie gehört in den Projektordner.&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIOConfig.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/**&lt;br /&gt;
 * Settings for the RP6_ArduIO Library&lt;br /&gt;
 */ &lt;br /&gt;
&lt;br /&gt;
#ifndef RP6_ARDUIOCONFIG_H&lt;br /&gt;
#define RP6_ARDUIOCONFIG_H&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Define the target here: &lt;br /&gt;
 * (Use only ONE of them! Never two or three!) &lt;br /&gt;
 */ &lt;br /&gt;
//#define ARDUIO_RP6BASE &lt;br /&gt;
//#define ARDUIO_RP6CONTROL&lt;br /&gt;
#define ARDUIO_RP6M256WIFI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
makefile (z.B. für Demo 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;...&lt;br /&gt;
TARGET = RP6M256_ArduIO_01&lt;br /&gt;
...&lt;br /&gt;
SRC += $(RP6_LIB_PATH)/RP6common/RP6_ArduIOLib.c&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Demos der M32 anpassen=====&lt;br /&gt;
Es ist einfach, die [[RP6_ArduIO_-_Software#RP6_CONTROL_M32|M32 Demos]] an die M256 anzupassen. Die ArduIO Library braucht nicht verändert zu werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Anpassungen müssen gemacht werden:&lt;br /&gt;
 - #include &amp;quot;RP6ControlLib.h&amp;quot; ==&amp;gt; #include &amp;quot;RP6M256Lib.h&amp;quot;&lt;br /&gt;
 - initRP6Control();          ==&amp;gt; initRP6M256();&lt;br /&gt;
 - getPressedKeyNumber()      ==&amp;gt; Tastenabfrage komplett entfernen!&lt;br /&gt;
Zusätzlich können bei der M256 alle UART-Ausgaben auf WiFi umgeleitet werden. Dazu muß an die UART-Ausgabebefehle &amp;quot;_WIFI&amp;quot; angehängt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
 - writeString_P(&amp;quot;Text&amp;quot;);     ==&amp;gt; writeString_P_WIFI(&amp;quot;Text&amp;quot;);&lt;br /&gt;
Die Funktion writeDouble() der M32 Demos kann für die WiFi-Ausgabe ersetzt werden durch:&lt;br /&gt;
&amp;lt;pre&amp;gt;void writeDouble_WIFI(double number, uint8_t width, uint8_t prec)&lt;br /&gt;
{char buffer[width + 1];&lt;br /&gt;
	dtostrf(number, width, prec, &amp;amp;buffer[0]);&lt;br /&gt;
	writeString_WIFI(&amp;amp;buffer[0]);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RP6 CONTROL M32====&lt;br /&gt;
Diese Demos für die RP6 CONTROL M32 (und -wenn ihr wollt- auch eure eigenen Programme) nutzen die [[RP6_ArduIO_-_Software#ArduIO_Library|ArduIO Library]], s.o.!&lt;br /&gt;
&lt;br /&gt;
=====Config=====&lt;br /&gt;
Diese Datei enthält nur die Information, welches RP6-Mikrocontroller-System (RP6 Base, RP6 CONTROL M32, RP6 M256 WiFi) das ArduIO Board ansteuert. Sie gehört in den Projektordner.&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIOConfig.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/**&lt;br /&gt;
 * Settings for the RP6_ArduIO Library&lt;br /&gt;
 */ &lt;br /&gt;
&lt;br /&gt;
#ifndef RP6_ARDUIOCONFIG_H&lt;br /&gt;
#define RP6_ARDUIOCONFIG_H&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Define the target here: &lt;br /&gt;
 * (Use only ONE of them! Never two or three!) &lt;br /&gt;
 */ &lt;br /&gt;
//#define ARDUIO_RP6BASE &lt;br /&gt;
#define ARDUIO_RP6CONTROL&lt;br /&gt;
//#define ARDUIO_RP6M256WIFI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
makefile (z.B. für Demo 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;...&lt;br /&gt;
TARGET = RP6Control_ArduIO_01&lt;br /&gt;
...&lt;br /&gt;
SRC += $(RP6_LIB_PATH)/RP6common/RP6_ArduIOLib.c&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Demo 1=====&lt;br /&gt;
Die Demo 1 besteht eigentlich aus ZWEI Testprogrammen. Wird sie so kompiliert, wie sie hier steht, erfolgt ein '''SCHREIB-Test''' (Output) auf allen Funktionen der ArduIO. Wird die Definition &amp;quot;WRITE_TEST&amp;quot; auskommentiert, erfolgt ein '''LESE-Test''' (Input).&lt;br /&gt;
&lt;br /&gt;
Datei RP6Control_ArduIO_01.c:&lt;br /&gt;
&amp;lt;pre&amp;gt;/* &lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * RP6 ROBOT SYSTEM - RP6 CONTROL M32 Examples&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Example: RP6Control ArduIO&lt;br /&gt;
 * Author(s): Dirk&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Description:&lt;br /&gt;
 * In this example we show a first test for the ArduIO Board.&lt;br /&gt;
 * &lt;br /&gt;
 * ############################################################################&lt;br /&gt;
 * The Robot does NOT move in this example! You can simply put it on a table&lt;br /&gt;
 * next to your PC and you should connect it to the PC via the USB Interface!&lt;br /&gt;
 * ############################################################################&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Includes:&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6ControlLib.h&amp;quot; 				// The RP6 Control Library. &lt;br /&gt;
										// Always needs to be included!&lt;br /&gt;
#include &amp;quot;RP6I2CmasterTWI.h&amp;quot;			// Include the I2C-Bus Master Library&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Include our new &amp;quot;RP6_ArduIO library&amp;quot;:&lt;br /&gt;
// (This is the library for accessing the ArduIO Board!)&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6_ArduIOLib.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Define the kind of demo:&lt;br /&gt;
// (If you don't define WRITE_TEST the READ TEST will be performed!)&lt;br /&gt;
#define WRITE_TEST&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Write a floating point number to the UART.&lt;br /&gt;
 *&lt;br /&gt;
 * Example:&lt;br /&gt;
 *&lt;br /&gt;
 *			// Write a floating point number to the UART (no exponent):&lt;br /&gt;
 *			writeDouble(1234567.890, 11, 3);&lt;br /&gt;
 *&lt;br /&gt;
 * The value of prec (precision) defines the number of decimal places.&lt;br /&gt;
 * For 32 bit floating point variables (float, double ...) 6 is&lt;br /&gt;
 * the max. value for prec (7 relevant digits).&lt;br /&gt;
 * The value of width defines the overall number of characters in the&lt;br /&gt;
 * floating point number including the decimal point. The number of&lt;br /&gt;
 * pre-decimal positions is: (width - prec - 1).&lt;br /&gt;
 */&lt;br /&gt;
void writeDouble(double number, uint8_t width, uint8_t prec)&lt;br /&gt;
{char buffer[width + 1];&lt;br /&gt;
	dtostrf(number, width, prec, &amp;amp;buffer[0]);&lt;br /&gt;
	writeString(&amp;amp;buffer[0]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C Error handler&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function gets called automatically if there was an I2C Error like&lt;br /&gt;
 * the slave sent a &amp;quot;not acknowledge&amp;quot; (NACK, error codes e.g. 0x20 or 0x30).&lt;br /&gt;
 * The most common mistakes are: &lt;br /&gt;
 *   - using the wrong address for the slave&lt;br /&gt;
 *   - slave not active or not connected to the I2C-Bus&lt;br /&gt;
 *   - too fast requests for a slower slave&lt;br /&gt;
 * Be sure to check this if you get I2C errors!&lt;br /&gt;
 */&lt;br /&gt;
void I2C_transmissionError(uint8_t errorState)&lt;br /&gt;
{&lt;br /&gt;
	writeString_P(&amp;quot;\nI2C ERROR --&amp;gt; TWI STATE IS: 0x&amp;quot;);&lt;br /&gt;
	writeInteger(errorState, HEX);&lt;br /&gt;
	writeChar('\n');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Main function - The program starts here:&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	initRP6Control();	// Always call this first! The Processor will not&lt;br /&gt;
						// work correctly otherwise. &lt;br /&gt;
&lt;br /&gt;
	initLCD(); // Initialize the LC-Display (LCD)&lt;br /&gt;
			   // Always call this before using the LCD!&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b1111);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	writeString_P(&amp;quot;\n\nRP6Control ArduIO Test 1!\n&amp;quot;);&lt;br /&gt;
#ifdef WRITE_TEST&lt;br /&gt;
	writeString_P(&amp;quot;\nPLEASE ENSURE THAT NO PINS OF PLUG SV_H-BRIDGES ARE CONNECTED!!!\n&amp;quot;);&lt;br /&gt;
#endif&lt;br /&gt;
	writeString_P(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// IMPORTANT:&lt;br /&gt;
	I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation&lt;br /&gt;
							// with 100kHz SCL Frequency&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// Register the event handler:&lt;br /&gt;
	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b1111);&lt;br /&gt;
&lt;br /&gt;
	// Write a text message to the LCD:&lt;br /&gt;
	showScreenLCD(&amp;quot;################&amp;quot;, &amp;quot;################&amp;quot;);&lt;br /&gt;
	mSleep(1500);&lt;br /&gt;
	showScreenLCD(&amp;quot; RP6Control M32&amp;quot;, &amp;quot;Example Program&amp;quot;);&lt;br /&gt;
	mSleep(2500); &lt;br /&gt;
	showScreenLCD(&amp;quot;  RP6 Ardu IO&amp;quot;,  &amp;quot;   Selftest 1&amp;quot;);&lt;br /&gt;
	mSleep(2500);&lt;br /&gt;
	clearLCD();&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	// ---------------------------------------&lt;br /&gt;
&lt;br /&gt;
	uint8_t onoff = 0;&lt;br /&gt;
&lt;br /&gt;
	startStopwatch1();&lt;br /&gt;
&lt;br /&gt;
	// IMPORTANT:&lt;br /&gt;
	arduio_init();								// ArduIO init!!!&lt;br /&gt;
#ifdef WRITE_TEST&lt;br /&gt;
	writeString_P(&amp;quot;Test -&amp;gt; LED1\n&amp;quot;);&lt;br /&gt;
	setArduIOLED1(1);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED1(0);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED1(1);&lt;br /&gt;
	mSleep(1000);&lt;br /&gt;
	writeString_P(&amp;quot;Test -&amp;gt; LED2\n&amp;quot;);&lt;br /&gt;
	setArduIOLED2(1);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED2(0);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED2(1);&lt;br /&gt;
	mSleep(1000);&lt;br /&gt;
	writeString_P(&amp;quot;Test -&amp;gt; LED3\n&amp;quot;);&lt;br /&gt;
	setArduIOLED3(1);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED3(0);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED3(1);&lt;br /&gt;
	mSleep(1000);&lt;br /&gt;
	writeString_P(&amp;quot;Test -&amp;gt; LED4\n&amp;quot;);&lt;br /&gt;
	setArduIOLED4(1);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED4(0);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setArduIOLED4(1);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
&lt;br /&gt;
	setArduIOLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	configArduIO_IO1(0);&lt;br /&gt;
	configArduIO_IO2(0);&lt;br /&gt;
	configArduIO_IO3(0);						// All IOs OUTPUTs&lt;br /&gt;
	mSleep(100);&lt;br /&gt;
#else&lt;br /&gt;
	configArduIO_IO1(0b1111111111111111);&lt;br /&gt;
	configArduIO_IO2(0b1111111111111111);&lt;br /&gt;
	configArduIO_IO3(0b1111111111111111);		// All IOs INPUTs&lt;br /&gt;
	mSleep(100);&lt;br /&gt;
#endif&lt;br /&gt;
	writeString_P(&amp;quot;\n===&amp;gt; PRESS BUTTON 5 TO STOP THE DEMO!!! &amp;lt;===\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	while(true) &lt;br /&gt;
	{&lt;br /&gt;
		if(getStopwatch1() &amp;gt; 1000) // 1s&lt;br /&gt;
		{&lt;br /&gt;
			if (onoff) onoff = 0;&lt;br /&gt;
			else onoff = 1;&lt;br /&gt;
#ifndef WRITE_TEST&lt;br /&gt;
			// UB voltage sensor ADC test:&lt;br /&gt;
			ubv = measureUb();&lt;br /&gt;
			writeString(&amp;quot;\nUB Voltage: &amp;quot;);&lt;br /&gt;
			writeDouble(ubv, 4, 1);&lt;br /&gt;
			writeString(&amp;quot;V\nADC UB: &amp;quot;);&lt;br /&gt;
			writeInteger(adcub, DEC);&lt;br /&gt;
			writeString(&amp;quot;\n&amp;quot;);&lt;br /&gt;
#else&lt;br /&gt;
			// PWM controller test:&lt;br /&gt;
			//   LEDs &amp;amp; IOs &amp;amp; free PWMs &amp;amp; power PWMs ON/OFF:&lt;br /&gt;
			if (onoff) {&lt;br /&gt;
				setArduIO_IO1(0xffff);&lt;br /&gt;
				setArduIO_IO2(0xffff);&lt;br /&gt;
				setArduIO_IO3(0xffff);			// All IOs high&lt;br /&gt;
				setArduIOLED1(1);&lt;br /&gt;
				setArduIOLED2(0);&lt;br /&gt;
				setArduIOLED3(0);&lt;br /&gt;
				setArduIOLED4(1);&lt;br /&gt;
				setArduIOPWM1(1);&lt;br /&gt;
				setArduIOPWM2(0);&lt;br /&gt;
				setArduIOPWM3(0);&lt;br /&gt;
				setArduIOPWM4(1);&lt;br /&gt;
				setArduIOPowerPWMs(0b10101010);&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				setArduIO_IO1(0);&lt;br /&gt;
				setArduIO_IO2(0);&lt;br /&gt;
				setArduIO_IO3(0);				// All IOs low&lt;br /&gt;
				setArduIOLEDs(0b0110);&lt;br /&gt;
				setArduIOPWMs(0b0110);&lt;br /&gt;
				setArduIOPowerPWMs(0b01010101);&lt;br /&gt;
			}&lt;br /&gt;
#endif&lt;br /&gt;
#ifndef WRITE_TEST&lt;br /&gt;
			// I/O Expander 1 read test:&lt;br /&gt;
			task_readArduIO_IO1();				// Read GP100..GP117&lt;br /&gt;
			writeString(&amp;quot;\nIO_1: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(io1ins.word, BIN, 16);&lt;br /&gt;
			writeString(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			// I/O Expander 2 read test:&lt;br /&gt;
			task_readArduIO_IO2();				// Read GP200..GP217&lt;br /&gt;
			writeString(&amp;quot;\nIO_2: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(io2ins.word, BIN, 16);&lt;br /&gt;
			writeString(&amp;quot;\n ARD:     1111&amp;quot;);&lt;br /&gt;
			writeString(&amp;quot;\n        89012376543210\n&amp;quot;);&lt;br /&gt;
			// I/O Expander 3 read test:&lt;br /&gt;
			task_readArduIO_IO3();				// Read GP300..GP317&lt;br /&gt;
			writeString(&amp;quot;\nIO_3: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(io3ins.word, BIN, 16);&lt;br /&gt;
			writeString(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
			// AD/DA Converter 1 ADC test:&lt;br /&gt;
			task_readArduIO_AD1();				// Read AD10..AD13&lt;br /&gt;
			writeString(&amp;quot;ADDA_1: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad1ins.AD10, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad1ins.AD11, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad1ins.AD12, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad1ins.AD13, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot;\n U[cV]: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad1ins.AD10), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad1ins.AD11), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad1ins.AD12), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad1ins.AD13), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot;\n        A0  | A1  | A2  | A3\n&amp;quot;);&lt;br /&gt;
			// AD/DA Converter 2 ADC test:&lt;br /&gt;
			task_readArduIO_AD2();				// Read AD20..AD23&lt;br /&gt;
			writeString(&amp;quot;ADDA_2: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad2ins.AD20, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad2ins.AD21, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad2ins.AD22, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad2ins.AD23, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot;\n U[cV]: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad2ins.AD20), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad2ins.AD21), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad2ins.AD22), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad2ins.AD23), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot;\n        A0  | A1  | A2  | A3\n&amp;quot;);&lt;br /&gt;
			// AD/DA Converter 3 ADC test:&lt;br /&gt;
			task_readArduIO_AD3();				// Read AD30..AD33&lt;br /&gt;
			writeString(&amp;quot;ADDA_3: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad3ins.ARD_A0, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad3ins.ARD_A1, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad3ins.ARD_A2, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(ad3ins.ARD_A3, DEC, 3);&lt;br /&gt;
			writeString(&amp;quot;\n U[cV]: &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad3ins.ARD_A0), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad3ins.ARD_A1), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad3ins.ARD_A2), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot; | &amp;quot;);&lt;br /&gt;
			writeIntegerLength(UCV_AD(ad3ins.ARD_A3), DEC, 3);&lt;br /&gt;
			writeString(&amp;quot;\n   ARD: A0  | A1  | A2  | A3\n&amp;quot;);&lt;br /&gt;
#else&lt;br /&gt;
			// AD/DA Converter 1..3 DAC test:&lt;br /&gt;
			if (onoff) {&lt;br /&gt;
				writeString(&amp;quot;==&amp;gt; DA1..3: 1.50V\n&amp;quot;);&lt;br /&gt;
				writeArduIO_DA1(AOUT_CV(150));	// DA1: 1.5V&lt;br /&gt;
				writeArduIO_DA2(AOUT_CV(150));	// DA2: 1.5V&lt;br /&gt;
				writeArduIO_DA3(AOUT_CV(150));	// DA3: 1.5V&lt;br /&gt;
			}&lt;br /&gt;
			else {&lt;br /&gt;
				writeString(&amp;quot;==&amp;gt; DA1..3: 3.50V\n&amp;quot;);&lt;br /&gt;
				writeArduIO_DA1(AOUT_CV(350));	// DA1: 3.5V&lt;br /&gt;
				writeArduIO_DA2(AOUT_CV(350));	// DA2: 3.5V&lt;br /&gt;
				writeArduIO_DA3(AOUT_CV(350));	// DA3: 3.5V&lt;br /&gt;
			}&lt;br /&gt;
#endif&lt;br /&gt;
			// ArduIO shutdown:&lt;br /&gt;
			uint8_t key = getPressedKeyNumber(); &lt;br /&gt;
			if (key == 5) {&lt;br /&gt;
				writeString(&amp;quot;\nPress button 1 for ArduIO SHUTDOWN&amp;quot;);&lt;br /&gt;
				writeString(&amp;quot;\nor button 2, 3 or 4 to continue!!!\n&amp;quot;);&lt;br /&gt;
				do {&lt;br /&gt;
					mSleep(10);&lt;br /&gt;
					key = getPressedKeyNumber();&lt;br /&gt;
				} while ((!key) || (key == 5));&lt;br /&gt;
				if (key == 1)  {&lt;br /&gt;
					writeString(&amp;quot;\nPlease wait for ArduIO SHUTDOWN...\n&amp;quot;);&lt;br /&gt;
					arduio_shutdown();&lt;br /&gt;
					mSleep(3000);&lt;br /&gt;
					writeString(&amp;quot;\nThe ArduIO now is in SHUTDOWN MODE!!!\n&amp;quot;);&lt;br /&gt;
					mSleep(1000);&lt;br /&gt;
					writeString(&amp;quot;\nRESET the microcontroller now...\n\n&amp;quot;);&lt;br /&gt;
					while(true) {};&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			setStopwatch1(0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		task_I2CTWI();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Erklärung======&lt;br /&gt;
&lt;br /&gt;
=====Demo 2=====&lt;br /&gt;
&lt;br /&gt;
Datei RP6Control_ArduIO_02.c:&lt;br /&gt;
&amp;lt;pre&amp;gt;/* &lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * RP6 ROBOT SYSTEM - RP6 CONTROL M32 Examples&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Example: RP6Control ArduIO&lt;br /&gt;
 * Author(s): Dirk&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Description:&lt;br /&gt;
 * In this example we show a second test for the ArduIO Board.&lt;br /&gt;
 * &lt;br /&gt;
 * ############################################################################&lt;br /&gt;
 * The Robot does NOT move in this example! You can simply put it on a table&lt;br /&gt;
 * next to your PC and you should connect it to the PC via the USB Interface!&lt;br /&gt;
 * ############################################################################&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Includes:&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6ControlLib.h&amp;quot; 				// The RP6 Control Library. &lt;br /&gt;
										// Always needs to be included!&lt;br /&gt;
#include &amp;quot;RP6I2CmasterTWI.h&amp;quot;			// Include the I2C-Bus Master Library&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Include our new &amp;quot;RP6_ArduIO library&amp;quot;:&lt;br /&gt;
// (This is the library for accessing the ArduIO Board!)&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6_ArduIOLib.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C Error handler&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function gets called automatically if there was an I2C Error like&lt;br /&gt;
 * the slave sent a &amp;quot;not acknowledge&amp;quot; (NACK, error codes e.g. 0x20 or 0x30).&lt;br /&gt;
 * The most common mistakes are: &lt;br /&gt;
 *   - using the wrong address for the slave&lt;br /&gt;
 *   - slave not active or not connected to the I2C-Bus&lt;br /&gt;
 *   - too fast requests for a slower slave&lt;br /&gt;
 * Be sure to check this if you get I2C errors!&lt;br /&gt;
 */&lt;br /&gt;
void I2C_transmissionError(uint8_t errorState)&lt;br /&gt;
{&lt;br /&gt;
	writeString_P(&amp;quot;\nI2C ERROR --&amp;gt; TWI STATE IS: 0x&amp;quot;);&lt;br /&gt;
	writeInteger(errorState, HEX);&lt;br /&gt;
	writeChar('\n');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Main function - The program starts here:&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	initRP6Control();	// Always call this first! The Processor will not&lt;br /&gt;
						// work correctly otherwise. &lt;br /&gt;
&lt;br /&gt;
	initLCD(); // Initialize the LC-Display (LCD)&lt;br /&gt;
			   // Always call this before using the LCD!&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b1111);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	writeString_P(&amp;quot;\n\nRP6Control ArduIO Test 2!\n&amp;quot;); &lt;br /&gt;
	writeString_P(&amp;quot;\nPLEASE ENSURE THAT NO PINS OF PLUG SV_H-BRIDGES ARE CONNECTED!!!\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// IMPORTANT:&lt;br /&gt;
	I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation&lt;br /&gt;
							// with 100kHz SCL Frequency&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// Register the event handler:&lt;br /&gt;
	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b1111);&lt;br /&gt;
&lt;br /&gt;
	// Write a text message to the LCD:&lt;br /&gt;
	showScreenLCD(&amp;quot;################&amp;quot;, &amp;quot;################&amp;quot;);&lt;br /&gt;
	mSleep(1500);&lt;br /&gt;
	showScreenLCD(&amp;quot; RP6Control M32&amp;quot;, &amp;quot;Example Program&amp;quot;);&lt;br /&gt;
	mSleep(2500); &lt;br /&gt;
	showScreenLCD(&amp;quot;  RP6 Ardu IO&amp;quot;,  &amp;quot;   Selftest 2&amp;quot;);&lt;br /&gt;
	mSleep(2500);&lt;br /&gt;
	clearLCD();&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	// ---------------------------------------&lt;br /&gt;
&lt;br /&gt;
	uint8_t duty_pct = 0;&lt;br /&gt;
&lt;br /&gt;
	startStopwatch1();&lt;br /&gt;
&lt;br /&gt;
	// IMPORTANT:&lt;br /&gt;
	arduio_init();								// ArduIO init!!!&lt;br /&gt;
&lt;br /&gt;
	writeString_P(&amp;quot;\n===&amp;gt; PRESS BUTTON 5 TO STOP THE DEMO!!! &amp;lt;===\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	while(true) &lt;br /&gt;
	{&lt;br /&gt;
		if(getStopwatch1() &amp;gt; 1000) // 1s&lt;br /&gt;
		{&lt;br /&gt;
			// PWM controller test:&lt;br /&gt;
			//   LEDs &amp;amp; free PWMs &amp;amp; power PWMs dim UP:&lt;br /&gt;
			writeString(&amp;quot;==&amp;gt; DIM Tests: &amp;quot;);&lt;br /&gt;
			writeInteger(duty_pct, DEC);&lt;br /&gt;
			writeString(&amp;quot; % Duty Cycle\n&amp;quot;);&lt;br /&gt;
			dimArduIOLED(1, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOLED(2, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOLED3(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOLED4(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPWM(1, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPWM(2, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPWM3(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPWM4(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM(1, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM(2, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM3(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM4(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM(5, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM(6, DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM7(DUTY_PCT(duty_pct));&lt;br /&gt;
			dimArduIOPowerPWM8(DUTY_PCT(duty_pct));&lt;br /&gt;
			duty_pct += 10;&lt;br /&gt;
			if (duty_pct &amp;gt; 100) {&lt;br /&gt;
				duty_pct = 0;&lt;br /&gt;
				writeString(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// ArduIO shutdown:&lt;br /&gt;
			uint8_t key = getPressedKeyNumber(); &lt;br /&gt;
			if (key == 5) {&lt;br /&gt;
				writeString(&amp;quot;\nPress button 1 for ArduIO SHUTDOWN&amp;quot;);&lt;br /&gt;
				writeString(&amp;quot;\nor button 2, 3 or 4 to continue!!!\n&amp;quot;);&lt;br /&gt;
				do {&lt;br /&gt;
					mSleep(10);&lt;br /&gt;
					key = getPressedKeyNumber();&lt;br /&gt;
				} while ((!key) || (key == 5));&lt;br /&gt;
				if (key == 1)  {&lt;br /&gt;
					writeString(&amp;quot;\nPlease wait for ArduIO SHUTDOWN...\n&amp;quot;);&lt;br /&gt;
					arduio_shutdown();&lt;br /&gt;
					mSleep(3000);&lt;br /&gt;
					writeString(&amp;quot;\nThe ArduIO now is in SHUTDOWN MODE!!!\n&amp;quot;);&lt;br /&gt;
					mSleep(1000);&lt;br /&gt;
					writeString(&amp;quot;\nRESET the microcontroller now...\n\n&amp;quot;);&lt;br /&gt;
					while(true) {};&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			setStopwatch1(0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		task_I2CTWI();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Erklärung======&lt;br /&gt;
&lt;br /&gt;
=====Demo 3=====&lt;br /&gt;
&lt;br /&gt;
Datei RP6Control_ArduIO_03.c:&lt;br /&gt;
&amp;lt;pre&amp;gt;/* &lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * RP6 ROBOT SYSTEM - RP6 CONTROL M32 Examples&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Example: RP6Control ArduIO&lt;br /&gt;
 * Author(s): Dirk&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 * Description:&lt;br /&gt;
 * In this example we show a third test for the ArduIO Board.&lt;br /&gt;
 * &lt;br /&gt;
 * ############################################################################&lt;br /&gt;
 * The Robot does NOT move in this example! You can simply put it on a table&lt;br /&gt;
 * next to your PC and you should connect it to the PC via the USB Interface!&lt;br /&gt;
 * ############################################################################&lt;br /&gt;
 * ****************************************************************************&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Includes:&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6ControlLib.h&amp;quot; 				// The RP6 Control Library. &lt;br /&gt;
										// Always needs to be included!&lt;br /&gt;
#include &amp;quot;RP6I2CmasterTWI.h&amp;quot;			// Include the I2C-Bus Master Library&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Include our new &amp;quot;RP6_ArduIO library&amp;quot;:&lt;br /&gt;
// (This is the library for accessing the ArduIO Board!)&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;RP6_ArduIOLib.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// I2C Error handler&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function gets called automatically if there was an I2C Error like&lt;br /&gt;
 * the slave sent a &amp;quot;not acknowledge&amp;quot; (NACK, error codes e.g. 0x20 or 0x30).&lt;br /&gt;
 * The most common mistakes are: &lt;br /&gt;
 *   - using the wrong address for the slave&lt;br /&gt;
 *   - slave not active or not connected to the I2C-Bus&lt;br /&gt;
 *   - too fast requests for a slower slave&lt;br /&gt;
 * Be sure to check this if you get I2C errors!&lt;br /&gt;
 */&lt;br /&gt;
void I2C_transmissionError(uint8_t errorState)&lt;br /&gt;
{&lt;br /&gt;
	writeString_P(&amp;quot;\nI2C ERROR --&amp;gt; TWI STATE IS: 0x&amp;quot;);&lt;br /&gt;
	writeInteger(errorState, HEX);&lt;br /&gt;
	writeChar('\n');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*****************************************************************************/&lt;br /&gt;
// Main function - The program starts here:&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
	initRP6Control();	// Always call this first! The Processor will not&lt;br /&gt;
						// work correctly otherwise. &lt;br /&gt;
&lt;br /&gt;
	initLCD(); // Initialize the LC-Display (LCD)&lt;br /&gt;
			   // Always call this before using the LCD!&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b1111);&lt;br /&gt;
	mSleep(500);&lt;br /&gt;
	setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	writeString_P(&amp;quot;\n\nRP6Control ArduIO Test 3!\n&amp;quot;);&lt;br /&gt;
	writeString_P(&amp;quot;\nYOU MAY WATCH THE RED &amp;amp; GREEN MOSFET-LEDS AND/OR&amp;quot;);&lt;br /&gt;
	writeString_P(&amp;quot;\nCONNECT  A DC-MOTOR TO THE PLUG  SV_H-BRIDGES!!!\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	// IMPORTANT:&lt;br /&gt;
	I2CTWI_initMaster(100); // Initialize the TWI Module for Master operation&lt;br /&gt;
							// with 100kHz SCL Frequency&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	// Register the event handler:&lt;br /&gt;
	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b1111);&lt;br /&gt;
&lt;br /&gt;
	// Write a text message to the LCD:&lt;br /&gt;
	showScreenLCD(&amp;quot;################&amp;quot;, &amp;quot;################&amp;quot;);&lt;br /&gt;
	mSleep(1500);&lt;br /&gt;
	showScreenLCD(&amp;quot; RP6Control M32&amp;quot;, &amp;quot;Example Program&amp;quot;);&lt;br /&gt;
	mSleep(2500); &lt;br /&gt;
	showScreenLCD(&amp;quot;  RP6 Ardu IO&amp;quot;,  &amp;quot;   Selftest 3&amp;quot;);&lt;br /&gt;
	mSleep(2500);&lt;br /&gt;
	clearLCD();&lt;br /&gt;
&lt;br /&gt;
	setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
	// ---------------------------------------&lt;br /&gt;
&lt;br /&gt;
	uint8_t duty_pct = 0;&lt;br /&gt;
	uint8_t cnt_sec = 0;&lt;br /&gt;
&lt;br /&gt;
	startStopwatch1();&lt;br /&gt;
&lt;br /&gt;
	// IMPORTANT:&lt;br /&gt;
	arduio_init();								// ArduIO init!!!&lt;br /&gt;
	enableHB1();								// Enable HB1!!!&lt;br /&gt;
	enableHB2();								// Enable HB2!!!&lt;br /&gt;
&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB1 OFF\n&amp;quot;);&lt;br /&gt;
	powerHB1OFF();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB1 FWD 10%\n&amp;quot;);&lt;br /&gt;
	powerHB1FWD(DUTY_PCT(10));&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB1 STOP\n&amp;quot;);&lt;br /&gt;
	powerHB1STOP();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB1 BWD 10%\n&amp;quot;);&lt;br /&gt;
	powerHB1BWD(DUTY_PCT(10));&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB1 BRK\n&amp;quot;);&lt;br /&gt;
	powerHB1BRK();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB1 OFF\n&amp;quot;);&lt;br /&gt;
	powerHB1OFF();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB2 OFF\n&amp;quot;);&lt;br /&gt;
	powerHB2OFF();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB2 FWD 10%\n&amp;quot;);&lt;br /&gt;
	powerHB2FWD(DUTY_PCT(10));&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB2 STOP\n&amp;quot;);&lt;br /&gt;
	powerHB2STOP();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB2 BWD 10%\n&amp;quot;);&lt;br /&gt;
	powerHB2BWD(DUTY_PCT(10));&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB2 BRK\n&amp;quot;);&lt;br /&gt;
	powerHB2BRK();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
	writeString(&amp;quot;Test -&amp;gt; HB2 OFF\n&amp;quot;);&lt;br /&gt;
	powerHB2OFF();&lt;br /&gt;
	mSleep(5000);&lt;br /&gt;
&lt;br /&gt;
	writeString_P(&amp;quot;\n===&amp;gt; PRESS BUTTON 5 TO STOP THE DEMO!!! &amp;lt;===\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	while(true) &lt;br /&gt;
	{&lt;br /&gt;
		if(getStopwatch1() &amp;gt; 1000) // 1s&lt;br /&gt;
		{&lt;br /&gt;
			// PWM controller test:&lt;br /&gt;
			//   H-Bridges:&lt;br /&gt;
			writeString(&amp;quot;==&amp;gt; HB1/2 DIM Tests: &amp;quot;);&lt;br /&gt;
			writeInteger(duty_pct, DEC);&lt;br /&gt;
			writeString(&amp;quot; % Duty Cycle&amp;quot;);&lt;br /&gt;
			if (cnt_sec &amp;lt; 22) {					// 2 cycles FWD&lt;br /&gt;
				writeString(&amp;quot; Dir: FWD\n&amp;quot;);&lt;br /&gt;
				powerHB1FWD(DUTY_PCT(duty_pct));&lt;br /&gt;
				powerHB2FWD(DUTY_PCT(duty_pct));&lt;br /&gt;
			}&lt;br /&gt;
			else {								// 2 cycles BWD&lt;br /&gt;
				writeString(&amp;quot; Dir: BWD\n&amp;quot;);&lt;br /&gt;
				powerHB1BWD(DUTY_PCT(duty_pct));&lt;br /&gt;
				powerHB2BWD(DUTY_PCT(duty_pct));&lt;br /&gt;
			}&lt;br /&gt;
			cnt_sec++;&lt;br /&gt;
			if (cnt_sec &amp;gt; 43) cnt_sec = 0;&lt;br /&gt;
			duty_pct += 10;&lt;br /&gt;
			if (duty_pct &amp;gt; 100) {&lt;br /&gt;
				duty_pct = 0;&lt;br /&gt;
				writeString(&amp;quot;\n&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			// ArduIO shutdown:&lt;br /&gt;
			uint8_t key = getPressedKeyNumber(); &lt;br /&gt;
			if (key == 5) {&lt;br /&gt;
				writeString(&amp;quot;\nPress button 1 for ArduIO SHUTDOWN&amp;quot;);&lt;br /&gt;
				writeString(&amp;quot;\nor button 2, 3 or 4 to continue!!!\n&amp;quot;);&lt;br /&gt;
				do {&lt;br /&gt;
					mSleep(10);&lt;br /&gt;
					key = getPressedKeyNumber();&lt;br /&gt;
				} while ((!key) || (key == 5));&lt;br /&gt;
				if (key == 1)  {&lt;br /&gt;
					writeString(&amp;quot;\nPlease wait for ArduIO SHUTDOWN...\n&amp;quot;);&lt;br /&gt;
					arduio_shutdown();&lt;br /&gt;
					mSleep(3000);&lt;br /&gt;
					writeString(&amp;quot;\nThe ArduIO now is in SHUTDOWN MODE!!!\n&amp;quot;);&lt;br /&gt;
					mSleep(1000);&lt;br /&gt;
					writeString(&amp;quot;\nRESET the microcontroller now...\n\n&amp;quot;);&lt;br /&gt;
					while(true) {};&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			setStopwatch1(0);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		task_I2CTWI();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
======Erklärung======&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RP6 BASE====&lt;br /&gt;
Die Demos für die RP6(v2) Base (und -wenn ihr wollt- auch eure eigenen Programme) nutzen die [[RP6_ArduIO_-_Software#ArduIO_Library|ArduIO Library]], s.o.!&lt;br /&gt;
&lt;br /&gt;
=====Config=====&lt;br /&gt;
Diese Datei enthält nur die Information, welches RP6-Mikrocontroller-System (RP6 Base, RP6 CONTROL M32, RP6 M256 WiFi) das ArduIO Board ansteuert. Sie gehört in den Projektordner.&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIOConfig.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/**&lt;br /&gt;
 * Settings for the RP6_ArduIO Library&lt;br /&gt;
 */ &lt;br /&gt;
&lt;br /&gt;
#ifndef RP6_ARDUIOCONFIG_H&lt;br /&gt;
#define RP6_ARDUIOCONFIG_H&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Define the target here: &lt;br /&gt;
 * (Use only ONE of them! Never two or three!) &lt;br /&gt;
 */ &lt;br /&gt;
#define ARDUIO_RP6BASE &lt;br /&gt;
//#define ARDUIO_RP6CONTROL&lt;br /&gt;
//#define ARDUIO_RP6M256WIFI&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
makefile (z.B. für Demo 1):&lt;br /&gt;
&amp;lt;pre&amp;gt;...&lt;br /&gt;
TARGET = RP6Base_ArduIO_01&lt;br /&gt;
...&lt;br /&gt;
SRC += $(RP6_LIB_PATH)/RP6common/RP6_ArduIOLib.c&lt;br /&gt;
...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Demos der M32 anpassen=====&lt;br /&gt;
Es ist einfach, die [[RP6_ArduIO_-_Software#RP6_CONTROL_M32|M32 Demos]] an die RP6 Base anzupassen. Die ArduIO Library braucht nicht verändert zu werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Anpassungen müssen gemacht werden:&lt;br /&gt;
 - #include &amp;quot;RP6ControlLib.h&amp;quot; ==&amp;gt; #include &amp;quot;RP6RobotBaseLib.h&amp;quot;&lt;br /&gt;
 - initRP6Control();          ==&amp;gt; initRobotBase();&lt;br /&gt;
 - initLCD();                 ==&amp;gt; LCD-Ausgaben komplett entfernen!&lt;br /&gt;
 -                            ==&amp;gt; powerON();&lt;br /&gt;
 - setLEDs(0b1111);           ==&amp;gt; setLEDs(0b111111);&lt;br /&gt;
 - getPressedKeyNumber()      ==&amp;gt; Tastenabfrage komplett entfernen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===RP6 CCPRO M128===&lt;br /&gt;
Für die CCPRO M128 soll es hier evtl. eine [[RP6_ArduIO_-_Software#ArduIO_Library_2|eigene ArduIO Library]] geben. Die nachfolgenden Demos nutzen diese Library.&lt;br /&gt;
&lt;br /&gt;
====ArduIO Library====&lt;br /&gt;
Schauen wir mal, ob es hier eine ArduIO Library für die CCPRO M128 geben wird. Das hängt sicher auch davon ab, ob einer der Nutzer das ArduIO Board mit der M128 betreiben will.&lt;br /&gt;
&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
&lt;br /&gt;
====Demo 1====&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
====Demo 2====&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
====Demo 3====&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Arduino UNO===&lt;br /&gt;
Das Ardu IO Projekt Board (= &amp;quot;ArduIO&amp;quot;) ist nicht nur eine RP6 Erweiterungsplatine, sondern auch ein '''Arduino Shield'''. Damit stellt die ArduIO eine Verbindung zwischen dem RP6-System und der &amp;quot;Arduino-Welt&amp;quot; dar. Als Arduino Shield kann die ArduIO auf eine '''[http://arduino.cc/en/pmwiki.php?n=Main/arduinoBoardUno Arduino UNO]''' Platine gesteckt werden, die dann alle Funktionen der ArduIO steuern kann. Weitere '''[http://arduino.cc/en/Main/ArduinoShields Arduino Shields]''' können wiederum auf die ArduIO gesteckt werden. Die Verbindung zum [[RP6|RP6-System]] kann dann über die XBUS- und [[RP6#USRBUS|USRBUS]]-Stecker der ArduIO erfolgen.&lt;br /&gt;
&lt;br /&gt;
====ArduIO Library====&lt;br /&gt;
Hier findet ihr die neue [http://www.arduino.cc/ Arduino] Library für das [[RP6_ArduIO|ArduIO Board]].&lt;br /&gt;
&lt;br /&gt;
Die Library für das Ardu IO Projekt Board (= &amp;quot;ArduIO&amp;quot;) geht von folgenden Voraussetzungen aus:&lt;br /&gt;
* Ein [http://arduino.cc/en/Main/ArduinoBoardUno Arduino UNO Board] wird für die Ansteuerung der ArduIO benutzt.&lt;br /&gt;
* Der Arduino UNO ist der I2C-Bus Master.&lt;br /&gt;
* Die I2C-Bus Geschwindigkeit beträgt 100 kHz.&lt;br /&gt;
* Alle Hardware-Komponenten der ArduIO sind aufgebaut (1).&lt;br /&gt;
* Alle Jumper auf der ArduIO sind in ihrer Standardstellung (2).&lt;br /&gt;
* Die ArduIO ist auf das Arduino UNO Board aufgesteckt.&lt;br /&gt;
&lt;br /&gt;
 Zu (1): Wenn nicht alle Komponenten aufgebaut sind, sind die zugehörigen&lt;br /&gt;
         Funktionen natürlich nicht funktionsfähig und können nicht benutzt&lt;br /&gt;
         werden.&lt;br /&gt;
 Zu (2): Siehe folgende Abbildung!&lt;br /&gt;
&lt;br /&gt;
'''Standard-Jumperstellung'''&lt;br /&gt;
&lt;br /&gt;
[[Bild:ArduIO_JPdef_2.png|ArduIO Jumper Standardstellung]]&lt;br /&gt;
''Hinweis: Die Jumper sind orange eingezeichnet!''&lt;br /&gt;
&lt;br /&gt;
''Die Jumper der Stromversorgung (S1, JP_5V, JP_UB, JP_LOAD, JP_5V_ARD, JP_3V3_ARD, JP_UBAT_ARD) wurden nicht berücksichtigt!''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die '''Library''' (Software-Bibliothek) besteht aus drei (optional vier) Teilen:&lt;br /&gt;
* Dem [[RP6_ArduIO_-_Software#Library_Header_2|Library Header]] -&amp;gt; Hier gibt es Definitionen, Variablen- und Funktionsdeklarationen für die Library.&lt;br /&gt;
* Der [[RP6_ArduIO_-_Software#Library_Source_2|Library Source]] -&amp;gt; Das ist die eigentliche Library.&lt;br /&gt;
* Der Datei [[RP6_ArduIO_-_Software#Library_Keywords|keywords.txt]] -&amp;gt; Hier stehen alle Bezeichnungen, die im Editor der Arduino IDE markiert (farblich hervorgehoben) werden.&lt;br /&gt;
* Dem optional einzubindenden [[RP6_ArduIO_-_Software#Definitionen_Header|Definitionen Header]] -&amp;gt; Hier befinden sich ergänzende Definitionen, deren Benutzung nicht erforderlich ist, aber evtl. das eigene Programm besser lesbar macht. &lt;br /&gt;
Die Dateien dieser Arduino Library gehören ins Verzeichnis '''/.../libraries/RP6_ArduIO/'''.&lt;br /&gt;
&lt;br /&gt;
=====Library Header=====&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                                               ___   ___                   */&lt;br /&gt;
/*                 _______________________      /   \ /   \                  */&lt;br /&gt;
/*                 \| RP6  ROBOT SYSTEM |/     (  -  X  +  )                 */&lt;br /&gt;
/*                  \_-_-_-_-_-_-_-_-_-_/       \___/ \___/                  */&lt;br /&gt;
/*                                                ARDUINO                    */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*------------------------------ [c]2014 - Dirk -----------------------------*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Target:    Arduino UNO with RP6 ArduIO Board (Shield)&lt;br /&gt;
 ~ Library:   RP6_ArduIO Header&lt;br /&gt;
 ~ Version:   1.0&lt;br /&gt;
 ~ Author(s): Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Description:&lt;br /&gt;
 ~ This is the RP6_ArduIO Library header file.&lt;br /&gt;
 ~ You have to include this file, if you want to use the library&lt;br /&gt;
 ~ RP6_ArduIO.cpp in your own projects.&lt;br /&gt;
 */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
#ifndef __RP6_ARDUIO_H__&lt;br /&gt;
#define __RP6_ARDUIO_H__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO hardwired components:&lt;br /&gt;
// - I2C PWM Controller (IC3: PCA9685)&lt;br /&gt;
// - I2C I/O Expander 1 5V (IC8: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 2 5V (IC13: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 3 3V3 (IC12: PCA9535)&lt;br /&gt;
// - I2C A/D and D/A Converter 1 (IC11: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 2 (IC10: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 3 (IC9: PCF8591)&lt;br /&gt;
// - UB Voltage Sensor&lt;br /&gt;
// - LEDs&lt;br /&gt;
// - PWM Ports&lt;br /&gt;
// - Power PWM Ports &amp;amp; H-Bridges&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Includes:&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Define the RP6_ArduIO class and public section:&lt;br /&gt;
class RP6_ArduIO {&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
&lt;br /&gt;
RP6_ArduIO();&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C PWM Controller (PCA9685):&lt;br /&gt;
// (A5, A4, A3 always 0, A1 always 1!)&lt;br /&gt;
#define I2C_ARDUIO_PWM_ADR		0x42	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR		0x43	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR		0x46	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR		0x47	// A2/0 = 1/1&lt;br /&gt;
//#define I2C_ARDUIO_PWM_ADR		0x70	// ALLCALLADR&lt;br /&gt;
&lt;br /&gt;
// -------------------------------------------------------&lt;br /&gt;
#define PWM_FREQUENCY			1000	// 1kHz (default)&lt;br /&gt;
// -------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#define CHALL_LED			0	// All LEDs (channels)&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C I/O Expander (PCA9535):&lt;br /&gt;
// (A1 always 1!)&lt;br /&gt;
#define I2C_ARDUIO_IO_1_ADR		0x22	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_1_ADR		0x23	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_IO_1_ADR		0x26	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_1_ADR		0x27	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_IO_2_ADR		0x22	// A2/0 = 0/0&lt;br /&gt;
#define I2C_ARDUIO_IO_2_ADR		0x23	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_IO_2_ADR		0x26	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_2_ADR		0x27	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_IO_3_ADR		0x22	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_3_ADR		0x23	// A2/0 = 0/1&lt;br /&gt;
#define I2C_ARDUIO_IO_3_ADR		0x26	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_IO_3_ADR		0x27	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591):&lt;br /&gt;
// (A1 always 1!)&lt;br /&gt;
#define I2C_ARDUIO_AD_1_ADR		0x4a	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_1_ADR		0x4b	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_AD_1_ADR		0x4e	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_1_ADR		0x4f	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_AD_2_ADR		0x4a	// A2/0 = 0/0&lt;br /&gt;
#define I2C_ARDUIO_AD_2_ADR		0x4b	// A2/0 = 0/1&lt;br /&gt;
//#define I2C_ARDUIO_AD_2_ADR		0x4e	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_2_ADR		0x4f	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
//#define I2C_ARDUIO_AD_3_ADR		0x4a	// A2/0 = 0/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_3_ADR		0x4b	// A2/0 = 0/1&lt;br /&gt;
#define I2C_ARDUIO_AD_3_ADR		0x4e	// A2/0 = 1/0&lt;br /&gt;
//#define I2C_ARDUIO_AD_3_ADR		0x4f	// A2/0 = 1/1&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// UB Voltage Sensor:&lt;br /&gt;
// (Connected to A/D and D/A Converter 1 (ADDA_1: IC11), AIN3 (AD13),&lt;br /&gt;
//  if jumper JP_AD-UB on the ArduIO Board is CLOSED!)&lt;br /&gt;
#define ADCVAL_UB_LOW			175	// UB 6.9V&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// LEDs:&lt;br /&gt;
// (Status LED1..LED4 are connected to LED11..LED8 of the PCA9685!)&lt;br /&gt;
#define CHLED1				12&lt;br /&gt;
#define CHLED2				11&lt;br /&gt;
#define CHLED3				10&lt;br /&gt;
#define CHLED4				9&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// PWM Ports:&lt;br /&gt;
// (Ports PWM1..PWM4 are connected to LED15..LED12 of the PCA9685!)&lt;br /&gt;
#define CHPWM1				16&lt;br /&gt;
#define CHPWM2				15&lt;br /&gt;
#define CHPWM3				14&lt;br /&gt;
#define CHPWM4				13&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
// (H-Bridges HB1/HB2 are connected to LED0..LED3/LED4..LED7 of the PCA9685!)&lt;br /&gt;
// Power PWM Ports:&lt;br /&gt;
#define CHPOWERPWM1_P			1&lt;br /&gt;
#define CHPOWERPWM2_N			2&lt;br /&gt;
#define CHPOWERPWM3_P			3&lt;br /&gt;
#define CHPOWERPWM4_N			4&lt;br /&gt;
#define CHPOWERPWM5_P			5&lt;br /&gt;
#define CHPOWERPWM6_N			6&lt;br /&gt;
#define CHPOWERPWM7_P			7&lt;br /&gt;
#define CHPOWERPWM8_N			8&lt;br /&gt;
&lt;br /&gt;
// H-Bridges:&lt;br /&gt;
#define CHHB1_P1			1&lt;br /&gt;
#define CHHB1_N1			2&lt;br /&gt;
#define CHHB1_P2			3&lt;br /&gt;
#define CHHB1_N2			4&lt;br /&gt;
#define CHHB2_P1			5&lt;br /&gt;
#define CHHB2_N1			6&lt;br /&gt;
#define CHHB2_P2			7&lt;br /&gt;
#define CHHB2_N2			8&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Arduino Uno Expander definitions:&lt;br /&gt;
// ATTENTION: Using this library you MAY NOT connect a RP6 System Board (RP6&lt;br /&gt;
//            Base, CONTROL M32, M256 WiFi) to the RP6 ArduIO Board using the&lt;br /&gt;
//            RP6 XBUS plug on the ArduIO Board, if the RP6 System Board is&lt;br /&gt;
//            the I2C bus master!!!&lt;br /&gt;
//            BE VERY CAREFUL:&lt;br /&gt;
//            You may damage the Arduino Uno AND your RP6 ArduIO Board!&lt;br /&gt;
//&lt;br /&gt;
//            Of course you may connect Arduino ADDON boards (shields) to the&lt;br /&gt;
//            Arduino Uno Expander pin headers on the ArduIO Board.&lt;br /&gt;
//            BE VERY CAREFUL:&lt;br /&gt;
//            Not all Arduino shields will work on the RP6 ArduIO Board!  &lt;br /&gt;
//            You may damage the Arduino shield AND your RP6 ArduIO Board!&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Arduino Uno Expander &amp;lt;-&amp;gt; RP6_ArduIO Mapping Table:&lt;br /&gt;
//   Arduino Uno:  ATmega328:              RP6_ArduIO:&lt;br /&gt;
//   Pin Function  Pin  Functions          Pin   Name  IO ADDA&lt;br /&gt;
//  -----------------------------------------------------------&lt;br /&gt;
//    0  D0  RX    PD0  RXD_PCINT16        P00   GP200  2&lt;br /&gt;
//    1  D1  TX    PD1  TXD_PCINT17        P01   GP201  2&lt;br /&gt;
//    2  D2        PD2  INT0_PCINT18       P02   GP202  2&lt;br /&gt;
//    3  D3  PWM   PD3  INT1_OC2B_PCINT19  P03   GP203  2&lt;br /&gt;
//    4  D4        PD4  T0_XCK_PCINT20     P04   GP204  2&lt;br /&gt;
//    5  D5  PWM   PD5  T1_OC0B_PCINT21    P05   GP205  2&lt;br /&gt;
//    6  D6  PWM   PD6  AIN0_OC0A_PCINT22  P06   GP206  2&lt;br /&gt;
//    7  D7        PD7  AIN1_PCINT23       P07   GP207  2&lt;br /&gt;
//    8  D8        PB0  ICP1_CLKO_PCINT0   P15   GP215  2&lt;br /&gt;
//    9  D9  PWM   PB1  OC1A_PCINT1        P14   GP214  2&lt;br /&gt;
//   10  D10 PWM   PB2  SS_OC1B_PCINT2     P13   GP213  2&lt;br /&gt;
//   11  D11 PWM   PB3  MOSI_OC2A_PCINT13  P12   GP212  2&lt;br /&gt;
//   12  D12       PB4  MISO_PCINT4        P11   GP211  2&lt;br /&gt;
//   13  D13       PB5  SCK_PCINT5         P10   GP210  2&lt;br /&gt;
//&lt;br /&gt;
//    0  A0        PC0  ADC0_PCINT8        AIN0  AD30      3&lt;br /&gt;
//    1  A1        PC1  ADC1_PCINT9        AIN1  AD31      3&lt;br /&gt;
//    2  A2        PC2  ADC2_PCINT10       AIN2  AD32      3&lt;br /&gt;
//    3  A3        PC3  ADC3_PCINT11       AIN3  AD33      3&lt;br /&gt;
//    4  A4  SDA   PC4  ADC4_SDA_PCINT12         SDA&lt;br /&gt;
//    5  A5  SCL   PC5  ADC5_SCL_PCINT13         SCL&lt;br /&gt;
&lt;br /&gt;
// Arduino Uno Expander ATmega 328 portpin names:&lt;br /&gt;
#define IO_ARD_D0_RXD_PCINT16		0&lt;br /&gt;
#define IO_ARD_D1_TXD_PCINT17		1&lt;br /&gt;
#define IO_ARD_D2_INT0_PCINT18		2&lt;br /&gt;
#define IO_ARD_D3_INT1_OC2B_PCINT19	3&lt;br /&gt;
#define IO_ARD_D4_T0_XCK_PCINT20	4&lt;br /&gt;
#define IO_ARD_D5_T1_OC0B_PCINT21	5&lt;br /&gt;
#define IO_ARD_D6_AIN0_OC0A_PCINT22	6&lt;br /&gt;
#define IO_ARD_D7_AIN1_PCINT23		7&lt;br /&gt;
#define IO_ARD_D8_ICP1_CLKO_PCINT0	8&lt;br /&gt;
#define IO_ARD_D9_OC1A_PCINT1		9&lt;br /&gt;
#define IO_ARD_D10_SS_OC1B_PCINT2	10&lt;br /&gt;
#define IO_ARD_D11_MOSI_OC2A_PCINT13	11&lt;br /&gt;
#define IO_ARD_D12_MISO_PCINT4		12&lt;br /&gt;
#define IO_ARD_D13_SCK_PCINT5		13&lt;br /&gt;
&lt;br /&gt;
#define AD_ARD_A0_ADC0_PCINT8		0&lt;br /&gt;
#define AD_ARD_A1_ADC1_PCINT9		1&lt;br /&gt;
#define AD_ARD_A2_ADC2_PCINT10		2&lt;br /&gt;
#define AD_ARD_A3_ADC3_PCINT11		3&lt;br /&gt;
#define AD_ARD_A4_ADC4_SDA_PCINT12	4&lt;br /&gt;
#define AD_ARD_A5_ADC5_SCL_PCINT13	5&lt;br /&gt;
&lt;br /&gt;
// Arduino Uno Expander portpin short definitions:&lt;br /&gt;
#define IO_ARD_D0_RX			0&lt;br /&gt;
#define IO_ARD_D1_TX			1&lt;br /&gt;
#define IO_ARD_D2			2&lt;br /&gt;
#define IO_ARD_D3_PWM			3&lt;br /&gt;
#define IO_ARD_D4			4&lt;br /&gt;
#define IO_ARD_D5_PWM			5&lt;br /&gt;
#define IO_ARD_D6_PWM			6&lt;br /&gt;
#define IO_ARD_D7			7&lt;br /&gt;
#define IO_ARD_D8			8&lt;br /&gt;
#define IO_ARD_D9_PWM			9&lt;br /&gt;
#define IO_ARD_D10_PWM			10&lt;br /&gt;
#define IO_ARD_D11_PWM			11&lt;br /&gt;
#define IO_ARD_D12			12&lt;br /&gt;
#define IO_ARD_D13			13&lt;br /&gt;
&lt;br /&gt;
#define AD_ARD_A0			0&lt;br /&gt;
#define AD_ARD_A1			1&lt;br /&gt;
#define AD_ARD_A2			2&lt;br /&gt;
#define AD_ARD_A3			3&lt;br /&gt;
#define AD_ARD_A4_SDA			4&lt;br /&gt;
#define AD_ARD_A5_SCL			5&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Status:&lt;br /&gt;
&lt;br /&gt;
#define DISABLE_ON_SHUTDOWN		// Disable access to PPWM, PWM, Out&lt;br /&gt;
					// &amp;amp; DAC ports in SHUTDOWN mode&lt;br /&gt;
					// (default)!&lt;br /&gt;
&lt;br /&gt;
// The ArduIO status bits with access settings &amp;amp; UB voltage low flag:&lt;br /&gt;
typedef union status_t {&lt;br /&gt;
  byte bits;&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned ubatLow       :1;	// UB voltage low&lt;br /&gt;
      unsigned hb1Enable     :1;	// H-Bridge 1 (HB1) enable&lt;br /&gt;
      unsigned hb2Enable     :1;	// H-Bridge 2 (HB2) enable&lt;br /&gt;
      unsigned ppwm_g1Enable :1;	// Power PWM group 1 (PPWM1..4) enable&lt;br /&gt;
      unsigned ppwm_g2Enable :1;	// Power PWM group 2 (PPWM5..8) enable&lt;br /&gt;
      unsigned pwmsEnable    :1;	// Free PWMs (PWM1..4) enable&lt;br /&gt;
      unsigned outsEnable    :1;	// IO_1..3 IOs enable as outputs&lt;br /&gt;
      unsigned dasEnable     :1;	// ADDA_1..3 DACs enable&lt;br /&gt;
    };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
status_t status;  // ArduIO status bits (read only)&lt;br /&gt;
&lt;br /&gt;
// Functions:&lt;br /&gt;
void enableHB(byte);&lt;br /&gt;
void disableHB(byte);&lt;br /&gt;
void enablePPWM_G(byte);&lt;br /&gt;
void disablePPWM_G(byte);&lt;br /&gt;
void enablePWMs(void);&lt;br /&gt;
void disablePWMs(void);&lt;br /&gt;
void enableOuts(void);&lt;br /&gt;
void disableOuts(void);&lt;br /&gt;
void enableDAs(void);&lt;br /&gt;
void disableDAs(void);&lt;br /&gt;
#define setArduIODefaultStatus() {enablePPWM_G(1);enablePPWM_G(2); \&lt;br /&gt;
 enablePWMs();enableOuts();enableDAs();}&lt;br /&gt;
#define setArduIOShutdownStatus() {disableHB(1);disableHB(2); \&lt;br /&gt;
 disablePPWM_G(1);disablePPWM_G(2);disablePWMs();disableOuts();disableDAs();}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C PWM Controller (PCA9685):&lt;br /&gt;
&lt;br /&gt;
// Registers:&lt;br /&gt;
#define PCA9685_MODE1			0&lt;br /&gt;
#define PCA9685_MODE2			1&lt;br /&gt;
#define PCA9685_SUBADR1			2&lt;br /&gt;
#define PCA9685_SUBADR2			3&lt;br /&gt;
#define PCA9685_SUBADR3			4&lt;br /&gt;
#define PCA9685_ALLCALLADR		5&lt;br /&gt;
#define PCA9685_LED0_ON_L		6&lt;br /&gt;
#define PCA9685_LED0_ON_H		7&lt;br /&gt;
#define PCA9685_LED0_OFF_L		8&lt;br /&gt;
#define PCA9685_LED0_OFF_H		9&lt;br /&gt;
#define PCA9685_LED1_ON_L		10&lt;br /&gt;
#define PCA9685_LED1_ON_H		11&lt;br /&gt;
#define PCA9685_LED1_OFF_L		12&lt;br /&gt;
#define PCA9685_LED1_OFF_H		13&lt;br /&gt;
#define PCA9685_LED2_ON_L		14&lt;br /&gt;
#define PCA9685_LED2_ON_H		15&lt;br /&gt;
#define PCA9685_LED2_OFF_L		16&lt;br /&gt;
#define PCA9685_LED2_OFF_H		17&lt;br /&gt;
#define PCA9685_LED3_ON_L		18&lt;br /&gt;
#define PCA9685_LED3_ON_H		19&lt;br /&gt;
#define PCA9685_LED3_OFF_L		20&lt;br /&gt;
#define PCA9685_LED3_OFF_H		21&lt;br /&gt;
#define PCA9685_LED4_ON_L		22&lt;br /&gt;
#define PCA9685_LED4_ON_H		23&lt;br /&gt;
#define PCA9685_LED4_OFF_L		24&lt;br /&gt;
#define PCA9685_LED4_OFF_H		25&lt;br /&gt;
#define PCA9685_LED5_ON_L		26&lt;br /&gt;
#define PCA9685_LED5_ON_H		27&lt;br /&gt;
#define PCA9685_LED5_OFF_L		28&lt;br /&gt;
#define PCA9685_LED5_OFF_H		29&lt;br /&gt;
#define PCA9685_LED6_ON_L		30&lt;br /&gt;
#define PCA9685_LED6_ON_H		31&lt;br /&gt;
#define PCA9685_LED6_OFF_L		32&lt;br /&gt;
#define PCA9685_LED6_OFF_H		33&lt;br /&gt;
#define PCA9685_LED7_ON_L		34&lt;br /&gt;
#define PCA9685_LED7_ON_H		35&lt;br /&gt;
#define PCA9685_LED7_OFF_L		36&lt;br /&gt;
#define PCA9685_LED7_OFF_H		37&lt;br /&gt;
#define PCA9685_LED8_ON_L		38&lt;br /&gt;
#define PCA9685_LED8_ON_H		39&lt;br /&gt;
#define PCA9685_LED8_OFF_L		40&lt;br /&gt;
#define PCA9685_LED8_OFF_H		41&lt;br /&gt;
#define PCA9685_LED9_ON_L		42&lt;br /&gt;
#define PCA9685_LED9_ON_H		43&lt;br /&gt;
#define PCA9685_LED9_OFF_L		44&lt;br /&gt;
#define PCA9685_LED9_OFF_H		45&lt;br /&gt;
#define PCA9685_LED10_ON_L		46&lt;br /&gt;
#define PCA9685_LED10_ON_H		47&lt;br /&gt;
#define PCA9685_LED10_OFF_L		48&lt;br /&gt;
#define PCA9685_LED10_OFF_H		49&lt;br /&gt;
#define PCA9685_LED11_ON_L		50&lt;br /&gt;
#define PCA9685_LED11_ON_H		51&lt;br /&gt;
#define PCA9685_LED11_OFF_L		52&lt;br /&gt;
#define PCA9685_LED11_OFF_H		53&lt;br /&gt;
#define PCA9685_LED12_ON_L		54&lt;br /&gt;
#define PCA9685_LED12_ON_H		55&lt;br /&gt;
#define PCA9685_LED12_OFF_L		56&lt;br /&gt;
#define PCA9685_LED12_OFF_H		57&lt;br /&gt;
#define PCA9685_LED13_ON_L		58&lt;br /&gt;
#define PCA9685_LED13_ON_H		59&lt;br /&gt;
#define PCA9685_LED13_OFF_L		60&lt;br /&gt;
#define PCA9685_LED13_OFF_H		61&lt;br /&gt;
#define PCA9685_LED14_ON_L		62&lt;br /&gt;
#define PCA9685_LED14_ON_H		63&lt;br /&gt;
#define PCA9685_LED14_OFF_L		64&lt;br /&gt;
#define PCA9685_LED14_OFF_H		65&lt;br /&gt;
#define PCA9685_LED15_ON_L		66&lt;br /&gt;
#define PCA9685_LED15_ON_H		67&lt;br /&gt;
#define PCA9685_LED15_OFF_L		68&lt;br /&gt;
#define PCA9685_LED15_OFF_H		69&lt;br /&gt;
#define PCA9685_ALL_LED_ON_L		250&lt;br /&gt;
#define PCA9685_ALL_LED_ON_H		251&lt;br /&gt;
#define PCA9685_ALL_LED_OFF_L		252&lt;br /&gt;
#define PCA9685_ALL_LED_OFF_H		253&lt;br /&gt;
#define PCA9685_PRE_SCALE		254&lt;br /&gt;
#define PCA9685_TESTMODE		255&lt;br /&gt;
&lt;br /&gt;
// Mode1 register bitmasks:&lt;br /&gt;
#define PCA9685_MODE1_DEFAULT		17&lt;br /&gt;
#define PCA9685_MODE1_ALLCALL		1&lt;br /&gt;
#define PCA9685_MODE1_SUB3		2&lt;br /&gt;
#define PCA9685_MODE1_SUB2		4&lt;br /&gt;
#define PCA9685_MODE1_SUB1		8&lt;br /&gt;
#define PCA9685_MODE1_SLEEP		16&lt;br /&gt;
#define PCA9685_MODE1_AI		32&lt;br /&gt;
#define PCA9685_MODE1_EXTCLK		64&lt;br /&gt;
#define PCA9685_MODE1_RESTART		128&lt;br /&gt;
&lt;br /&gt;
// Mode2 register bitmasks:&lt;br /&gt;
#define PCA9685_MODE2_DEFAULT		4		// Totem poles (default)&lt;br /&gt;
#define PCA9685_MODE2_ARDUIO		16		// Inverted open-drains&lt;br /&gt;
#define PCA9685_MODE2_OUTDRV		4&lt;br /&gt;
#define PCA9685_MODE2_OCH		8&lt;br /&gt;
#define PCA9685_MODE2_INVRT		16&lt;br /&gt;
&lt;br /&gt;
#define F_PCA9685			25000000.0	// Int. Clock: 25 MHz&lt;br /&gt;
&lt;br /&gt;
void PCA9685_init(unsigned int);&lt;br /&gt;
void PCA9685_set(byte, unsigned int);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C I/O Expander (PCA9535):&lt;br /&gt;
&lt;br /&gt;
// Registers:&lt;br /&gt;
#define PCA9535_INPUT_P0		0&lt;br /&gt;
#define PCA9535_INPUT_P1		1&lt;br /&gt;
#define PCA9535_OUTPUT_P0		2&lt;br /&gt;
#define PCA9535_OUTPUT_P1		3&lt;br /&gt;
#define PCA9535_POL_INV_P0		4&lt;br /&gt;
#define PCA9535_POL_INV_P1		5&lt;br /&gt;
#define PCA9535_CONFIG_P0		6&lt;br /&gt;
#define PCA9535_CONFIG_P1		7&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander 1 5V (IC8: PCA9535):&lt;br /&gt;
#define IO_1				1&lt;br /&gt;
typedef union {&lt;br /&gt;
  unsigned int port;&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned P00:1;				// P00&lt;br /&gt;
      unsigned P01:1;				// P01&lt;br /&gt;
      unsigned P02:1;				// P02&lt;br /&gt;
      unsigned P03:1;				// P03&lt;br /&gt;
      unsigned P04:1;				// P04&lt;br /&gt;
      unsigned P05:1;				// P05&lt;br /&gt;
      unsigned P06:1;				// P06&lt;br /&gt;
      unsigned P07:1;				// P07&lt;br /&gt;
      unsigned P10:1;				// P10&lt;br /&gt;
      unsigned P11:1;				// P11&lt;br /&gt;
      unsigned P12:1;				// P12&lt;br /&gt;
      unsigned P13:1;				// P13&lt;br /&gt;
      unsigned P14:1;				// P14&lt;br /&gt;
      unsigned P15:1;				// P15&lt;br /&gt;
      unsigned P16:1;				// P16&lt;br /&gt;
      unsigned P17:1;				// P17&lt;br /&gt;
    };&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned GP100:1;				// IO_1: P00&lt;br /&gt;
      unsigned GP101:1;				// IO_1: P01&lt;br /&gt;
      unsigned GP102:1;				// IO_1: P02&lt;br /&gt;
      unsigned GP103:1;				// IO_1: P03&lt;br /&gt;
      unsigned GP104:1;				// IO_1: P04&lt;br /&gt;
      unsigned GP105:1;				// IO_1: P05&lt;br /&gt;
      unsigned GP106:1;				// IO_1: P06&lt;br /&gt;
      unsigned GP107:1;				// IO_1: P07&lt;br /&gt;
      unsigned GP110:1;				// IO_1: P10&lt;br /&gt;
      unsigned GP111:1;				// IO_1: P11&lt;br /&gt;
      unsigned GP112:1;				// IO_1: P12&lt;br /&gt;
      unsigned GP113:1;				// IO_1: P13&lt;br /&gt;
      unsigned GP114:1;				// IO_1: P14&lt;br /&gt;
      unsigned GP115:1;				// IO_1: P15&lt;br /&gt;
      unsigned GP116:1;				// IO_1: P16&lt;br /&gt;
      unsigned GP117:1;				// IO_1: P17&lt;br /&gt;
    };&lt;br /&gt;
} ioexp_1_t;&lt;br /&gt;
&lt;br /&gt;
ioexp_1_t io1config;&lt;br /&gt;
ioexp_1_t io1invrt;&lt;br /&gt;
ioexp_1_t io1ins;&lt;br /&gt;
ioexp_1_t io1outs;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander 2 5V (IC13: PCA9535):&lt;br /&gt;
#define IO_2				2&lt;br /&gt;
typedef union {&lt;br /&gt;
  unsigned int port;&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned P00:1;				// P00&lt;br /&gt;
      unsigned P01:1;				// P01&lt;br /&gt;
      unsigned P02:1;				// P02&lt;br /&gt;
      unsigned P03:1;				// P03&lt;br /&gt;
      unsigned P04:1;				// P04&lt;br /&gt;
      unsigned P05:1;				// P05&lt;br /&gt;
      unsigned P06:1;				// P06&lt;br /&gt;
      unsigned P07:1;				// P07&lt;br /&gt;
      unsigned P10:1;				// P10&lt;br /&gt;
      unsigned P11:1;				// P11&lt;br /&gt;
      unsigned P12:1;				// P12&lt;br /&gt;
      unsigned P13:1;				// P13&lt;br /&gt;
      unsigned P14:1;				// P14&lt;br /&gt;
      unsigned P15:1;				// P15&lt;br /&gt;
      unsigned P16:1;				// P16&lt;br /&gt;
      unsigned P17:1;				// P17&lt;br /&gt;
    };&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned GP200:1;				// IO_2: P00&lt;br /&gt;
      unsigned GP201:1;				// IO_2: P01&lt;br /&gt;
      unsigned GP202:1;				// IO_2: P02&lt;br /&gt;
      unsigned GP203:1;				// IO_2: P03&lt;br /&gt;
      unsigned GP204:1;				// IO_2: P04&lt;br /&gt;
      unsigned GP205:1;				// IO_2: P05&lt;br /&gt;
      unsigned GP206:1;				// IO_2: P06&lt;br /&gt;
      unsigned GP207:1;				// IO_2: P07&lt;br /&gt;
      unsigned GP210:1;				// IO_2: P10&lt;br /&gt;
      unsigned GP211:1;				// IO_2: P11&lt;br /&gt;
      unsigned GP212:1;				// IO_2: P12&lt;br /&gt;
      unsigned GP213:1;				// IO_2: P13&lt;br /&gt;
      unsigned GP214:1;				// IO_2: P14&lt;br /&gt;
      unsigned GP215:1;				// IO_2: P15&lt;br /&gt;
      unsigned GP216:1;				// IO_2: P16&lt;br /&gt;
      unsigned GP217:1;				// IO_2: P17&lt;br /&gt;
    };&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned ARD_D0:1;			// ARD: D0&lt;br /&gt;
      unsigned ARD_D1:1;			// ARD: D1&lt;br /&gt;
      unsigned ARD_D2:1;			// ARD: D2&lt;br /&gt;
      unsigned ARD_D3:1;			// ARD: D3&lt;br /&gt;
      unsigned ARD_D4:1;			// ARD: D4&lt;br /&gt;
      unsigned ARD_D5:1;			// ARD: D5&lt;br /&gt;
      unsigned ARD_D6:1;			// ARD: D6&lt;br /&gt;
      unsigned ARD_D7:1;			// ARD: D7&lt;br /&gt;
      unsigned ARD_D13:1;			// ARD: D13&lt;br /&gt;
      unsigned ARD_D12:1;			// ARD: D12&lt;br /&gt;
      unsigned ARD_D11:1;			// ARD: D11&lt;br /&gt;
      unsigned ARD_D10:1;			// ARD: D10&lt;br /&gt;
      unsigned ARD_D9:1;			// ARD: D9&lt;br /&gt;
      unsigned ARD_D8:1;			// ARD: D8&lt;br /&gt;
      unsigned unusedGP216:1;			// unused&lt;br /&gt;
      unsigned unusedGP217:1;			// unused&lt;br /&gt;
   };&lt;br /&gt;
} ioexp_2_t;&lt;br /&gt;
&lt;br /&gt;
ioexp_2_t io2config;&lt;br /&gt;
ioexp_2_t io2invrt;&lt;br /&gt;
ioexp_2_t io2ins;&lt;br /&gt;
ioexp_2_t io2outs;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander 3 3V3 (IC12: PCA9535):&lt;br /&gt;
#define IO_3				3&lt;br /&gt;
typedef union {&lt;br /&gt;
  unsigned int port;&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned P00:1;				// P00&lt;br /&gt;
      unsigned P01:1;				// P01&lt;br /&gt;
      unsigned P02:1;				// P02&lt;br /&gt;
      unsigned P03:1;				// P03&lt;br /&gt;
      unsigned P04:1;				// P04&lt;br /&gt;
      unsigned P05:1;				// P05&lt;br /&gt;
      unsigned P06:1;				// P06&lt;br /&gt;
      unsigned P07:1;				// P07&lt;br /&gt;
      unsigned P10:1;				// P10&lt;br /&gt;
      unsigned P11:1;				// P11&lt;br /&gt;
      unsigned P12:1;				// P12&lt;br /&gt;
      unsigned P13:1;				// P13&lt;br /&gt;
      unsigned P14:1;				// P14&lt;br /&gt;
      unsigned P15:1;				// P15&lt;br /&gt;
      unsigned P16:1;				// P16&lt;br /&gt;
      unsigned P17:1;				// P17&lt;br /&gt;
    };&lt;br /&gt;
    struct {&lt;br /&gt;
      unsigned GP300:1;				// IO_3: P00&lt;br /&gt;
      unsigned GP301:1;				// IO_3: P01&lt;br /&gt;
      unsigned GP302:1;				// IO_3: P02&lt;br /&gt;
      unsigned GP303:1;				// IO_3: P03&lt;br /&gt;
      unsigned GP304:1;				// IO_3: P04&lt;br /&gt;
      unsigned GP305:1;				// IO_3: P05&lt;br /&gt;
      unsigned GP306:1;				// IO_3: P06&lt;br /&gt;
      unsigned GP307:1;				// IO_3: P07&lt;br /&gt;
      unsigned GP310:1;				// IO_3: P10&lt;br /&gt;
      unsigned GP311:1;				// IO_3: P11&lt;br /&gt;
      unsigned GP312:1;				// IO_3: P12&lt;br /&gt;
      unsigned GP313:1;				// IO_3: P13&lt;br /&gt;
      unsigned GP314:1;				// IO_3: P14&lt;br /&gt;
      unsigned GP315:1;				// IO_3: P15&lt;br /&gt;
      unsigned GP316:1;				// IO_3: P16&lt;br /&gt;
      unsigned GP317:1;				// IO_3: P17&lt;br /&gt;
    };&lt;br /&gt;
} ioexp_3_t;&lt;br /&gt;
&lt;br /&gt;
ioexp_3_t io3config;&lt;br /&gt;
ioexp_3_t io3invrt;&lt;br /&gt;
ioexp_3_t io3ins;&lt;br /&gt;
ioexp_3_t io3outs;&lt;br /&gt;
&lt;br /&gt;
// I2C I/O Expander (PCA9535) general functions:&lt;br /&gt;
void config_IO(byte, unsigned int);&lt;br /&gt;
void update_IO(byte);&lt;br /&gt;
void set_IO(byte, unsigned int);&lt;br /&gt;
void invert_IO(byte, unsigned int);&lt;br /&gt;
void read_IO(byte);&lt;br /&gt;
#define readAllArduIO_IOs() {read_IO(1);read_IO(2);read_IO(3);}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591):&lt;br /&gt;
&lt;br /&gt;
#define READ_ADCUB	// If defined: Function read_AD(1) will also&lt;br /&gt;
			//  (default)  read the UB voltage ADC value (adcub) and&lt;br /&gt;
			//             will update the UB voltage low condition&lt;br /&gt;
			//             flag (status.ubatLow)!&lt;br /&gt;
			// If NOT defined: The UB voltage ADC value can be found&lt;br /&gt;
			//                 in the variable ad1ins.ArduIO_UB after&lt;br /&gt;
			//                 execution of read_AD(1)!&lt;br /&gt;
			// READ_ADCUB should NOT be defined, if jumper JP_AD-UB&lt;br /&gt;
			// on the ArduIO Board is OPEN!&lt;br /&gt;
&lt;br /&gt;
// Control Byte bitmasks:&lt;br /&gt;
#define PCF8591_CONTROL_DEFAULT		0&lt;br /&gt;
#define PCF8591_CONTROL_ARDUIO		0b01000100	// Auto-increment &amp;amp; DAC&lt;br /&gt;
&lt;br /&gt;
#define PCF8591_CONTROL_AUTO_INC	4		// Auto-increment&lt;br /&gt;
#define PCF8591_CONTROL_DAC_ENABLE	64		// DAC enable&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter 1 (IC11: PCF8591):&lt;br /&gt;
#define ADDA_1				1&lt;br /&gt;
typedef union {&lt;br /&gt;
  struct {&lt;br /&gt;
    byte AIN0;					// AIN0&lt;br /&gt;
    byte AIN1;					// AIN1&lt;br /&gt;
    byte AIN2;					// AIN2&lt;br /&gt;
    byte AIN3;					// AIN3&lt;br /&gt;
  };&lt;br /&gt;
  struct {&lt;br /&gt;
    byte AD10;					// ADDA_1: AIN0&lt;br /&gt;
    byte AD11;					// ADDA_1: AIN1&lt;br /&gt;
    byte AD12;					// ADDA_1: AIN2&lt;br /&gt;
    byte AD13;					// ADDA_1: AIN3&lt;br /&gt;
  };&lt;br /&gt;
  struct {&lt;br /&gt;
    byte unusedAD10;				// unused&lt;br /&gt;
    byte unusedAD11;				// unused&lt;br /&gt;
    byte unusedAD12;				// unused&lt;br /&gt;
    byte ArduIO_UB;				// ArduIO: UB&lt;br /&gt;
  };&lt;br /&gt;
} addaexp_1_t;&lt;br /&gt;
&lt;br /&gt;
addaexp_1_t ad1ins;&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter 2 (IC10: PCF8591):&lt;br /&gt;
#define ADDA_2				2&lt;br /&gt;
typedef union {&lt;br /&gt;
  struct {&lt;br /&gt;
    byte AIN0;					// AIN0&lt;br /&gt;
    byte AIN1;					// AIN1&lt;br /&gt;
    byte AIN2;					// AIN2&lt;br /&gt;
    byte AIN3;					// AIN3&lt;br /&gt;
  };&lt;br /&gt;
  struct {&lt;br /&gt;
    byte AD20;					// ADDA_2: AIN0&lt;br /&gt;
    byte AD21;					// ADDA_2: AIN1&lt;br /&gt;
    byte AD22;					// ADDA_2: AIN2&lt;br /&gt;
    byte AD23;					// ADDA_2: AIN3&lt;br /&gt;
  };&lt;br /&gt;
} addaexp_2_t;&lt;br /&gt;
&lt;br /&gt;
addaexp_2_t ad2ins;&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter 3 (IC9: PCF8591):&lt;br /&gt;
#define ADDA_3				3&lt;br /&gt;
typedef union {&lt;br /&gt;
  struct {&lt;br /&gt;
    byte AIN0;					// AIN0&lt;br /&gt;
    byte AIN1;					// AIN1&lt;br /&gt;
    byte AIN2;					// AIN2&lt;br /&gt;
    byte AIN3;					// AIN3&lt;br /&gt;
  };&lt;br /&gt;
  struct {&lt;br /&gt;
    byte AD30;					// ADDA_3: AIN0&lt;br /&gt;
    byte AD31;					// ADDA_3: AIN1&lt;br /&gt;
    byte AD32;					// ADDA_3: AIN2&lt;br /&gt;
    byte AD33;					// ADDA_3: AIN3&lt;br /&gt;
  };&lt;br /&gt;
  struct {&lt;br /&gt;
    byte ARD_A0;				// ARD: A0&lt;br /&gt;
    byte ARD_A1;				// ARD: A1&lt;br /&gt;
    byte ARD_A2;				// ARD: A2&lt;br /&gt;
    byte ARD_A3;				// ARD: A3&lt;br /&gt;
  };&lt;br /&gt;
} addaexp_3_t;&lt;br /&gt;
&lt;br /&gt;
addaexp_3_t ad3ins;&lt;br /&gt;
&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591) general functions:&lt;br /&gt;
#define UCV_AD(__AD__) (unsigned int)(__AD__*500.0f/255.0f)&lt;br /&gt;
&lt;br /&gt;
void read_AD(byte);&lt;br /&gt;
#define readAllArduIO_ADs() {read_AD(1);read_AD(2);read_AD(3);}&lt;br /&gt;
&lt;br /&gt;
#define AOUT_CV(__CV__) (byte)(__CV__*0.51f)&lt;br /&gt;
&lt;br /&gt;
byte da1aout;&lt;br /&gt;
byte da2aout;&lt;br /&gt;
byte da3aout;&lt;br /&gt;
&lt;br /&gt;
void write_DA(byte, byte);&lt;br /&gt;
void disable_DA(byte);&lt;br /&gt;
#define disableAllArduIO_DAs() {disable_DA(1);disable_DA(2);disable_DA(3);}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// UB Voltage Sensor:&lt;br /&gt;
&lt;br /&gt;
byte adcub;&lt;br /&gt;
double ubv;&lt;br /&gt;
&lt;br /&gt;
byte getUbSensor(void);&lt;br /&gt;
double calculateUb(void);&lt;br /&gt;
double measureUb(void);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// LEDs:&lt;br /&gt;
&lt;br /&gt;
// ------------------------------------------------------------------&lt;br /&gt;
// Duty cycle constants:&lt;br /&gt;
#define DUTY_0				0	// 0%&lt;br /&gt;
#define DUTY_10				409	// 10%&lt;br /&gt;
#define DUTY_25				1023	// 25%&lt;br /&gt;
#define DUTY_50				2047	// 50%&lt;br /&gt;
#define DUTY_75				3071	// 75%&lt;br /&gt;
#define DUTY_90				3685	// 90%&lt;br /&gt;
#define DUTY_100			4095	// 100%&lt;br /&gt;
// Relative duty cycle [__PCT__ = 0..100%] macro:&lt;br /&gt;
#define DUTY_PCT(__PCT__) (unsigned int)((unsigned long)__PCT__*4095/100)&lt;br /&gt;
// ------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
void setLEDs(byte);&lt;br /&gt;
&lt;br /&gt;
void dimLED(byte, unsigned int);&lt;br /&gt;
void setLED1(byte);&lt;br /&gt;
void setLED2(byte);&lt;br /&gt;
void setLED3(byte);&lt;br /&gt;
void setLED4(byte);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// PWM Ports:&lt;br /&gt;
&lt;br /&gt;
void setPWMs(byte);&lt;br /&gt;
&lt;br /&gt;
void dimPWM(byte, unsigned int);&lt;br /&gt;
void setPWM1(byte);&lt;br /&gt;
void setPWM2(byte);&lt;br /&gt;
void setPWM3(byte);&lt;br /&gt;
void setPWM4(byte);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
&lt;br /&gt;
// Power PWM Ports:&lt;br /&gt;
void setPowerPWMMode(void);&lt;br /&gt;
void setPowerPWMs(byte);&lt;br /&gt;
&lt;br /&gt;
void dimPowerPWM(byte, unsigned int);&lt;br /&gt;
void setPowerPWM1(byte);&lt;br /&gt;
void setPowerPWM2(byte);&lt;br /&gt;
void setPowerPWM3(byte);&lt;br /&gt;
void setPowerPWM4(byte);&lt;br /&gt;
void setPowerPWM5(byte);&lt;br /&gt;
void setPowerPWM6(byte);&lt;br /&gt;
void setPowerPWM7(byte);&lt;br /&gt;
void setPowerPWM8(byte);&lt;br /&gt;
&lt;br /&gt;
// H-Bridges:&lt;br /&gt;
&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
// Direction/command:&lt;br /&gt;
#define FWD			0		// Forwards&lt;br /&gt;
#define BWD			1		// Backwards&lt;br /&gt;
#define BRK			4		// Speed break&lt;br /&gt;
#define OFF			5		// Power OFF&lt;br /&gt;
// ------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
void adjustPowerHB(byte hb, byte dir, unsigned int duty);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Board system control routine:&lt;br /&gt;
&lt;br /&gt;
void readSystem(void);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Board initialisation and shutdown:&lt;br /&gt;
&lt;br /&gt;
void init(void);&lt;br /&gt;
void shutdown(void);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Arduino Uno Expander functions:&lt;br /&gt;
&lt;br /&gt;
void updateArduino_Uno_Exp_IO(void);&lt;br /&gt;
void setArduino_Uno_Exp_IO(unsigned int);&lt;br /&gt;
// ArduIO Board Arduino Uno Expander control routine:&lt;br /&gt;
void readArduino_Uno_Exp(void);&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Class private section and end:&lt;br /&gt;
&lt;br /&gt;
private:&lt;br /&gt;
&lt;br /&gt;
status_t RP6ArduIOstatus;	// ArduIO status bits (lib internal)&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
 ~ Additional info&lt;br /&gt;
 ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
 ~ Changelog:&lt;br /&gt;
 ~&lt;br /&gt;
 ~  ---&amp;gt; changes are documented in the file &amp;quot;RP6_ArduIO.cpp&amp;quot;&lt;br /&gt;
 ~&lt;br /&gt;
 ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Library Source=====&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO.cpp:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                                               ___   ___                   */&lt;br /&gt;
/*                 _______________________      /   \ /   \                  */&lt;br /&gt;
/*                 \| RP6  ROBOT SYSTEM |/     (  -  X  +  )                 */&lt;br /&gt;
/*                  \_-_-_-_-_-_-_-_-_-_/       \___/ \___/                  */&lt;br /&gt;
/*                                                ARDUINO                    */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*------------------------------ [c]2014 - Dirk -----------------------------*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Target:    Arduino UNO with RP6 ArduIO Board (Shield)&lt;br /&gt;
 ~ Library:   RP6_ArduIO Source&lt;br /&gt;
 ~ Version:   1.0&lt;br /&gt;
 ~ Author(s): Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Description:&lt;br /&gt;
 ~ This is our new Library that contains basic routines and functions for&lt;br /&gt;
 ~ accessing the hardwired components of the RP6 ArduIO Board.&lt;br /&gt;
 ~ If you want to use the mentioned MACROS in your program, you have to&lt;br /&gt;
 ~ include the RP6_ArduIO Defines Header (RP6_ArduIO_Defines.h)!&lt;br /&gt;
 */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO hardwired components:&lt;br /&gt;
// - I2C PWM Controller (IC3: PCA9685)&lt;br /&gt;
// - I2C I/O Expander 1 5V (IC8: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 2 5V (IC13: PCA9535)&lt;br /&gt;
// - I2C I/O Expander 3 3V3 (IC12: PCA9535)&lt;br /&gt;
// - I2C A/D and D/A Converter 1 (IC11: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 2 (IC10: PCF8591)&lt;br /&gt;
// - I2C A/D and D/A Converter 3 (IC9: PCF8591)&lt;br /&gt;
// - UB Voltage Sensor&lt;br /&gt;
// - LEDs&lt;br /&gt;
// - PWM Ports&lt;br /&gt;
// - Power PWM Ports &amp;amp; H-Bridges&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Includes:&lt;br /&gt;
#include &amp;quot;RP6_ArduIO.h&amp;quot;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Variables:&lt;br /&gt;
byte registerBuf; &lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Constructor:&lt;br /&gt;
RP6_ArduIO::RP6_ArduIO()&lt;br /&gt;
{}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Status:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Enable access to a H-Bridge [1 or 2].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ HB1: Power PWM group 1 (power PWM numbers 1..4)&lt;br /&gt;
 ~ HB2: Power PWM group 2 (power PWM numbers 5..8)&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: hb -&amp;gt; H-Bridge (HB) number [1 or 2]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro enableHBx(),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = H-Bridge number = [1 or 2].&lt;br /&gt;
 ~ There is a macro isHBxEnable(), that may be&lt;br /&gt;
 ~ used to read the HBx access status.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - If you ENABLE access to a H-Bridge,&lt;br /&gt;
 ~          access to the corresponding power&lt;br /&gt;
 ~          PWM group will be DISABLED!&lt;br /&gt;
 ~        - In order to use H-Bridge 1, you have&lt;br /&gt;
 ~          to connect pins 3-4 and 5-6 of the&lt;br /&gt;
 ~          SV_H-BRIDGES plug on the ArduIO&lt;br /&gt;
 ~          Board!&lt;br /&gt;
 ~        - Motor 1 connection schematic:&lt;br /&gt;
 ~           Pins      Motor 1      pins&lt;br /&gt;
 ~           ---------------------------&lt;br /&gt;
 ~            3-4  -&amp;gt;  +     -  &amp;lt;-  5-6&lt;br /&gt;
 ~        - In order to use H-Bridge 2, you have&lt;br /&gt;
 ~          to connect pins 7-8 and 9-10 of the&lt;br /&gt;
 ~          SV_H-BRIDGES plug on the ArduIO&lt;br /&gt;
 ~          Board!&lt;br /&gt;
 ~        - Motor 2 connection schematic:&lt;br /&gt;
 ~           Pins      Motor 2      pins&lt;br /&gt;
 ~           ---------------------------&lt;br /&gt;
 ~            7-8  -&amp;gt;  +     -  &amp;lt;-  9-10&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   enableHB1();   // Or enableHB(1);&lt;br /&gt;
 ~   // this enables access to H-Bridge 1!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::enableHB(byte hb)&lt;br /&gt;
{&lt;br /&gt;
  if (hb == 1) {&lt;br /&gt;
    RP6ArduIOstatus.ppwm_g1Enable = false;&lt;br /&gt;
    RP6ArduIOstatus.hb1Enable = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (hb == 2) {&lt;br /&gt;
    RP6ArduIOstatus.ppwm_g2Enable = false;&lt;br /&gt;
    RP6ArduIOstatus.hb2Enable = true;&lt;br /&gt;
  }&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Disable access to a H-Bridge [1 or 2]&lt;br /&gt;
 ~ (default).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: hb -&amp;gt; H-Bridge (HB) number [1 or 2]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   disableHB2();   // Or disableHB(2);&lt;br /&gt;
 ~   // this disables access to H-Bridge 2!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::disableHB(byte hb)&lt;br /&gt;
{&lt;br /&gt;
  if (hb == 1) RP6ArduIOstatus.hb1Enable = false;&lt;br /&gt;
  if (hb == 2) RP6ArduIOstatus.hb2Enable = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Enable access to a power PWM group [1 or 2]&lt;br /&gt;
 ~ (default).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Power PWM group 1: HB1 (power PWM numbers 1..4)&lt;br /&gt;
 ~ Power PWM group 2: HB2 (power PWM numbers 5..8)&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: ppwm_g -&amp;gt; Power PWM group [1 or 2]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro enablePPWM_Gx(),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = Power PWM group = [1 or 2].&lt;br /&gt;
 ~ There is a macro isPPWM_GxEnable(), that may&lt;br /&gt;
 ~ be used to read the power PWM group x access&lt;br /&gt;
 ~ status.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - If you ENABLE access to a power PWM&lt;br /&gt;
 ~          group, access to the corresponding&lt;br /&gt;
 ~          H-Bridge will be DISABLED!&lt;br /&gt;
 ~        - ! IF  YOU  WANT  TO  USE  POWER  PWM !&lt;br /&gt;
 ~          ! NUMBERS  1..4  (POWER PWM GROUP 1) !&lt;br /&gt;
 ~          ! AS 4 SINGLE POWER PWM OUTPUTS, YOU !&lt;br /&gt;
 ~          ! HAVE TO ENSURE,  THAT PINS 3-4 AND !&lt;br /&gt;
 ~          ! 5-6  OF SV_H-BRIDGES PLUG ARE  NOT !&lt;br /&gt;
 ~          ! CONNECTED!!!  YOU MAY  DAMAGE  THE !&lt;br /&gt;
 ~          ! ARDUIO  BOARD,  IF THESE PINS  ARE !&lt;br /&gt;
 ~          ! CONNECTED!!!                       !&lt;br /&gt;
 ~        - ! IF  YOU  WANT  TO  USE  POWER  PWM !&lt;br /&gt;
 ~          ! NUMBERS  5..8  (POWER PWM GROUP 2) !&lt;br /&gt;
 ~          ! AS 4 SINGLE POWER PWM OUTPUTS, YOU !&lt;br /&gt;
 ~          ! HAVE TO ENSURE,  THAT PINS 7-8 AND !&lt;br /&gt;
 ~          ! 9-10 OF SV_H-BRIDGES PLUG ARE  NOT !&lt;br /&gt;
 ~          ! CONNECTED!!!  YOU MAY  DAMAGE  THE !&lt;br /&gt;
 ~          ! ARDUIO  BOARD,  IF THESE PINS  ARE !&lt;br /&gt;
 ~          ! CONNECTED!!!                       !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   enablePPWM_G1();   // Or enablePPWM_G(1);&lt;br /&gt;
 ~   // this enables access to power PWM group 1&lt;br /&gt;
 ~   // (power PWM numbers 1..4)!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::enablePPWM_G(byte ppwm_g)&lt;br /&gt;
{&lt;br /&gt;
  if (ppwm_g == 1) {&lt;br /&gt;
    RP6ArduIOstatus.hb1Enable = false;&lt;br /&gt;
    RP6ArduIOstatus.ppwm_g1Enable = true;&lt;br /&gt;
  }&lt;br /&gt;
  if (ppwm_g == 2) {&lt;br /&gt;
    RP6ArduIOstatus.hb2Enable = false;&lt;br /&gt;
    RP6ArduIOstatus.ppwm_g2Enable = true;&lt;br /&gt;
  }&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Disable access to a power PWM group [1 or 2].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: ppwm_g -&amp;gt; Power PWM group [1 or 2]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   disablePPWM_G2();   // Or disablePPWM_G(2);&lt;br /&gt;
 ~   // this disables access to power PWM group 2&lt;br /&gt;
 ~   // (power PWM numbers 5..8)!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::disablePPWM_G(byte ppwm_g)&lt;br /&gt;
{&lt;br /&gt;
  if (ppwm_g == 1) RP6ArduIOstatus.ppwm_g1Enable = false;&lt;br /&gt;
  if (ppwm_g == 2) RP6ArduIOstatus.ppwm_g2Enable = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Enable access to the 4 free PWMs (default).&lt;br /&gt;
 ~ There is a macro isPWMsEnable(), that may be&lt;br /&gt;
 ~ used to read the PWMs access status.&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::enablePWMs(void)&lt;br /&gt;
{&lt;br /&gt;
  RP6ArduIOstatus.pwmsEnable = true;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Disable access to the 4 free PWMs.&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::disablePWMs(void)&lt;br /&gt;
{&lt;br /&gt;
  RP6ArduIOstatus.pwmsEnable = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Enable access to all IO_1..3 IO ports to be&lt;br /&gt;
 ~ used as outputs (Outs) (default).&lt;br /&gt;
 ~ There is a macro isOutsEnable(), that may be&lt;br /&gt;
 ~ used to read the Outs access status.&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::enableOuts(void)&lt;br /&gt;
{&lt;br /&gt;
  RP6ArduIOstatus.outsEnable = true;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Disable access to all IO_1..3 IO ports to be&lt;br /&gt;
 ~ used as outputs (Outs).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: The IO_1..3 IO ports can ALWAYS be used&lt;br /&gt;
 ~       as inputs (Ins)!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::disableOuts(void)&lt;br /&gt;
{&lt;br /&gt;
  RP6ArduIOstatus.outsEnable = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Enable access to all ADDA_1..3 DACs (default).&lt;br /&gt;
 ~ There is a macro isDAsEnable(), that may be&lt;br /&gt;
 ~ used to read the DACs access status.&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::enableDAs(void)&lt;br /&gt;
{&lt;br /&gt;
  RP6ArduIOstatus.dasEnable = true;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Disable access to all ADDA_1..3 DACs.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: The 3 DAC outputs (AOUT) are NOT&lt;br /&gt;
 ~       disabled by this function! Pls. use&lt;br /&gt;
 ~       macro disableAllArduIO_DAs() for this!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::disableDAs(void)&lt;br /&gt;
{&lt;br /&gt;
  RP6ArduIOstatus.dasEnable = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C PWM Controller (PCA9685):&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Call this once before using the PWM function.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: PWM frequency [40..1000 Hz]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro initPWM(freq), which&lt;br /&gt;
 ~ does exactly the same as this function.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   initPWM(1000);   // Or PCA9685_init(1000);&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::PCA9685_init(unsigned int freq)&lt;br /&gt;
{&lt;br /&gt;
  byte last_mode;&lt;br /&gt;
  if ((freq &amp;lt; 40) || (freq &amp;gt; 1000)) freq = 1000;&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_MODE2);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
  Wire.requestFrom(I2C_ARDUIO_PWM_ADR, 1);&lt;br /&gt;
  if (Wire.available()) last_mode = Wire.read();&lt;br /&gt;
  last_mode |= PCA9685_MODE2_INVRT;			// Set INVRT bit&lt;br /&gt;
  last_mode &amp;amp;= ~PCA9685_MODE2_OUTDRV;			// Clear OUTDRV bit&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_MODE2);&lt;br /&gt;
  Wire.write(last_mode);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_MODE1);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
  Wire.requestFrom(I2C_ARDUIO_PWM_ADR, 1);&lt;br /&gt;
  if (Wire.available()) last_mode = Wire.read();&lt;br /&gt;
  last_mode |= PCA9685_MODE1_AI;			// Set AI bit&lt;br /&gt;
  byte mode1 = last_mode;&lt;br /&gt;
  mode1 |= PCA9685_MODE1_SLEEP;				// Set SLEEP bit&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_MODE1);&lt;br /&gt;
  Wire.write(mode1);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
  byte prescale = (byte) (F_PCA9685 / 4096 / freq - 0.5);&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_PRE_SCALE);&lt;br /&gt;
  Wire.write(prescale);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
  last_mode &amp;amp;= ~PCA9685_MODE1_SLEEP;			// Clear SLEEP bit&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_MODE1);&lt;br /&gt;
  Wire.write(last_mode);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
  delay(1);&lt;br /&gt;
  last_mode |= PCA9685_MODE1_RESTART;			// Clear RESTART bit&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(PCA9685_MODE1);&lt;br /&gt;
  Wire.write(last_mode);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This is the PWM duty set function.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: channel -&amp;gt; Channel number [1..16]&lt;br /&gt;
 ~                   0 = ALL 16 channels&lt;br /&gt;
 ~        duty    -&amp;gt; Duty cycle [0..4095]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro setPWM(channel, duty),&lt;br /&gt;
 ~ which does exactly the same as this function.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   setPWM(2,300);   // Or PCA9685_set(2,300);&lt;br /&gt;
 ~   // this sets channel 2 with a duty cycle&lt;br /&gt;
 ~   // value of 300 (about 7.33%).&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::PCA9685_set(byte channel, unsigned int duty)&lt;br /&gt;
{&lt;br /&gt;
  if (channel &amp;gt; 16) return;&lt;br /&gt;
  if (duty &amp;gt; 4095) duty = 4095;&lt;br /&gt;
  byte reg = channel * 4 + 4;      // Register LEDx_OFF_L&lt;br /&gt;
  if (!channel) reg = PCA9685_ALL_LED_OFF_L;      // Register ALL_LED_OFF_L&lt;br /&gt;
  Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
  Wire.write(reg);&lt;br /&gt;
  Wire.write(duty &amp;amp; 0x00ff);&lt;br /&gt;
  Wire.write(duty &amp;gt;&amp;gt; 8);&lt;br /&gt;
  Wire.endTransmission();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C I/O Expander (PCA9535):&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Configurate the portpins of an IO_x port as&lt;br /&gt;
 ~ input or output. This port configuration is&lt;br /&gt;
 ~ stored in the global ioxconfig variable, where&lt;br /&gt;
 ~ x = IO-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: io    -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 ~        inout -&amp;gt; Config value (16 bit):&lt;br /&gt;
 ~                  Bit 0 = output&lt;br /&gt;
 ~                  Bit 1 = input&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro config_IOx(inout),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = IO-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   config_IO(IO_1,0b0000000000101001);&lt;br /&gt;
 ~   // this configures the IO_1 portpins P00,&lt;br /&gt;
 ~   // P03 and P05 as INPUTs and all other&lt;br /&gt;
 ~   // portpins as OUTPUTs!&lt;br /&gt;
 ~   config_IO1(0b0000000000101001);&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::config_IO(byte io, unsigned int inout)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.outsEnable || (inout == 0xffff)) {&lt;br /&gt;
    switch (io) {					// IO-Expander number:&lt;br /&gt;
      case IO_1 :					//  IO_1&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_IO_1_ADR);&lt;br /&gt;
        Wire.write(PCA9535_CONFIG_P0);&lt;br /&gt;
        Wire.write(inout &amp;amp; 0x00ff);&lt;br /&gt;
        Wire.write(inout &amp;gt;&amp;gt; 8);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        io1config.port = inout;&lt;br /&gt;
        break;&lt;br /&gt;
      case IO_2 :					//  IO_2&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_IO_2_ADR);&lt;br /&gt;
        Wire.write(PCA9535_CONFIG_P0);&lt;br /&gt;
        Wire.write(inout &amp;amp; 0x00ff);&lt;br /&gt;
        Wire.write(inout &amp;gt;&amp;gt; 8);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        io2config.port = inout;&lt;br /&gt;
        break;&lt;br /&gt;
      case IO_3 :					//  IO_3&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_IO_3_ADR);&lt;br /&gt;
        Wire.write(PCA9535_CONFIG_P0);&lt;br /&gt;
        Wire.write(inout &amp;amp; 0x00ff);&lt;br /&gt;
        Wire.write(inout &amp;gt;&amp;gt; 8);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        io3config.port = inout;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Update an IO_x port with current value from&lt;br /&gt;
 ~ the global ioxouts variable, where x = IO-&lt;br /&gt;
 ~ Expander number = [1..3].&lt;br /&gt;
 ~ The 16 IO_x portpins will be SET (high, ON)&lt;br /&gt;
 ~ or CLEARED (low, OFF).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: io  -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro update_IOx(),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = IO-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Examples:&lt;br /&gt;
 ~   io1outs.port = 0b0000000000101001;&lt;br /&gt;
 ~   update_IO1();&lt;br /&gt;
 ~   // this CLEARs the port and SETs the&lt;br /&gt;
 ~   // IO_1 portpins P00, P03 and P05!&lt;br /&gt;
 ~&lt;br /&gt;
 ~   // Other possibility:&lt;br /&gt;
 ~   io3outs.GP316 = true;   // Or io3outs.P16 = true;&lt;br /&gt;
 ~   update_IO(IO_3);&lt;br /&gt;
 ~   // this SETs the IO_3 portpin P16 and&lt;br /&gt;
 ~   // does not affect any other portpin!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::update_IO(byte io)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.outsEnable) {&lt;br /&gt;
    switch (io) {					// IO-Expander number:&lt;br /&gt;
      case IO_1 :					//  IO_1&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_IO_1_ADR);&lt;br /&gt;
        Wire.write(PCA9535_OUTPUT_P0);&lt;br /&gt;
        Wire.write(io1outs.port &amp;amp; 0x00ff);&lt;br /&gt;
        Wire.write(io1outs.port &amp;gt;&amp;gt; 8);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        break;&lt;br /&gt;
      case IO_2 :					//  IO_2&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_IO_2_ADR);&lt;br /&gt;
        Wire.write(PCA9535_OUTPUT_P0);&lt;br /&gt;
        Wire.write(io2outs.port &amp;amp; 0x00ff);&lt;br /&gt;
        Wire.write(io2outs.port &amp;gt;&amp;gt; 8);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        break;&lt;br /&gt;
      case IO_3 :					//  IO_3&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_IO_3_ADR);&lt;br /&gt;
        Wire.write(PCA9535_OUTPUT_P0);&lt;br /&gt;
        Wire.write(io3outs.port &amp;amp; 0x00ff);&lt;br /&gt;
        Wire.write(io3outs.port &amp;gt;&amp;gt; 8);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function SETs (high, ON) or CLEARs&lt;br /&gt;
 ~ (low, OFF) the 16 IO_x portpins, where&lt;br /&gt;
 ~ x = IO-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: io  -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 ~        out -&amp;gt; Output value (16 bit)&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro set_IOx(out),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = IO-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   set_IO(IO_1,0b0000000000101001);&lt;br /&gt;
 ~   // this CLEARs the port and SETs the&lt;br /&gt;
 ~   // IO_1 portpins P00, P03 and P05!&lt;br /&gt;
 ~   set_IO1(0b0000000000101001);&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::set_IO(byte io, unsigned int out)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.outsEnable) {&lt;br /&gt;
    switch (io) {					// IO-Expander number:&lt;br /&gt;
      case IO_1 :					//  IO_1&lt;br /&gt;
        io1outs.port = out;&lt;br /&gt;
        update_IO(IO_1);&lt;br /&gt;
        break;&lt;br /&gt;
      case IO_2 :					//  IO_2&lt;br /&gt;
        io2outs.port = out;&lt;br /&gt;
        update_IO(IO_2);&lt;br /&gt;
        break;&lt;br /&gt;
      case IO_3 :					//  IO_3&lt;br /&gt;
        io3outs.port = out;&lt;br /&gt;
        update_IO(IO_3);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Invert the input values of the portpins of an&lt;br /&gt;
 ~ IO_x port. This port setting is stored in the&lt;br /&gt;
 ~ global ioxinvrt variable, where x = IO-&lt;br /&gt;
 ~ Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: io    -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 ~        invrt -&amp;gt; Setting value (16 bit):&lt;br /&gt;
 ~                  Bit 0 = retain&lt;br /&gt;
 ~                  Bit 1 = invert&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro invert_IOx(invrt),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = IO-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   invert_IO(IO_1,0b0000000000101001);&lt;br /&gt;
 ~   // this inverts the input values of the IO_1&lt;br /&gt;
 ~   // portpins P00, P03 and P05 and retains the&lt;br /&gt;
 ~   // input values of all other portpins!&lt;br /&gt;
 ~   invert_IO1(0b0000000000101001);&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void invert_IO(byte io, unsigned int invrt)&lt;br /&gt;
{&lt;br /&gt;
  switch (io) {						// IO-Expander number:&lt;br /&gt;
    case IO_1 :						//  IO_1&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_IO_1_ADR);&lt;br /&gt;
      Wire.write(PCA9535_POL_INV_P0);&lt;br /&gt;
      Wire.write(invrt &amp;amp; 0x00ff);&lt;br /&gt;
      Wire.write(invrt &amp;gt;&amp;gt; 8);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      io1invrt.port = invrt;&lt;br /&gt;
      break;&lt;br /&gt;
    case IO_2 :						//  IO_2&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_IO_2_ADR);&lt;br /&gt;
      Wire.write(PCA9535_POL_INV_P0);&lt;br /&gt;
      Wire.write(invrt &amp;amp; 0x00ff);&lt;br /&gt;
      Wire.write(invrt &amp;gt;&amp;gt; 8);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      io2invrt.port = invrt;&lt;br /&gt;
      break;&lt;br /&gt;
    case IO_3 :						//  IO_3&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_IO_3_ADR);&lt;br /&gt;
      Wire.write(PCA9535_POL_INV_P0);&lt;br /&gt;
      Wire.write(invrt &amp;amp; 0x00ff);&lt;br /&gt;
      Wire.write(invrt &amp;gt;&amp;gt; 8);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      io3invrt.port = invrt;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function checks an IO_x port with it's&lt;br /&gt;
 ~ 16 pins (P00..P17), where x = IO-Expander&lt;br /&gt;
 ~ number = [1..3]!&lt;br /&gt;
 ~ You may call this function frequently&lt;br /&gt;
 ~ out of the main loop.&lt;br /&gt;
 ~ The input values (true/false, high/low) of the&lt;br /&gt;
 ~ portpins are read into the global ioxins&lt;br /&gt;
 ~ variable.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: io  -&amp;gt; IO-Expander number [1..3]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro read_IOx(),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = IO-Expander number = [1..3].&lt;br /&gt;
 ~ The macro readAll_IOs() reads the&lt;br /&gt;
 ~ portpins (P00..P17) of ALL 3 IO-Expanders.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: The portpin input values can be&lt;br /&gt;
 ~       inverted with the function&lt;br /&gt;
 ~       invert_IO(io,invrt)!&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Examples:&lt;br /&gt;
 ~   read_IO(IO_1);&lt;br /&gt;
 ~   if (io1ins.GP101) Serial.println(&amp;quot;IO_1:P01 = High&amp;quot;);&lt;br /&gt;
 ~   else Serial.println(&amp;quot;IO_1:P01 = Low&amp;quot;);&lt;br /&gt;
 ~   read_IO2();&lt;br /&gt;
 ~   if (!io2ins.GP214) Serial.println(&amp;quot;IO_2:P14 = Low&amp;quot;);&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::read_IO(byte io)&lt;br /&gt;
{&lt;br /&gt;
  switch (io) {						// IO-Expander number:&lt;br /&gt;
    case IO_1 :						//  IO_1&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_IO_1_ADR);&lt;br /&gt;
      Wire.write(PCA9535_INPUT_P0);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      Wire.requestFrom(I2C_ARDUIO_IO_1_ADR, 2);      // request 2 bytes&lt;br /&gt;
      if (2 &amp;lt;= Wire.available()) {      // two bytes to be received&lt;br /&gt;
        registerBuf = Wire.read();      // receive low byte&lt;br /&gt;
        io1ins.port = registerBuf;&lt;br /&gt;
        registerBuf = Wire.read();      // receive high byte&lt;br /&gt;
        io1ins.port |= (registerBuf &amp;lt;&amp;lt; 8);&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
    case IO_2 :						//  IO_2&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_IO_2_ADR);&lt;br /&gt;
      Wire.write(PCA9535_INPUT_P0);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      Wire.requestFrom(I2C_ARDUIO_IO_2_ADR, 2);&lt;br /&gt;
      if (2 &amp;lt;= Wire.available()) {&lt;br /&gt;
        registerBuf = Wire.read();&lt;br /&gt;
        io2ins.port = registerBuf;&lt;br /&gt;
        registerBuf = Wire.read();&lt;br /&gt;
        io2ins.port |= (registerBuf &amp;lt;&amp;lt; 8);&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
    case IO_3 :						//  IO_3&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_IO_3_ADR);&lt;br /&gt;
      Wire.write(PCA9535_INPUT_P0);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      Wire.requestFrom(I2C_ARDUIO_IO_3_ADR, 2);&lt;br /&gt;
      if (2 &amp;lt;= Wire.available()) {&lt;br /&gt;
        registerBuf = Wire.read();&lt;br /&gt;
        io3ins.port = registerBuf;&lt;br /&gt;
        registerBuf = Wire.read();&lt;br /&gt;
        io3ins.port |= (registerBuf &amp;lt;&amp;lt; 8);&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// I2C A/D and D/A Converter (PCF8591):&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function reads the 3 ADDA_x ADC ports&lt;br /&gt;
 ~ (AIN0..AIN3), where x = AD/DA-Expander number&lt;br /&gt;
 ~ = [1..3]!&lt;br /&gt;
 ~ You may call this function frequently&lt;br /&gt;
 ~ out of the main loop.&lt;br /&gt;
 ~ The AIN0..AIN3 ADC values [0..255] are read&lt;br /&gt;
 ~ into the global adxins struct:&lt;br /&gt;
 ~   byte adxins.ADxy, where y = ADC channel&lt;br /&gt;
 ~   (AIN0..3) number of ADDA_x = [0..3]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: ad  -&amp;gt; AD/DA-Expander number [1..3]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro read_ADx(),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = AD/DA-Expander number = [1..3].&lt;br /&gt;
 ~ The macro readAll_ADs() reads the&lt;br /&gt;
 ~ ADC ports (AIN0..AIN3) of ALL 3 AD/DA-&lt;br /&gt;
 ~ Expanders.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint only for ad == 1 (ADDA_1):&lt;br /&gt;
 ~       If READ_ADCUB is defined, the variable&lt;br /&gt;
 ~       adcub is filled with the UB voltage ADC&lt;br /&gt;
 ~       value. Depending on adcub the UB voltage&lt;br /&gt;
 ~       low flag is SET/CLEARED in the ArduIO&lt;br /&gt;
 ~       status byte (status.ubatLow)!&lt;br /&gt;
 ~       There is also a macro isUbLow(), that&lt;br /&gt;
 ~       may be used instead of&lt;br /&gt;
 ~       status.ubatLow.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Examples:&lt;br /&gt;
 ~   read_AD(ADDA_1);&lt;br /&gt;
 ~   Serial.print(&amp;quot;ADDA_1:AIN0 = &amp;quot;);&lt;br /&gt;
 ~   Serial.print(ad1ins.AD10, DEC);&lt;br /&gt;
 ~   Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
 ~&lt;br /&gt;
 ~   read_AD2();&lt;br /&gt;
 ~   Serial.print(&amp;quot;ADDA_2:AIN3 = &amp;quot;);&lt;br /&gt;
 ~   Serial.print(ad2ins.AD23, DEC);&lt;br /&gt;
 ~   Serial.print(&amp;quot; (U: &amp;quot;);&lt;br /&gt;
 ~   Serial.print(UCV_AD(ad2ins.AD23), DEC);&lt;br /&gt;
 ~   Serial.println(&amp;quot;cV)&amp;quot;); // 100cV = 1V&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::read_AD(byte ad)&lt;br /&gt;
{&lt;br /&gt;
  switch (ad) {						// AD/DA-Expander number:&lt;br /&gt;
    case ADDA_1 :					//  ADDA_1&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_AD_1_ADR);&lt;br /&gt;
      Wire.write(PCF8591_CONTROL_ARDUIO);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      Wire.requestFrom(I2C_ARDUIO_AD_1_ADR, 5);&lt;br /&gt;
      if (Wire.available()) Wire.read();&lt;br /&gt;
      if (4 &amp;lt;= Wire.available()) {&lt;br /&gt;
        ad1ins.AD10 = Wire.read();&lt;br /&gt;
        ad1ins.AD11 = Wire.read();&lt;br /&gt;
        ad1ins.AD12 = Wire.read();&lt;br /&gt;
        ad1ins.AD13 = Wire.read();&lt;br /&gt;
      }&lt;br /&gt;
#ifdef READ_ADCUB&lt;br /&gt;
      adcub = ad1ins.ArduIO_UB;				// = ad1ins.AD13&lt;br /&gt;
// Test for UB voltage low condition:&lt;br /&gt;
      if (adcub &amp;lt; ADCVAL_UB_LOW) RP6ArduIOstatus.ubatLow = true;&lt;br /&gt;
      else RP6ArduIOstatus.ubatLow = false;&lt;br /&gt;
      status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
#endif&lt;br /&gt;
      break;&lt;br /&gt;
    case ADDA_2 :					//  ADDA_2&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_AD_2_ADR);&lt;br /&gt;
      Wire.write(PCF8591_CONTROL_ARDUIO);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      Wire.requestFrom(I2C_ARDUIO_AD_2_ADR, 5);&lt;br /&gt;
      if (Wire.available()) Wire.read();&lt;br /&gt;
      if (4 &amp;lt;= Wire.available()) {&lt;br /&gt;
        ad2ins.AD20 = Wire.read();&lt;br /&gt;
        ad2ins.AD21 = Wire.read();&lt;br /&gt;
        ad2ins.AD22 = Wire.read();&lt;br /&gt;
        ad2ins.AD23 = Wire.read();&lt;br /&gt;
      }&lt;br /&gt;
      break;&lt;br /&gt;
    case ADDA_3 :					//  ADDA_3&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_AD_3_ADR);&lt;br /&gt;
      Wire.write(PCF8591_CONTROL_ARDUIO);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      Wire.requestFrom(I2C_ARDUIO_AD_3_ADR, 5);&lt;br /&gt;
      if (Wire.available()) Wire.read();&lt;br /&gt;
      if (4 &amp;lt;= Wire.available()) {&lt;br /&gt;
        ad3ins.AD30 = Wire.read();&lt;br /&gt;
        ad3ins.AD31 = Wire.read();&lt;br /&gt;
        ad3ins.AD32 = Wire.read();&lt;br /&gt;
        ad3ins.AD33 = Wire.read();&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function sends an 8 bit value (aout) to&lt;br /&gt;
 ~ one of the three DA converters on the ArduIO&lt;br /&gt;
 ~ Board. After this the analog voltage [0..5V]&lt;br /&gt;
 ~ can be measured at the DAC output pin (AOUT)&lt;br /&gt;
 ~ of the addressed AD/DA-Expander.&lt;br /&gt;
 ~ The value aout is also stored in daxaout.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: da   -&amp;gt; AD/DA-Expander number [1..3]&lt;br /&gt;
 ~        aout -&amp;gt; Output value (8 bit)&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro write_DAx(aout),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = AD/DA-Expander number = [1..3].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableDAs(); &amp;lt;==           !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   write_DA1(127);   // Or write_DA(1,127);&lt;br /&gt;
 ~   // this sends the value 127 to the DAC of&lt;br /&gt;
 ~   // AD/DA-Expander 1. This DAC now generates&lt;br /&gt;
 ~   // an output voltage (Vo) of 2.5V:&lt;br /&gt;
 ~   //   Vo [V] = aout * 5 / 255&lt;br /&gt;
 ~   // ... or 250cV (1cV = one-hundreth of 1V):&lt;br /&gt;
 ~   //   Vo [cV] = aout * 500 / 255&lt;br /&gt;
 ~   write_DA1(AOUT_CV(250)); // 250cV = 2.5V&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::write_DA(byte da, byte aout)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.dasEnable) {&lt;br /&gt;
    switch (da) {					// AD/DA-Expander number:&lt;br /&gt;
      case ADDA_1 :					//  ADDA_1&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_AD_1_ADR);&lt;br /&gt;
        Wire.write(PCF8591_CONTROL_DAC_ENABLE);&lt;br /&gt;
        Wire.write(aout);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        da1aout = aout;&lt;br /&gt;
        break;&lt;br /&gt;
      case ADDA_2 :					//  ADDA_2&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_AD_2_ADR);&lt;br /&gt;
        Wire.write(PCF8591_CONTROL_DAC_ENABLE);&lt;br /&gt;
        Wire.write(aout);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        da2aout = aout;&lt;br /&gt;
        break;&lt;br /&gt;
      case ADDA_3 :					//  ADDA_3&lt;br /&gt;
        Wire.beginTransmission(I2C_ARDUIO_AD_3_ADR);&lt;br /&gt;
        Wire.write(PCF8591_CONTROL_DAC_ENABLE);&lt;br /&gt;
        Wire.write(aout);&lt;br /&gt;
        Wire.endTransmission();&lt;br /&gt;
        da3aout = aout;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function disables the DAC output (AOUT)&lt;br /&gt;
 ~ of the addressed AD/DA-Expander (set PCF8591&lt;br /&gt;
 ~ default mode).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: da  -&amp;gt; AD/DA-Expander number [1..3]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro disable_DAx(),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = AD/DA-Expander number = [1..3].&lt;br /&gt;
 ~ The macro disableAll_DAs() disables the&lt;br /&gt;
 ~ DAC outputs (AOUT) of ALL 3 AD/DA-Expanders.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - The function read_AD(ad)&lt;br /&gt;
 ~          ENABLES the DAC output (AOUT) of the&lt;br /&gt;
 ~          addressed AD/DA-Expander!&lt;br /&gt;
 ~        - Access to the 3 DACs is NOT disabled&lt;br /&gt;
 ~          by this function! Pls. use function&lt;br /&gt;
 ~          disableDAs() for this!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::disable_DA(byte da)&lt;br /&gt;
{&lt;br /&gt;
  switch (da) {						// AD/DA-Expander number:&lt;br /&gt;
    case ADDA_1 :					//  ADDA_1&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_AD_1_ADR);&lt;br /&gt;
      Wire.write(PCF8591_CONTROL_DEFAULT);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      break;&lt;br /&gt;
    case ADDA_2 :					//  ADDA_2&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_AD_2_ADR);&lt;br /&gt;
      Wire.write(PCF8591_CONTROL_DEFAULT);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
      break;&lt;br /&gt;
    case ADDA_3 :					//  ADDA_3&lt;br /&gt;
      Wire.beginTransmission(I2C_ARDUIO_AD_3_ADR);&lt;br /&gt;
      Wire.write(PCF8591_CONTROL_DEFAULT);&lt;br /&gt;
      Wire.endTransmission();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// UB Voltage Sensor:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function reads and returns the ADC value of&lt;br /&gt;
 ~ the UB voltage sensor. The value is also stored&lt;br /&gt;
 ~ in adcub. Depending on adcub the UB voltage low&lt;br /&gt;
 ~ flag is SET/CLEARED in the ArduIO status byte&lt;br /&gt;
 ~ (status.ubatLow)!&lt;br /&gt;
 ~ There is also a macro isUbLow(), that may be&lt;br /&gt;
 ~ used instead of status.ubatLow.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: Jumper JP_AD-UB must be closed in order to&lt;br /&gt;
 ~       measure the UB voltage!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
byte RP6_ArduIO::getUbSensor(void)&lt;br /&gt;
{&lt;br /&gt;
  read_AD(1);&lt;br /&gt;
  adcub = ad1ins.ArduIO_UB;				// ADDA_1:AIN3&lt;br /&gt;
  // Test for UB voltage low condition:&lt;br /&gt;
  if (adcub &amp;lt; ADCVAL_UB_LOW) RP6ArduIOstatus.ubatLow = true;&lt;br /&gt;
  else RP6ArduIOstatus.ubatLow = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
  return adcub;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Calculates and returns the UB voltage value&lt;br /&gt;
 ~ by using the data read from the UB voltage&lt;br /&gt;
 ~ sensor with the function getUbSensor().&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: The calculation assumes a reference&lt;br /&gt;
 ~       voltage of 5.0V and a voltage divider&lt;br /&gt;
 ~       100k/100k at the sensor input!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
double RP6_ArduIO::calculateUb(void)&lt;br /&gt;
{&lt;br /&gt;
  return (10.0f / 255.0f * adcub);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Measures and returns the UB voltage value [V].&lt;br /&gt;
 ~ The ADC value of the UB voltage sensor is also&lt;br /&gt;
 ~ stored in adcub. Depending on adcub the UB&lt;br /&gt;
 ~ voltage low flag is SET/CLEARED in the ArduIO&lt;br /&gt;
 ~ status byte (status.ubatLow)!&lt;br /&gt;
 ~ There is also a macro isUbLow(), that may be&lt;br /&gt;
 ~ used instead of status.ubatLow.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - Jumper JP_AD-UB must be closed in&lt;br /&gt;
 ~          order to measure the UB voltage!&lt;br /&gt;
 ~        - The calculation assumes a reference&lt;br /&gt;
 ~          voltage of 5.0V and a voltage&lt;br /&gt;
 ~          divider 100k/100k at the sensor&lt;br /&gt;
 ~          input!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
double RP6_ArduIO::measureUb(void)&lt;br /&gt;
{&lt;br /&gt;
  read_AD(1);&lt;br /&gt;
  adcub = ad1ins.ArduIO_UB;				// ADDA_1:AIN3&lt;br /&gt;
  // Test for UB voltage low condition:&lt;br /&gt;
  if (adcub &amp;lt; ADCVAL_UB_LOW) RP6ArduIOstatus.ubatLow = true;&lt;br /&gt;
  else RP6ArduIOstatus.ubatLow = false;&lt;br /&gt;
  status.bits = RP6ArduIOstatus.bits;&lt;br /&gt;
  return (10.0f / 255.0f * adcub);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// LEDs:&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set the 4 status LEDs of the ArduIO.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~          setLEDs(0b1010);&lt;br /&gt;
 ~          // this CLEARs LEDs 1 and 3&lt;br /&gt;
 ~          // and SETs LEDs 2 and 4!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setLEDs(byte leds)&lt;br /&gt;
{&lt;br /&gt;
  if (leds &amp;amp; 0b00000001) PCA9685_set(CHLED1, 4095);&lt;br /&gt;
  else PCA9685_set(CHLED1, 0);&lt;br /&gt;
  if (leds &amp;amp; 0b00000010) PCA9685_set(CHLED2, 4095);&lt;br /&gt;
  else PCA9685_set(CHLED2, 0);&lt;br /&gt;
  if (leds &amp;amp; 0b00000100) PCA9685_set(CHLED3, 4095);&lt;br /&gt;
  else PCA9685_set(CHLED3, 0);&lt;br /&gt;
  if (leds &amp;amp; 0b00001000) PCA9685_set(CHLED4, 4095);&lt;br /&gt;
  else PCA9685_set(CHLED4, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Dim the 4 status LEDs of the ArduIO.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: led  -&amp;gt; LED number [1..4]&lt;br /&gt;
 ~        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro dimLEDx(duty),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = LED number = [1..4].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   dimLED2(DUTY_50);   // Or dimLED(2,2047);&lt;br /&gt;
 ~   // this dims LED2 with a&lt;br /&gt;
 ~   // duty cycle of 50%!&lt;br /&gt;
 ~   dimLED2(DUTY_PCT(50));   // Or dimLED2(2047);&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::dimLED(byte led, unsigned int duty)&lt;br /&gt;
{&lt;br /&gt;
  if (led == 1) PCA9685_set(CHLED1, duty);&lt;br /&gt;
  if (led == 2) PCA9685_set(CHLED2, duty);&lt;br /&gt;
  if (led == 3) PCA9685_set(CHLED3, duty);&lt;br /&gt;
  if (led == 4) PCA9685_set(CHLED4, duty);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY LED1, don't change anything for the other LEDs.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: led -&amp;gt; 0 (false) = LED off&lt;br /&gt;
 ~               &amp;gt;0 (true) = LED on&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setLED1(byte led)&lt;br /&gt;
{&lt;br /&gt;
  if (led &amp;gt; 0) PCA9685_set(CHLED1, 4095); &lt;br /&gt;
  else PCA9685_set(CHLED1, 0);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY LED2, don't change anything for the other LEDs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setLED2(byte led)&lt;br /&gt;
{&lt;br /&gt;
  if (led &amp;gt; 0) PCA9685_set(CHLED2, 4095); &lt;br /&gt;
  else PCA9685_set(CHLED2, 0);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY LED3, don't change anything for the other LEDs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setLED3(byte led)&lt;br /&gt;
{&lt;br /&gt;
  if (led &amp;gt; 0) PCA9685_set(CHLED3, 4095); &lt;br /&gt;
  else PCA9685_set(CHLED3, 0);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY LED4, don't change anything for the other LEDs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setLED4(byte led)&lt;br /&gt;
{&lt;br /&gt;
  if (led &amp;gt; 0) PCA9685_set(CHLED4, 4095); &lt;br /&gt;
  else PCA9685_set(CHLED4, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// PWM Ports:&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set the 4 free PWM ports of the ArduIO to ON or&lt;br /&gt;
 ~ OFF (set the MAX/MIN [100%/0%] PWM duty cycle).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~          setPWMs(0b1010);&lt;br /&gt;
 ~          // this CLEARs PWMs 1 and 3 [0%]&lt;br /&gt;
 ~          // and SETs PWMs 2 and 4 [100%]!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPWMs(byte pwms)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.pwmsEnable) {&lt;br /&gt;
    if (pwms &amp;amp; 0b00000001) PCA9685_set(CHPWM1, 4095);&lt;br /&gt;
    else PCA9685_set(CHPWM1, 0);&lt;br /&gt;
    if (pwms &amp;amp; 0b00000010) PCA9685_set(CHPWM2, 4095);&lt;br /&gt;
    else PCA9685_set(CHPWM2, 0);&lt;br /&gt;
    if (pwms &amp;amp; 0b00000100) PCA9685_set(CHPWM3, 4095);&lt;br /&gt;
    else PCA9685_set(CHPWM3, 0);&lt;br /&gt;
    if (pwms &amp;amp; 0b00001000) PCA9685_set(CHPWM4, 4095);&lt;br /&gt;
    else PCA9685_set(CHPWM4, 0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Dim the 4 free PWM ports of the ArduIO (set the&lt;br /&gt;
 ~ PWM duty cycle).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: pwm  -&amp;gt; PWM number [1..4]&lt;br /&gt;
 ~        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro dimPWMx(duty),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = PWM number = [1..4].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   dimPWM2(DUTY_50);   // Or dimPWM(2,2047);&lt;br /&gt;
 ~   // this dims PWM2 with a&lt;br /&gt;
 ~   // PWM duty cycle of 50%!&lt;br /&gt;
 ~   dimPWM2(DUTY_PCT(50));   // Or dimPWM2(2047);&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::dimPWM(byte pwm, unsigned int duty)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.pwmsEnable) {&lt;br /&gt;
    if (pwm == 1) PCA9685_set(CHPWM1, duty);&lt;br /&gt;
    if (pwm == 2) PCA9685_set(CHPWM2, duty);&lt;br /&gt;
    if (pwm == 3) PCA9685_set(CHPWM3, duty);&lt;br /&gt;
    if (pwm == 4) PCA9685_set(CHPWM4, duty);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY PWM1, don't change anything for the other PWMs.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: pwm -&amp;gt; 0 (false) = PWM off [0%]&lt;br /&gt;
 ~               &amp;gt;0 (true) = PWM max. duty cycle [100%]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePWMs(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPWM1(byte pwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.pwmsEnable) {&lt;br /&gt;
    if (pwm &amp;gt; 0) PCA9685_set(CHPWM1, 4095); &lt;br /&gt;
    else PCA9685_set(CHPWM1, 0);&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY PWM2, don't change anything for the other PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPWM2(byte pwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.pwmsEnable) {&lt;br /&gt;
    if (pwm &amp;gt; 0) PCA9685_set(CHPWM2, 4095); &lt;br /&gt;
    else PCA9685_set(CHPWM2, 0);&lt;br /&gt;
  }	&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY PWM3, don't change anything for the other PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPWM3(byte pwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.pwmsEnable) {&lt;br /&gt;
    if (pwm &amp;gt; 0) PCA9685_set(CHPWM3, 4095); &lt;br /&gt;
    else PCA9685_set(CHPWM3, 0);	&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY PWM4, don't change anything for the other PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPWM4(byte pwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.pwmsEnable) {&lt;br /&gt;
    if (pwm &amp;gt; 0) PCA9685_set(CHPWM4, 4095); &lt;br /&gt;
    else PCA9685_set(CHPWM4, 0);	&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
&lt;br /&gt;
// Power PWM Ports:&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set the 8 power PWM ports of the ArduIO to be&lt;br /&gt;
 ~ used as 8 SINGLE power PWM ports and switch&lt;br /&gt;
 ~ all 8 power PWM ports off (0% PWM duty cycle).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWMMode(void)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED0_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM1_P, 0);&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED1_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM2_N, 4095);&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED2_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM3_P, 0);&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED3_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM4_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED4_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM5_P, 0);&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED5_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM6_N, 4095);&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED6_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM7_P, 0);&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
    Wire.write(PCA9685_LED7_ON_H);&lt;br /&gt;
    Wire.write(0);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
    PCA9685_set(CHPOWERPWM8_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set the 8 power PWM ports of the ArduIO to ON or&lt;br /&gt;
 ~ OFF (set the MAX/MIN [100%/0%] PWM duty cycle).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~          setPowerPWMs(0b00001010);&lt;br /&gt;
 ~          // this CLEARs power PWMs 1, 3, 5..8 [0%]&lt;br /&gt;
 ~          // and SETs power PWMs 2 and 4 [100%]!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWMs(byte ppwms)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    if (ppwms &amp;amp; 0b00000001) PCA9685_set(CHPOWERPWM1_P, 4095);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM1_P, 0);&lt;br /&gt;
    if (ppwms &amp;amp; 0b00000010) PCA9685_set(CHPOWERPWM2_N, 0);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM2_N, 4095);&lt;br /&gt;
    if (ppwms &amp;amp; 0b00000100) PCA9685_set(CHPOWERPWM3_P, 4095);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM3_P, 0);&lt;br /&gt;
    if (ppwms &amp;amp; 0b00001000) PCA9685_set(CHPOWERPWM4_N, 0);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM4_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    if (ppwms &amp;amp; 0b00010000) PCA9685_set(CHPOWERPWM5_P, 4095);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM5_P, 0);&lt;br /&gt;
    if (ppwms &amp;amp; 0b00100000) PCA9685_set(CHPOWERPWM6_N, 0);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM6_N, 4095);&lt;br /&gt;
    if (ppwms &amp;amp; 0b01000000) PCA9685_set(CHPOWERPWM7_P, 4095);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM7_P, 0);&lt;br /&gt;
    if (ppwms &amp;amp; 0b10000000) PCA9685_set(CHPOWERPWM8_N, 0);&lt;br /&gt;
    else PCA9685_set(CHPOWERPWM8_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Dim the 8 power PWM ports of the ArduIO (set the&lt;br /&gt;
 ~ PWM duty cycle).&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: ppwm -&amp;gt; Power PWM number [1..8]&lt;br /&gt;
 ~        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ There is also a macro dimPowerPWMx(duty),&lt;br /&gt;
 ~ which does exactly the same as this function,&lt;br /&gt;
 ~ where x = Power PWM number = [1..8].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   dimPowerPWM2(DUTY_50);   // Or dimPowerPWM(2,2047);&lt;br /&gt;
 ~   // this dims power PWM2 with a&lt;br /&gt;
 ~   // duty cycle of 50%!&lt;br /&gt;
 ~   dimPowerPWM2(DUTY_PCT(50));   // Or dimPowerPWM2(2047);&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::dimPowerPWM(byte ppwm, unsigned int duty)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    if (ppwm == 1) PCA9685_set(CHPOWERPWM1_P, duty);&lt;br /&gt;
    if (ppwm == 2) PCA9685_set(CHPOWERPWM2_N, (4095 - duty));&lt;br /&gt;
    if (ppwm == 3) PCA9685_set(CHPOWERPWM3_P, duty);&lt;br /&gt;
    if (ppwm == 4) PCA9685_set(CHPOWERPWM4_N, (4095 - duty));&lt;br /&gt;
  }&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    if (ppwm == 5) PCA9685_set(CHPOWERPWM5_P, duty);&lt;br /&gt;
    if (ppwm == 6) PCA9685_set(CHPOWERPWM6_N, (4095 - duty));&lt;br /&gt;
    if (ppwm == 7) PCA9685_set(CHPOWERPWM7_P, duty);&lt;br /&gt;
    if (ppwm == 8) PCA9685_set(CHPOWERPWM8_N, (4095 - duty));&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM1, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: ppwm -&amp;gt; 0 (false) = Power PWM off [0%]&lt;br /&gt;
 ~                &amp;gt;0 (true) = Power PWM max. duty cycle [100%]&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(1); &amp;lt;==       !&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM1(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM1_P, 4095); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM1_P, 0);&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM2, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM2(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM2_N, 0); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM2_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM3, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM3(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM3_P, 4095); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM3_P, 0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM4, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM4(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g1Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM4_N, 0); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM4_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM5, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enablePPWM_G(2); &amp;lt;==       !&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM5(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM5_P, 4095); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM5_P, 0);&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM6, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM6(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM6_N, 0); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM6_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM7, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM7(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM7_P, 4095); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM7_P, 0);&lt;br /&gt;
  }&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Set ONLY power PWM8, don't change anything for&lt;br /&gt;
 ~ the other power PWMs.&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setPowerPWM8(byte ppwm)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.ppwm_g2Enable) {&lt;br /&gt;
    if (ppwm &amp;gt; 0) PCA9685_set(CHPOWERPWM8_N, 0); &lt;br /&gt;
    else PCA9685_set(CHPOWERPWM8_N, 4095);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// H-Bridges:&lt;br /&gt;
&lt;br /&gt;
byte last_hb, last_dir;&lt;br /&gt;
&lt;br /&gt;
/*~ &lt;br /&gt;
 ~ Adjust all functions of the two H-Bridges.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: hb   -&amp;gt; H-Bridge (HB) number [1 or 2]&lt;br /&gt;
 ~        dir  -&amp;gt; Direction [0, 1, 4, 5]&lt;br /&gt;
 ~        duty -&amp;gt; Duty cycle [0..4095] = [0..100%]&lt;br /&gt;
 ~ &lt;br /&gt;
 ~ There are also 6 macros for each HB:&lt;br /&gt;
 ~   powerHBx(dir,duty);&lt;br /&gt;
 ~   powerHBxSTOP();&lt;br /&gt;
 ~   powerHBxFWD(duty);&lt;br /&gt;
 ~   powerHBxBWD(duty);&lt;br /&gt;
 ~   powerHBxBRK();&lt;br /&gt;
 ~   powerHBxOFF();&lt;br /&gt;
 ~ which do exactly the same as this function,&lt;br /&gt;
 ~ where x = H-Bridge number = [1 or 2].&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED:           !&lt;br /&gt;
 ~       !   ==&amp;gt; enableHB(1); &amp;lt;==           !&lt;br /&gt;
 ~       !   ==&amp;gt; enableHB(2); &amp;lt;==           !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Examples:&lt;br /&gt;
 ~   powerHB1(BWD,DUTY_50);   // Or adjustPowerHB(1,1,2047);&lt;br /&gt;
 ~   // this moves a motor at HB1 backward with&lt;br /&gt;
 ~   // a duty cycle of 50%!&lt;br /&gt;
 ~   powerHB1BWD(DUTY_PCT(50));&lt;br /&gt;
 ~   // does exactly the same!&lt;br /&gt;
 ~&lt;br /&gt;
 ~   powerHB2STOP();   // Or powerHB2(FWD,DUTY_0);&lt;br /&gt;
 ~   // this stops a motor at HB2 (duty cycle: 0%)&lt;br /&gt;
 ~   // and sets direction FWD!&lt;br /&gt;
 ~   // If you don't want direction FWD to be set,&lt;br /&gt;
 ~   // you have to use: powerHB2(BWD,DUTY_0)!&lt;br /&gt;
 ~&lt;br /&gt;
 ~   powerHB1BRK();&lt;br /&gt;
 ~   // this stops a motor at HB1 faster than the&lt;br /&gt;
 ~   // function powerHB1STOP() by shorting it!&lt;br /&gt;
 ~&lt;br /&gt;
 ~   powerHB2OFF();&lt;br /&gt;
 ~   // this stops a motor at HB2 by cutting off&lt;br /&gt;
 ~   // all four HB2 motor driver MOSFets!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::adjustPowerHB(byte hb, byte dir, unsigned int duty)&lt;br /&gt;
{&lt;br /&gt;
  byte newcall = 1;&lt;br /&gt;
  if ((RP6ArduIOstatus.hb1Enable) || (RP6ArduIOstatus.hb2Enable)) {&lt;br /&gt;
    if ((hb == last_hb) &amp;amp;&amp;amp; (dir == last_dir))&lt;br /&gt;
      newcall = 0;&lt;br /&gt;
    else {&lt;br /&gt;
      newcall = 1;&lt;br /&gt;
      last_hb = hb;					// Store last H-Bridge number&lt;br /&gt;
      last_dir = dir;					// Store last direction&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
							// H-Bridge 1&lt;br /&gt;
  if ((hb == 1) &amp;amp;&amp;amp; (RP6ArduIOstatus.hb1Enable)) {&lt;br /&gt;
    switch (dir) {					//  Direction:&lt;br /&gt;
      case FWD :					//   Forwards&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED1_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED1_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED2_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED0_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED0_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED3_ON_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
        PCA9685_set(CHHB1_N2, (4095 - duty));&lt;br /&gt;
        break;&lt;br /&gt;
      case BWD :					//   Backwards&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED0_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED3_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED3_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED2_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED2_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED1_ON_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
        PCA9685_set(CHHB1_N1, (4095 - duty));&lt;br /&gt;
        break;&lt;br /&gt;
      case BRK :					//   Speed break&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED0_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED2_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED1_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED3_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      case OFF :					//   Power OFF&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED0_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED2_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED1_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED1_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED3_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED3_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
							// H-Bridge 2&lt;br /&gt;
  else if ((hb == 2) &amp;amp;&amp;amp; (RP6ArduIOstatus.hb2Enable)) {&lt;br /&gt;
    switch (dir) {					//  Direction:&lt;br /&gt;
      case FWD :					//   Forwards&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED5_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED5_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED6_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED4_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED4_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED7_ON_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
        PCA9685_set(CHHB2_N2, (4095 - duty));&lt;br /&gt;
        break;&lt;br /&gt;
      case BWD :					//   Backwards&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED4_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED7_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED7_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED6_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED6_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED5_ON_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
        PCA9685_set(CHHB2_N1, (4095 - duty));&lt;br /&gt;
        break;&lt;br /&gt;
      case BRK :					//   Speed break&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED4_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED6_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED5_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED7_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      case OFF :					//   Power OFF&lt;br /&gt;
        if (newcall) {&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED4_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED6_OFF_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED5_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED5_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED7_OFF_H);&lt;br /&gt;
          Wire.write(0);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
          Wire.beginTransmission(I2C_ARDUIO_PWM_ADR);&lt;br /&gt;
          Wire.write(PCA9685_LED7_ON_H);&lt;br /&gt;
          Wire.write(0x10);&lt;br /&gt;
          Wire.endTransmission();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Board system control routine:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Call all important ArduIO Board system&lt;br /&gt;
 ~ functions.&lt;br /&gt;
 ~ This function will read:&lt;br /&gt;
 ~  - All ArduIO Board digital portpins&lt;br /&gt;
 ~    Result: io1ins.GP100..io1ins.GP117&lt;br /&gt;
 ~            io2ins.GP200..io2ins.GP217&lt;br /&gt;
 ~            io3ins.GP300..io3ins.GP317&lt;br /&gt;
 ~  - All ArduIO Board analog portpins&lt;br /&gt;
 ~    Result: ad1ins.AD10..ad1ins.AD13&lt;br /&gt;
 ~            ad2ins.AD20..ad2ins.AD23&lt;br /&gt;
 ~            ad3ins.AD30..ad3ins.AD33&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - Do NOT use readArduino_Uno_Exp()&lt;br /&gt;
 ~          together with THIS function!&lt;br /&gt;
 ~        - You should only use this function,&lt;br /&gt;
 ~          if you have to read ALL ArduIO Board&lt;br /&gt;
 ~          input portpins!&lt;br /&gt;
 ~        - Digital portpins can be read, if they&lt;br /&gt;
 ~          were configured as INPUTs before:&lt;br /&gt;
 ~          config_IO1(0b1111111111111111);&lt;br /&gt;
 ~          config_IO2(0b1111111111111111);&lt;br /&gt;
 ~          config_IO3(0b1111111111111111);&lt;br /&gt;
 ~        - Digital portpin input values can be&lt;br /&gt;
 ~          inverted with the function&lt;br /&gt;
 ~          invert_IO(io,invrt)!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::readSystem(void)&lt;br /&gt;
{&lt;br /&gt;
  readAllArduIO_IOs();&lt;br /&gt;
  readAllArduIO_ADs();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Board initialisation and shutdown:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ You MUST call this function ONCE at the&lt;br /&gt;
 ~ beginning of a main program, that uses the&lt;br /&gt;
 ~ ArduIO Board.&lt;br /&gt;
 ~ DEFAULT initialisation settings are:&lt;br /&gt;
 ~ - Default access to ArduIO functions enable&lt;br /&gt;
 ~ - Default PWM frequency&lt;br /&gt;
 ~ - Power PWM mode enable&lt;br /&gt;
 ~ - H-Bridge mode disable&lt;br /&gt;
 ~ - All 8 power PWMs off&lt;br /&gt;
 ~ - All 4 free PWMs off&lt;br /&gt;
 ~ - All 4 LEDs off&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - After power on the 48 ArduIO IOs are&lt;br /&gt;
 ~          configured as INPUTs (PCA9535&lt;br /&gt;
 ~          default!). This function does NOT&lt;br /&gt;
 ~          configurate the IOs!&lt;br /&gt;
 ~        - After power on the 3 ArduIO DACs are&lt;br /&gt;
 ~          disabled (PCF8591 default!). This&lt;br /&gt;
 ~          function does NOT affect the state or&lt;br /&gt;
 ~          the output voltage of the DACs!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::init(void)&lt;br /&gt;
{&lt;br /&gt;
  // ArduIO Status (DEFAULT):&lt;br /&gt;
  setArduIODefaultStatus();			// ArduIO access default status&lt;br /&gt;
  // PWM Controller:&lt;br /&gt;
  PCA9685_init(PWM_FREQUENCY);			// Init PWM default frequency&lt;br /&gt;
  // Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
  setPowerPWMMode();				// ArduIO 8 power PWMs off&lt;br /&gt;
  // PWMs:&lt;br /&gt;
  setPWMs(0b0000);				// ArduIO 4 free PWMs off&lt;br /&gt;
  // LEDs:&lt;br /&gt;
  setLEDs(0b0000);				// ArduIO 4 LEDs off&lt;br /&gt;
  // I/O Expanders:&lt;br /&gt;
  io1config.port = 0xffff;&lt;br /&gt;
  io2config.port = 0xffff;&lt;br /&gt;
  io3config.port = 0xffff;			// ArduIO 48 IOs INPUTs&lt;br /&gt;
  io1invrt.port = 0;&lt;br /&gt;
  io2invrt.port = 0;&lt;br /&gt;
  io3invrt.port = 0;				// ArduIO 48 IOs NOT inverted&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ If you don't use any function of the ArduIO&lt;br /&gt;
 ~ Board, you can put the ArduIO Board into&lt;br /&gt;
 ~ &amp;quot;SHUTDOWN MODE&amp;quot;. In this mode the electric&lt;br /&gt;
 ~ power consumption is very low to save energy.&lt;br /&gt;
 ~ If DISABLE_ON_SHUTDOWN is defined (default),&lt;br /&gt;
 ~ access to ArduIO functions is disabled in&lt;br /&gt;
 ~ SHUTDOWN mode.&lt;br /&gt;
 ~ SHUTDOWN settings are:&lt;br /&gt;
 ~ - Power PWM mode enable&lt;br /&gt;
 ~ - H-Bridge mode disable&lt;br /&gt;
 ~ - All 8 power PWMs off&lt;br /&gt;
 ~ - All 4 free PWMs off&lt;br /&gt;
 ~ - All 4 LEDs off&lt;br /&gt;
 ~ - All 48 IOs INPUTs&lt;br /&gt;
 ~ - All 3 DACs disable&lt;br /&gt;
 ~ - Access to ArduIO functions disable&lt;br /&gt;
 ~   (if DISABLE_ON_SHUTDOWN is defined!)&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::shutdown(void)&lt;br /&gt;
{&lt;br /&gt;
  // ArduIO Status (DEFAULT):&lt;br /&gt;
  setArduIODefaultStatus();			// ArduIO access default status&lt;br /&gt;
  // Power PWM Ports &amp;amp; H-Bridges:&lt;br /&gt;
  setPowerPWMMode();				// ArduIO 8 power PWMs off&lt;br /&gt;
  // PWMs:&lt;br /&gt;
  setPWMs(0b0000);				// ArduIO 4 free PWMs off&lt;br /&gt;
  // LEDs:&lt;br /&gt;
  setLEDs(0b0000);				// ArduIO 4 LEDs off&lt;br /&gt;
  // I/O Expanders:&lt;br /&gt;
  config_IO(1,0b1111111111111111);&lt;br /&gt;
  config_IO(2,0b1111111111111111);&lt;br /&gt;
  config_IO(3,0b1111111111111111);		// ArduIO 48 IOs INPUTs&lt;br /&gt;
  // A/D and D/A Converters:&lt;br /&gt;
  disableAllArduIO_DAs();			// ArduIO 3 DACs disable&lt;br /&gt;
#ifdef DISABLE_ON_SHUTDOWN&lt;br /&gt;
  // ArduIO Status (SHUTDOWN):&lt;br /&gt;
  setArduIOShutdownStatus();			// ArduIO access shutdown status&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Arduino Uno Expander special functions:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Update the IO_2 port with current value from&lt;br /&gt;
 ~ the global io2outs variable.&lt;br /&gt;
 ~ The 16 IO_2 portpins will be SET (high, ON)&lt;br /&gt;
 ~ or CLEARED (low, OFF). 14 of these IO_2&lt;br /&gt;
 ~ portpins are connected with the digital &lt;br /&gt;
 ~ Arduino Uno Expander portpins D0..D13.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Bit positions of the Arduino Uno Expander&lt;br /&gt;
 ~ portpins in the io2outs port:&lt;br /&gt;
 ~          0b0000000000000000&lt;br /&gt;
 ~            |||    ||      |&lt;br /&gt;
 ~   Arduino: ||D8   |D7     D0&lt;br /&gt;
 ~            n.c.   D13 &lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Examples:&lt;br /&gt;
 ~   io2outs.port = 0b0000000100101001;&lt;br /&gt;
 ~   updateArduino_Uno_Exp_IO();&lt;br /&gt;
 ~   // this CLEARs the port and SETs the&lt;br /&gt;
 ~   // Arduino Uno Expander portpins D0, D3,&lt;br /&gt;
 ~   // D5 and D13!&lt;br /&gt;
 ~&lt;br /&gt;
 ~   // Other possibility:&lt;br /&gt;
 ~   io2outs.ARD_D8 = true;   // Or io2outs.P15 = true;&lt;br /&gt;
 ~   updateArduino_Uno_Exp_IO();&lt;br /&gt;
 ~   // this SETs the Arduino Uno Expander&lt;br /&gt;
 ~   // portpin D8 and does not affect any&lt;br /&gt;
 ~   // other portpin!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::updateArduino_Uno_Exp_IO(void)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.outsEnable) {&lt;br /&gt;
    Wire.beginTransmission(I2C_ARDUIO_IO_2_ADR);&lt;br /&gt;
    Wire.write(PCA9535_OUTPUT_P0);&lt;br /&gt;
    Wire.write(io2outs.port &amp;amp; 0x00ff);&lt;br /&gt;
    Wire.write(io2outs.port &amp;gt;&amp;gt; 8);&lt;br /&gt;
    Wire.endTransmission();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ This function SETs (high, ON) or CLEARs&lt;br /&gt;
 ~ (low, OFF) the 16 IO_2 portpins. 14 of these&lt;br /&gt;
 ~ IO_2 portpins are connected with the digital &lt;br /&gt;
 ~ Arduino Uno Expander portpins D0..D13.&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Input: out -&amp;gt; Output value (16 bit)&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Bit positions of the Arduino Uno Expander&lt;br /&gt;
 ~ portpins in the output value (out):&lt;br /&gt;
 ~          0b0000000000000000&lt;br /&gt;
 ~            |||    ||      |&lt;br /&gt;
 ~   Arduino: ||D8   |D7     D0&lt;br /&gt;
 ~            n.c.   D13 &lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hint: ! THIS FUNCTION WILL ONLY WORK, IF !&lt;br /&gt;
 ~       ! THE ACCESS IS ENABLED (default): !&lt;br /&gt;
 ~       !   ==&amp;gt; enableOuts(); &amp;lt;==          !&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Example:&lt;br /&gt;
 ~   setArduino_Uno_Exp_IO(0b0010000000101001);&lt;br /&gt;
 ~   // this CLEARs the port and SETs the&lt;br /&gt;
 ~   // Arduino Uno Expander portpins D0, D3,&lt;br /&gt;
 ~   // D5 and D8!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::setArduino_Uno_Exp_IO(unsigned int out)&lt;br /&gt;
{&lt;br /&gt;
  if (RP6ArduIOstatus.outsEnable) {&lt;br /&gt;
    io2outs.port = out;&lt;br /&gt;
    updateArduino_Uno_Exp_IO();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// ArduIO Board Arduino Uno Expander control routine:&lt;br /&gt;
&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Call all important Arduino Uno Expander read&lt;br /&gt;
 ~ functions.&lt;br /&gt;
 ~ This function will read:&lt;br /&gt;
 ~  - All Arduino digital portpins D0..D13&lt;br /&gt;
 ~    Result: io2ins.ARD_D0..io2ins.ARD_D13&lt;br /&gt;
 ~  - The Arduino analog portpins A0..A3&lt;br /&gt;
 ~    Result: ad3ins.ARD_A0..ad3ins.ARD_A3&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Hints: - You can use function readSystem()&lt;br /&gt;
 ~          instead of THIS function! Do NOT use&lt;br /&gt;
 ~          both functions together!&lt;br /&gt;
 ~        - You should only use this function,&lt;br /&gt;
 ~          if you have to read ALL digital and&lt;br /&gt;
 ~          analog Arduino Uno Expander input&lt;br /&gt;
 ~          portpins!&lt;br /&gt;
 ~        - Digital portpins can be read, if they&lt;br /&gt;
 ~          were configured as INPUTs before:&lt;br /&gt;
 ~          config_IO2(0b1111111111111111);&lt;br /&gt;
 ~        - Digital portpin input values can be&lt;br /&gt;
 ~          inverted with the function&lt;br /&gt;
 ~          invert_IO(2,invrt)!&lt;br /&gt;
 ~&lt;br /&gt;
 */&lt;br /&gt;
void RP6_ArduIO::readArduino_Uno_Exp(void)&lt;br /&gt;
{&lt;br /&gt;
  read_IO(2);&lt;br /&gt;
  read_AD(3);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
 ~ Additional info&lt;br /&gt;
 ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
 ~ Changelog:&lt;br /&gt;
 ~ - v. 1.0 (initial release) 22.10.2014 by Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Library Keywords=====&lt;br /&gt;
&lt;br /&gt;
Datei keywords.txt:&lt;br /&gt;
&amp;lt;pre&amp;gt;#######################################&lt;br /&gt;
# Syntax Coloring Map For RP6_ArduIO&lt;br /&gt;
#######################################&lt;br /&gt;
&lt;br /&gt;
#######################################&lt;br /&gt;
# Datatypes, Classes &amp;amp; C++ Keywords&lt;br /&gt;
# (KEYWORD1)&lt;br /&gt;
#######################################&lt;br /&gt;
&lt;br /&gt;
RP6_ArduIO	KEYWORD1&lt;br /&gt;
arduio	KEYWORD1&lt;br /&gt;
status_t	KEYWORD1&lt;br /&gt;
ioexp_1_t	KEYWORD1&lt;br /&gt;
ioexp_2_t	KEYWORD1&lt;br /&gt;
ioexp_3_t	KEYWORD1&lt;br /&gt;
addaexp_1_t	KEYWORD1&lt;br /&gt;
addaexp_2_t	KEYWORD1&lt;br /&gt;
addaexp_3_t	KEYWORD1&lt;br /&gt;
&lt;br /&gt;
#######################################&lt;br /&gt;
# Methods and Functions (KEYWORD2)&lt;br /&gt;
#######################################&lt;br /&gt;
enableHB	KEYWORD2&lt;br /&gt;
disableHB	KEYWORD2&lt;br /&gt;
enablePPWM_G	KEYWORD2&lt;br /&gt;
disablePPWM_G	KEYWORD2&lt;br /&gt;
enablePWMs	KEYWORD2&lt;br /&gt;
disablePWMs	KEYWORD2&lt;br /&gt;
enableOuts	KEYWORD2&lt;br /&gt;
disableOuts	KEYWORD2&lt;br /&gt;
enableDAs	KEYWORD2&lt;br /&gt;
disableDAs	KEYWORD2&lt;br /&gt;
PCA9685_init	KEYWORD2&lt;br /&gt;
PCA9685_set	KEYWORD2&lt;br /&gt;
config_IO	KEYWORD2&lt;br /&gt;
update_IO	KEYWORD2&lt;br /&gt;
set_IO	KEYWORD2&lt;br /&gt;
invert_IO	KEYWORD2&lt;br /&gt;
read_IO	KEYWORD2&lt;br /&gt;
read_AD	KEYWORD2&lt;br /&gt;
write_DA	KEYWORD2&lt;br /&gt;
disable_DA	KEYWORD2&lt;br /&gt;
getUbSensor	KEYWORD2&lt;br /&gt;
calculateUb	KEYWORD2&lt;br /&gt;
measureUb	KEYWORD2&lt;br /&gt;
setLEDs	KEYWORD2&lt;br /&gt;
dimLED	KEYWORD2&lt;br /&gt;
setLED1	KEYWORD2&lt;br /&gt;
setLED2	KEYWORD2&lt;br /&gt;
setLED3	KEYWORD2&lt;br /&gt;
setLED4	KEYWORD2&lt;br /&gt;
setPWMs	KEYWORD2&lt;br /&gt;
dimPWM	KEYWORD2&lt;br /&gt;
setPWM1	KEYWORD2&lt;br /&gt;
setPWM2	KEYWORD2&lt;br /&gt;
setPWM3	KEYWORD2&lt;br /&gt;
setPWM4	KEYWORD2&lt;br /&gt;
setPowerPWMMode	KEYWORD2&lt;br /&gt;
setPowerPWMs	KEYWORD2&lt;br /&gt;
dimPowerPWM	KEYWORD2&lt;br /&gt;
setPowerPWM1	KEYWORD2&lt;br /&gt;
setPowerPWM2	KEYWORD2&lt;br /&gt;
setPowerPWM3	KEYWORD2&lt;br /&gt;
setPowerPWM4	KEYWORD2&lt;br /&gt;
setPowerPWM5	KEYWORD2&lt;br /&gt;
setPowerPWM6	KEYWORD2&lt;br /&gt;
setPowerPWM7	KEYWORD2&lt;br /&gt;
setPowerPWM8	KEYWORD2&lt;br /&gt;
adjustPowerHB	KEYWORD2&lt;br /&gt;
readSystem	KEYWORD2&lt;br /&gt;
init	KEYWORD2&lt;br /&gt;
shutdown	KEYWORD2&lt;br /&gt;
updateArduino_Uno_Exp_IO	KEYWORD2&lt;br /&gt;
setArduino_Uno_Exp_IO	KEYWORD2&lt;br /&gt;
readArduino_Uno_Exp	KEYWORD2&lt;br /&gt;
&lt;br /&gt;
#######################################&lt;br /&gt;
# Setup &amp;amp; Loop Functions, the Serial&lt;br /&gt;
# Keywords (KEYWORD3)&lt;br /&gt;
#######################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#######################################&lt;br /&gt;
# Constants (LITERAL1)&lt;br /&gt;
#######################################&lt;br /&gt;
PWM_FREQUENCY	LITERAL1&lt;br /&gt;
ADCVAL_UB_LOW	LITERAL1&lt;br /&gt;
DISABLE_ON_SHUTDOWN	LITERAL1&lt;br /&gt;
READ_ADCUB	LITERAL1&lt;br /&gt;
DUTY_0	LITERAL1&lt;br /&gt;
DUTY_10	LITERAL1&lt;br /&gt;
DUTY_25	LITERAL1&lt;br /&gt;
DUTY_50	LITERAL1&lt;br /&gt;
DUTY_75	LITERAL1&lt;br /&gt;
DUTY_90	LITERAL1&lt;br /&gt;
DUTY_100	LITERAL1&lt;br /&gt;
FWD	LITERAL1&lt;br /&gt;
BWD	LITERAL1&lt;br /&gt;
BRK	LITERAL1&lt;br /&gt;
OFF	LITERAL1&lt;br /&gt;
&lt;br /&gt;
#######################################&lt;br /&gt;
# Built-in Variables (LITERAL2)&lt;br /&gt;
#######################################&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Definitionen Header=====&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO_Defines.h:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*                                               ___   ___                   */&lt;br /&gt;
/*                 _______________________      /   \ /   \                  */&lt;br /&gt;
/*                 \| RP6  ROBOT SYSTEM |/     (  -  X  +  )                 */&lt;br /&gt;
/*                  \_-_-_-_-_-_-_-_-_-_/       \___/ \___/                  */&lt;br /&gt;
/*                                                ARDUINO                    */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*------------------------------ [c]2014 - Dirk -----------------------------*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Target:    Arduino UNO with RP6 ArduIO Board (Shield)&lt;br /&gt;
 ~ Library:   RP6_ArduIO Defines Header&lt;br /&gt;
 ~ Version:   1.0&lt;br /&gt;
 ~ Author(s): Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Description:&lt;br /&gt;
 ~ This is the RP6_ArduIO Libaray Defines header file. In this header you&lt;br /&gt;
 ~ will find additional defines, that will help to make your program better&lt;br /&gt;
 ~ readable. You can also use the RP6_ArduIO Library WITHOUT this header.&lt;br /&gt;
 */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// RP6_ArduIO Library additional defines:&lt;br /&gt;
// (For a better user program readability!)&lt;br /&gt;
// Hint: This header assumes, that you include this file in your program&lt;br /&gt;
//       exactly like this:&lt;br /&gt;
//         #define CLASS_OBJECT arduio&lt;br /&gt;
//         #include &amp;lt;RP6_ArduIO_Defines.h&amp;gt;&lt;br /&gt;
//         RP6_ArduIO arduio;      // class object&lt;br /&gt;
//       Of course you may choose another object name than &amp;quot;arduio&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
#define isUbLow() (CLASS_OBJECT.status.bits &amp;amp; 1)&lt;br /&gt;
#define isHB1Enable() (CLASS_OBJECT.status.bits &amp;amp; 2)&lt;br /&gt;
#define isHB2Enable() (CLASS_OBJECT.status.bits &amp;amp; 4)&lt;br /&gt;
#define isPPWM_G1Enable() (CLASS_OBJECT.status.bits &amp;amp; 8)&lt;br /&gt;
#define isPPWM_G2Enable() (CLASS_OBJECT.status.bits &amp;amp; 16)&lt;br /&gt;
#define isPWMsEnable() (CLASS_OBJECT.status.bits &amp;amp; 32)&lt;br /&gt;
#define isOutsEnable() (CLASS_OBJECT.status.bits &amp;amp; 64)&lt;br /&gt;
#define isDAsEnable() (CLASS_OBJECT.status.bits &amp;amp; 128)&lt;br /&gt;
&lt;br /&gt;
#define enableHB1() {CLASS_OBJECT.enableHB(1);}&lt;br /&gt;
#define enableHB2() {CLASS_OBJECT.enableHB(2);}&lt;br /&gt;
#define disableHB1() {CLASS_OBJECT.disableHB(1);}&lt;br /&gt;
#define disableHB2() {CLASS_OBJECT.disableHB(2);}&lt;br /&gt;
#define enablePPWM_G1() {CLASS_OBJECT.enablePPWM_G(1);}&lt;br /&gt;
#define enablePPWM_G2() {CLASS_OBJECT.enablePPWM_G(2);}&lt;br /&gt;
#define disablePPWM_G1() {CLASS_OBJECT.disablePPWM_G(1);}&lt;br /&gt;
#define disablePPWM_G2() {CLASS_OBJECT.disablePPWM_G(2);}&lt;br /&gt;
#define setDefaultStatus() {CLASS_OBJECT.enablePPWM_G(1); \&lt;br /&gt;
 CLASS_OBJECT.enablePPWM_G(2);CLASS_OBJECT.enablePWMs(); \&lt;br /&gt;
 CLASS_OBJECT.enableOuts();CLASS_OBJECT.enableDAs();}&lt;br /&gt;
#define setShutdownStatus() {CLASS_OBJECT.disableHB(1); \&lt;br /&gt;
 CLASS_OBJECT.disableHB(2);CLASS_OBJECT.disablePPWM_G(1); \&lt;br /&gt;
 CLASS_OBJECT.disablePPWM_G(2);CLASS_OBJECT.disablePWMs(); \&lt;br /&gt;
 CLASS_OBJECT.disableOuts();CLASS_OBJECT.disableDAs();}&lt;br /&gt;
&lt;br /&gt;
#define initPWM(__FREQ__) {PCA9685_init(__FREQ__);}&lt;br /&gt;
#define setPWM(__CHANNEL__,__DUTY__) {PCA9685_set(__CHANNEL__,__DUTY__);}&lt;br /&gt;
&lt;br /&gt;
#define config_IO1(__INOUT__) {CLASS_OBJECT.config_IO(1,__INOUT__);}&lt;br /&gt;
#define config_IO2(__INOUT__) {CLASS_OBJECT.config_IO(2,__INOUT__);}&lt;br /&gt;
#define config_IO3(__INOUT__) {CLASS_OBJECT.config_IO(3,__INOUT__);}&lt;br /&gt;
#define update_IO1() {CLASS_OBJECT.update_IO(1);}&lt;br /&gt;
#define update_IO2() {CLASS_OBJECT.update_IO(2);}&lt;br /&gt;
#define update_IO3() {CLASS_OBJECT.update_IO(3);}&lt;br /&gt;
#define set_IO1(__OUT__) {CLASS_OBJECT.set_IO(1,__OUT__);}&lt;br /&gt;
#define set_IO2(__OUT__) {CLASS_OBJECT.set_IO(2,__OUT__);}&lt;br /&gt;
#define set_IO3(__OUT__) {CLASS_OBJECT.set_IO(3,__OUT__);}&lt;br /&gt;
#define invert_IO1(__INVRT__) {CLASS_OBJECT.invert_IO(1,__INVRT__);}&lt;br /&gt;
#define invert_IO2(__INVRT__) {CLASS_OBJECT.invert_IO(2,__INVRT__);}&lt;br /&gt;
#define invert_IO3(__INVRT__) {CLASS_OBJECT.invert_IO(3,__INVRT__);}&lt;br /&gt;
#define read_IO1() {CLASS_OBJECT.read_IO(1);}&lt;br /&gt;
#define read_IO2() {CLASS_OBJECT.read_IO(2);}&lt;br /&gt;
#define read_IO3() {CLASS_OBJECT.read_IO(3);}&lt;br /&gt;
#define readAll_IOs() {CLASS_OBJECT.read_IO(1); \&lt;br /&gt;
 CLASS_OBJECT.read_IO(2);CLASS_OBJECT.read_IO(3);}&lt;br /&gt;
&lt;br /&gt;
#define read_AD1() {CLASS_OBJECT.read_AD(1);}&lt;br /&gt;
#define read_AD2() {CLASS_OBJECT.read_AD(2);}&lt;br /&gt;
#define read_AD3() {CLASS_OBJECT.read_AD(3);}&lt;br /&gt;
#define readAll_ADs() {CLASS_OBJECT.read_AD(1); \&lt;br /&gt;
 CLASS_OBJECT.read_AD(2);CLASS_OBJECT.read_AD(3);}&lt;br /&gt;
#define write_DA1(__AOUT__) {CLASS_OBJECT.write_DA(1,__AOUT__);}&lt;br /&gt;
#define write_DA2(__AOUT__) {CLASS_OBJECT.write_DA(2,__AOUT__);}&lt;br /&gt;
#define write_DA3(__AOUT__) {CLASS_OBJECT.write_DA(3,__AOUT__);}&lt;br /&gt;
#define disable_DA1() {CLASS_OBJECT.disable_DA(1);}&lt;br /&gt;
#define disable_DA2() {CLASS_OBJECT.disable_DA(2);}&lt;br /&gt;
#define disable_DA3() {CLASS_OBJECT.disable_DA(3);}&lt;br /&gt;
#define disableAll_DAs() {CLASS_OBJECT.disable_DA(1); \&lt;br /&gt;
 CLASS_OBJECT.disable_DA(2);CLASS_OBJECT.disable_DA(3);}&lt;br /&gt;
&lt;br /&gt;
#define dimLED1(__DUTY__) {CLASS_OBJECT.dimLED(1,__DUTY__);}&lt;br /&gt;
#define dimLED2(__DUTY__) {CLASS_OBJECT.dimLED(2,__DUTY__);}&lt;br /&gt;
#define dimLED3(__DUTY__) {CLASS_OBJECT.dimLED(3,__DUTY__);}&lt;br /&gt;
#define dimLED4(__DUTY__) {CLASS_OBJECT.dimLED(4,__DUTY__);}&lt;br /&gt;
#define dimPWM1(__DUTY__) {CLASS_OBJECT.dimPWM(1,__DUTY__);}&lt;br /&gt;
#define dimPWM2(__DUTY__) {CLASS_OBJECT.dimPWM(2,__DUTY__);}&lt;br /&gt;
#define dimPWM3(__DUTY__) {CLASS_OBJECT.dimPWM(3,__DUTY__);}&lt;br /&gt;
#define dimPWM4(__DUTY__) {CLASS_OBJECT.dimPWM(4,__DUTY__);}&lt;br /&gt;
&lt;br /&gt;
#define dimPowerPWM1(__DUTY__) {CLASS_OBJECT.dimPowerPWM(1,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM2(__DUTY__) {CLASS_OBJECT.dimPowerPWM(2,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM3(__DUTY__) {CLASS_OBJECT.dimPowerPWM(3,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM4(__DUTY__) {CLASS_OBJECT.dimPowerPWM(4,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM5(__DUTY__) {CLASS_OBJECT.dimPowerPWM(5,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM6(__DUTY__) {CLASS_OBJECT.dimPowerPWM(6,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM7(__DUTY__) {CLASS_OBJECT.dimPowerPWM(7,__DUTY__);}&lt;br /&gt;
#define dimPowerPWM8(__DUTY__) {CLASS_OBJECT.dimPowerPWM(8,__DUTY__);}&lt;br /&gt;
&lt;br /&gt;
#define powerHB1(__DIR__,__DUTY__) {CLASS_OBJECT.adjustPowerHB(1,__DIR__,__DUTY__);}&lt;br /&gt;
#define powerHB1STOP() {CLASS_OBJECT.adjustPowerHB(1,FWD,DUTY_0);}&lt;br /&gt;
#define powerHB1FWD(__DUTY__) {CLASS_OBJECT.adjustPowerHB(1,FWD,__DUTY__);}&lt;br /&gt;
#define powerHB1BWD(__DUTY__) {CLASS_OBJECT.adjustPowerHB(1,BWD,__DUTY__);}&lt;br /&gt;
#define powerHB1BRK() {CLASS_OBJECT.adjustPowerHB(1,BRK,0);}&lt;br /&gt;
#define powerHB1OFF() {CLASS_OBJECT.adjustPowerHB(1,OFF,0);}&lt;br /&gt;
#define powerHB2(__DIR__,__DUTY__) {CLASS_OBJECT.adjustPowerHB(2,__DIR__,__DUTY__);}&lt;br /&gt;
#define powerHB2STOP() {CLASS_OBJECT.adjustPowerHB(2,FWD,DUTY_0);}&lt;br /&gt;
#define powerHB2FWD(__DUTY__) {CLASS_OBJECT.adjustPowerHB(2,FWD,__DUTY__);}&lt;br /&gt;
#define powerHB2BWD(__DUTY__) {CLASS_OBJECT.adjustPowerHB(2,BWD,__DUTY__);}&lt;br /&gt;
#define powerHB2BRK() {CLASS_OBJECT.adjustPowerHB(2,BRK,0);}&lt;br /&gt;
#define powerHB2OFF() {CLASS_OBJECT.adjustPowerHB(2,OFF,0);}&lt;br /&gt;
&lt;br /&gt;
#define readArduino_Uno_Exp_IO() {CLASS_OBJECT.read_IO(2);}&lt;br /&gt;
#define readArduino_Uno_Exp_AD() {CLASS_OBJECT.read_AD(3);}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
&lt;br /&gt;
====Demo 1====&lt;br /&gt;
Die Demo 1 besteht eigentlich aus ZWEI Testprogrammen. Wird sie so kompiliert, wie sie hier steht, erfolgt ein '''SCHREIB-Test''' (Output) auf allen Funktionen der ArduIO. Wird die Definition &amp;quot;WRITE_TEST&amp;quot; auskommentiert, erfolgt ein '''LESE-Test''' (Input).&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO_Demo_01.ino:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*------------------------------ [c]2014 - Dirk -----------------------------*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Target:    Arduino UNO with RP6 ArduIO Board (Shield)&lt;br /&gt;
 ~ Example:   RP6_ArduIO_Demo_01&lt;br /&gt;
 ~ Version:   1.0&lt;br /&gt;
 ~ Author(s): Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Description:&lt;br /&gt;
 ~ In this example we show a first test for the RP6 ArduIO Board.&lt;br /&gt;
 */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Defines:&lt;br /&gt;
#define CLASS_OBJECT arduio&lt;br /&gt;
// Define the kind of demo:&lt;br /&gt;
// (If you don't define WRITE_TEST the READ TEST will be performed!)&lt;br /&gt;
#define WRITE_TEST&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Includes:&lt;br /&gt;
#include &amp;lt;RP6_ArduIO.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RP6_ArduIO_Defines.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Constants:&lt;br /&gt;
const int buttonPin = 2;     // the number of the pushbutton pin&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Variables:&lt;br /&gt;
byte onoff = 0;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Class object:&lt;br /&gt;
RP6_ArduIO arduio;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialize serial and wait for port to open:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
//  while (!Serial) {&lt;br /&gt;
//    ; // wait for serial port to connect. Needed for Leonardo only&lt;br /&gt;
//  }&lt;br /&gt;
&lt;br /&gt;
  // Wire init&lt;br /&gt;
  Wire.begin();      // wake up I2C bus&lt;br /&gt;
&lt;br /&gt;
  // initialize the pushbutton pin as an input:&lt;br /&gt;
  pinMode(buttonPin, INPUT);     &lt;br /&gt;
&lt;br /&gt;
  // First test (executed once):&lt;br /&gt;
  Serial.println(&amp;quot;Arduino UNO ArduIO Test 1!&amp;quot;);&lt;br /&gt;
#ifdef WRITE_TEST&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;PLEASE ENSURE THAT NO PINS OF PLUG SV_H-BRIDGES ARE CONNECTED!!!&amp;quot;);&lt;br /&gt;
#endif&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  arduio.init();      // ArduIO init!!!&lt;br /&gt;
#ifdef WRITE_TEST&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; LED1&amp;quot;);&lt;br /&gt;
  arduio.setLED1(1);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED1(0);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED1(1);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; LED2&amp;quot;);&lt;br /&gt;
  arduio.setLED2(1);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED2(0);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED2(1);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; LED3&amp;quot;);&lt;br /&gt;
  arduio.setLED3(1);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED3(0);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED3(1);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; LED4&amp;quot;);&lt;br /&gt;
  arduio.setLED4(1);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED4(0);&lt;br /&gt;
  delay(500);&lt;br /&gt;
  arduio.setLED4(1);&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
  arduio.setLEDs(0b0000);&lt;br /&gt;
&lt;br /&gt;
  arduio.config_IO(1, 0);&lt;br /&gt;
  arduio.config_IO(2, 0);&lt;br /&gt;
  arduio.config_IO(3, 0);      // All IOs OUTPUTs&lt;br /&gt;
  delay(100);&lt;br /&gt;
#else&lt;br /&gt;
  arduio.config_IO(1, 0b1111111111111111);&lt;br /&gt;
  arduio.config_IO(2, 0b1111111111111111);&lt;br /&gt;
  arduio.config_IO(3, 0b1111111111111111);      // All IOs INPUTs&lt;br /&gt;
  delay(100);&lt;br /&gt;
#endif&lt;br /&gt;
  Serial.println(&amp;quot;===&amp;gt; PRESS BUTTON TO STOP THE DEMO!!! &amp;lt;===&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void loop() {&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  if (onoff) onoff = 0;&lt;br /&gt;
  else onoff = 1;&lt;br /&gt;
#ifndef WRITE_TEST&lt;br /&gt;
  // UB voltage sensor ADC test:&lt;br /&gt;
  arduio.ubv = arduio.measureUb();&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.print(&amp;quot;UB Voltage: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ubv, 1);&lt;br /&gt;
  Serial.println(&amp;quot;V&amp;quot;);&lt;br /&gt;
  Serial.print(&amp;quot;ADC UB: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.adcub, DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
#else&lt;br /&gt;
  // PWM controller test:&lt;br /&gt;
  //   LEDs &amp;amp; IOs &amp;amp; free PWMs &amp;amp; power PWMs ON/OFF:&lt;br /&gt;
  if (onoff) {&lt;br /&gt;
    Serial.println(&amp;quot;Test -&amp;gt; LEDs: 1001, IOs: 1, PWMs: 1001, HBs N-MOSFets: 1&amp;quot;);&lt;br /&gt;
    arduio.set_IO(1, 0xffff);&lt;br /&gt;
    arduio.set_IO(2, 0xffff);&lt;br /&gt;
    arduio.set_IO(3, 0xffff);      // All IOs high&lt;br /&gt;
    arduio.setLED1(1);&lt;br /&gt;
    arduio.setLED2(0);&lt;br /&gt;
    arduio.setLED3(0);&lt;br /&gt;
    arduio.setLED4(1);&lt;br /&gt;
    arduio.setPWM1(1);&lt;br /&gt;
    arduio.setPWM2(0);&lt;br /&gt;
    arduio.setPWM3(0);&lt;br /&gt;
    arduio.setPWM4(1);&lt;br /&gt;
    arduio.setPowerPWMs(0b10101010);&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    Serial.println(&amp;quot;Test -&amp;gt; LEDs: 0110, IOs: 0, PWMs: 0110, HBs P-MOSFets: 1&amp;quot;);&lt;br /&gt;
    arduio.set_IO(1, 0);&lt;br /&gt;
    arduio.set_IO(2, 0);&lt;br /&gt;
    arduio.set_IO(3, 0);      // All IOs low&lt;br /&gt;
    arduio.setLEDs(0b0110);&lt;br /&gt;
    arduio.setPWMs(0b0110);&lt;br /&gt;
    arduio.setPowerPWMs(0b01010101);&lt;br /&gt;
  }&lt;br /&gt;
#endif&lt;br /&gt;
#ifndef WRITE_TEST&lt;br /&gt;
  // I/O Expander 1 read test:&lt;br /&gt;
  arduio.read_IO(1);      // Read GP100..GP117&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IO_1: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.io1ins.port, BIN);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  // I/O Expander 2 read test:&lt;br /&gt;
  arduio.read_IO(2);      // Read GP200..GP217&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IO_2: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.io2ins.port, BIN);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot; ARD:     1111&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;        89012376543210&amp;quot;);&lt;br /&gt;
  // I/O Expander 3 read test:&lt;br /&gt;
  arduio.read_IO(3);      // Read GP300..GP317&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;IO_3: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.io3ins.port, BIN);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // AD/DA Converter 1 ADC test:&lt;br /&gt;
  arduio.read_AD(1);      // Read AD10..AD13&lt;br /&gt;
  Serial.println(&amp;quot;ADDA_1: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad1ins.AD10, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad1ins.AD11, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad1ins.AD12, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad1ins.AD13, DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot; U[cV]: &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad1ins.AD10), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad1ins.AD11), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad1ins.AD12), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad1ins.AD13), DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;        A0  | A1  | A2  | A3&amp;quot;);&lt;br /&gt;
  // AD/DA Converter 2 ADC test:&lt;br /&gt;
  arduio.read_AD(2);      // Read AD20..AD23&lt;br /&gt;
  Serial.println(&amp;quot;ADDA_2: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad2ins.AD20, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad2ins.AD21, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad2ins.AD22, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad2ins.AD23, DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot; U[cV]: &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad2ins.AD20), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad2ins.AD21), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad2ins.AD22), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad2ins.AD23), DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;        A0  | A1  | A2  | A3&amp;quot;);&lt;br /&gt;
  // AD/DA Converter 3 ADC test:&lt;br /&gt;
  arduio.read_AD(3);      // Read AD30..AD33&lt;br /&gt;
  Serial.println(&amp;quot;ADDA_3: &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad3ins.ARD_A0, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad3ins.ARD_A1, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad3ins.ARD_A2, DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(arduio.ad3ins.ARD_A3, DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot; U[cV]: &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad3ins.ARD_A0), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad3ins.ARD_A1), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad3ins.ARD_A2), DEC);&lt;br /&gt;
  Serial.print(&amp;quot; | &amp;quot;);&lt;br /&gt;
  Serial.print(UCV_AD(arduio.ad3ins.ARD_A3), DEC);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;   ARD: A0  | A1  | A2  | A3&amp;quot;);&lt;br /&gt;
#else&lt;br /&gt;
  // AD/DA Converter 1..3 DAC test:&lt;br /&gt;
  if (onoff) {&lt;br /&gt;
    Serial.println(&amp;quot;Test -&amp;gt; DA1..3: 1.50V&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    arduio.write_DA(1, AOUT_CV(150));      // DA1: 1.5V&lt;br /&gt;
    arduio.write_DA(2, AOUT_CV(150));      // DA2: 1.5V&lt;br /&gt;
    arduio.write_DA(3, AOUT_CV(150));      // DA3: 1.5V&lt;br /&gt;
  }&lt;br /&gt;
  else {&lt;br /&gt;
    Serial.println(&amp;quot;Test -&amp;gt; DA1..3: 3.50V&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    arduio.write_DA(1, AOUT_CV(350));      // DA1: 3.5V&lt;br /&gt;
    arduio.write_DA(2, AOUT_CV(350));      // DA2: 3.5V&lt;br /&gt;
    arduio.write_DA(3, AOUT_CV(350));      // DA3: 3.5V&lt;br /&gt;
  }&lt;br /&gt;
#endif&lt;br /&gt;
  // ArduIO shutdown:&lt;br /&gt;
  byte key = digitalRead(buttonPin); &lt;br /&gt;
  if (key == HIGH) {&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Press button again for ArduIO SHUTDOWN&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    do {&lt;br /&gt;
      delay(10);&lt;br /&gt;
      key = digitalRead(buttonPin);&lt;br /&gt;
    } while (key == HIGH);&lt;br /&gt;
    do {&lt;br /&gt;
      delay(10);&lt;br /&gt;
      key = digitalRead(buttonPin);&lt;br /&gt;
    } while (key == LOW);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Please wait for ArduIO SHUTDOWN...&amp;quot;);&lt;br /&gt;
    arduio.shutdown();&lt;br /&gt;
    delay(3000);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;The ArduIO now is in SHUTDOWN MODE!!!&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;RESET the microcontroller now...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    while(true) {};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
&lt;br /&gt;
====Demo 2====&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO_Demo_02.ino:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*------------------------------ [c]2014 - Dirk -----------------------------*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Target:    Arduino UNO with RP6 ArduIO Board (Shield)&lt;br /&gt;
 ~ Example:   RP6_ArduIO_Demo_02&lt;br /&gt;
 ~ Version:   1.0&lt;br /&gt;
 ~ Author(s): Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Description:&lt;br /&gt;
 ~ In this example we show a second test for the RP6 ArduIO Board.&lt;br /&gt;
 */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Defines:&lt;br /&gt;
#define CLASS_OBJECT arduio&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Includes:&lt;br /&gt;
#include &amp;lt;RP6_ArduIO.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RP6_ArduIO_Defines.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Constants:&lt;br /&gt;
const int buttonPin = 2;     // the number of the pushbutton pin&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Variables:&lt;br /&gt;
byte duty_pct = 0;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Class object:&lt;br /&gt;
RP6_ArduIO arduio;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialize serial and wait for port to open:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
//  while (!Serial) {&lt;br /&gt;
//    ; // wait for serial port to connect. Needed for Leonardo only&lt;br /&gt;
//  }&lt;br /&gt;
&lt;br /&gt;
  // Wire init&lt;br /&gt;
  Wire.begin();      // wake up I2C bus&lt;br /&gt;
&lt;br /&gt;
  // initialize the pushbutton pin as an input:&lt;br /&gt;
  pinMode(buttonPin, INPUT);     &lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Arduino UNO ArduIO Test 2!&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;PLEASE ENSURE THAT NO PINS OF PLUG SV_H-BRIDGES ARE CONNECTED!!!&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  arduio.init();      // ArduIO init!!!&lt;br /&gt;
  delay(5000);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;===&amp;gt; PRESS BUTTON TO STOP THE DEMO!!! &amp;lt;===&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void loop() {&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // PWM controller test:&lt;br /&gt;
  //   LEDs &amp;amp; free PWMs &amp;amp; power PWMs dim UP:&lt;br /&gt;
  Serial.println(&amp;quot;==&amp;gt; DIM Tests: &amp;quot;);&lt;br /&gt;
  Serial.print(duty_pct, DEC);&lt;br /&gt;
  Serial.println(&amp;quot; % Duty Cycle&amp;quot;);&lt;br /&gt;
  arduio.dimLED(1, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimLED(2, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimLED(3, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimLED(4, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPWM(1, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPWM(2, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPWM(3, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPWM(4, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(1, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(2, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(3, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(4, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(5, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(6, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(7, DUTY_PCT(duty_pct));&lt;br /&gt;
  arduio.dimPowerPWM(8, DUTY_PCT(duty_pct));&lt;br /&gt;
  duty_pct += 10;&lt;br /&gt;
  if (duty_pct &amp;gt; 100) {&lt;br /&gt;
    duty_pct = 0;&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // ArduIO shutdown:&lt;br /&gt;
  byte key = digitalRead(buttonPin); &lt;br /&gt;
  if (key == HIGH) {&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Press button again for ArduIO SHUTDOWN&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    do {&lt;br /&gt;
      delay(10);&lt;br /&gt;
      key = digitalRead(buttonPin);&lt;br /&gt;
    } while (key == HIGH);&lt;br /&gt;
    do {&lt;br /&gt;
      delay(10);&lt;br /&gt;
      key = digitalRead(buttonPin);&lt;br /&gt;
    } while (key == LOW);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Please wait for ArduIO SHUTDOWN...&amp;quot;);&lt;br /&gt;
    arduio.shutdown();&lt;br /&gt;
    delay(3000);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;The ArduIO now is in SHUTDOWN MODE!!!&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;RESET the microcontroller now...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    while(true) {};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
&lt;br /&gt;
====Demo 3====&lt;br /&gt;
&lt;br /&gt;
Datei RP6_ArduIO_Demo_03.ino:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*------------------------------ [c]2014 - Dirk -----------------------------*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~&lt;br /&gt;
 ~ Target:    Arduino UNO with RP6 ArduIO Board (Shield)&lt;br /&gt;
 ~ Example:   RP6_ArduIO_Demo_03&lt;br /&gt;
 ~ Version:   1.0&lt;br /&gt;
 ~ Author(s): Dirk&lt;br /&gt;
 ~&lt;br /&gt;
 ~ Description:&lt;br /&gt;
 ~ In this example we show a third test for the RP6 ArduIO Board.&lt;br /&gt;
 */&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Defines:&lt;br /&gt;
#define CLASS_OBJECT arduio&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Includes:&lt;br /&gt;
#include &amp;lt;RP6_ArduIO.h&amp;gt;&lt;br /&gt;
#include &amp;lt;RP6_ArduIO_Defines.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Wire.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Constants:&lt;br /&gt;
const int buttonPin = 2;     // the number of the pushbutton pin&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Variables:&lt;br /&gt;
byte duty_pct = 0;&lt;br /&gt;
byte cnt_sec = 0;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
// Class object:&lt;br /&gt;
RP6_ArduIO arduio;&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Initialize serial and wait for port to open:&lt;br /&gt;
  Serial.begin(9600); &lt;br /&gt;
//  while (!Serial) {&lt;br /&gt;
//    ; // wait for serial port to connect. Needed for Leonardo only&lt;br /&gt;
//  }&lt;br /&gt;
&lt;br /&gt;
  // Wire init&lt;br /&gt;
  Wire.begin();      // wake up I2C bus&lt;br /&gt;
&lt;br /&gt;
  // initialize the pushbutton pin as an input:&lt;br /&gt;
  pinMode(buttonPin, INPUT);     &lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Arduino UNO ArduIO Test 3!&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;YOU MAY WATCH THE RED &amp;amp; GREEN MOSFET-LEDS AND/OR&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;CONNECT  A DC-MOTOR TO THE PLUG  SV_H-BRIDGES!!!&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  arduio.init();      // ArduIO init!!!&lt;br /&gt;
  arduio.enableHB1();      // Enable HB1!!!&lt;br /&gt;
  arduio.enableHB2();      // Enable HB2!!!&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB1 OFF&amp;quot;);&lt;br /&gt;
  arduio.powerHB1OFF();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB1 FWD 10%&amp;quot;);&lt;br /&gt;
  arduio.powerHB1FWD(DUTY_PCT(10));&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB1 STOP&amp;quot;);&lt;br /&gt;
  arduio.powerHB1STOP();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB1 BWD 10%&amp;quot;);&lt;br /&gt;
  arduio.powerHB1BWD(DUTY_PCT(10));&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB1 BRK&amp;quot;);&lt;br /&gt;
  arduio.powerHB1BRK();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB1 OFF&amp;quot;);&lt;br /&gt;
  arduio.powerHB1OFF();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB2 OFF&amp;quot;);&lt;br /&gt;
  arduio.powerHB2OFF();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB2 FWD 10%&amp;quot;);&lt;br /&gt;
  arduio.powerHB2FWD(DUTY_PCT(10));&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB2 STOP&amp;quot;);&lt;br /&gt;
  arduio.powerHB2STOP();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB2 BWD 10%&amp;quot;);&lt;br /&gt;
  arduio.powerHB2BWD(DUTY_PCT(10));&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB2 BRK&amp;quot;);&lt;br /&gt;
  arduio.powerHB2BRK();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;Test -&amp;gt; HB2 OFF&amp;quot;);&lt;br /&gt;
  arduio.powerHB2OFF();&lt;br /&gt;
  delay(5000);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;===&amp;gt; PRESS BUTTON TO STOP THE DEMO!!! &amp;lt;===&amp;quot;);&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
void loop() {&lt;br /&gt;
  delay(1000);&lt;br /&gt;
  // PWM controller test:&lt;br /&gt;
  //   H-Bridges:&lt;br /&gt;
  Serial.println(&amp;quot;==&amp;gt; HB1/2 DIM Tests: &amp;quot;);&lt;br /&gt;
  Serial.print(duty_pct, DEC);&lt;br /&gt;
  Serial.println(&amp;quot; % Duty Cycle&amp;quot;);&lt;br /&gt;
  if (cnt_sec &amp;lt; 22) {      // 2 cycles FWD&lt;br /&gt;
    Serial.println(&amp;quot; Dir: FWD&amp;quot;);&lt;br /&gt;
    arduio.powerHB1FWD(DUTY_PCT(duty_pct));&lt;br /&gt;
    arduio.powerHB2FWD(DUTY_PCT(duty_pct));&lt;br /&gt;
  }&lt;br /&gt;
  else {      // 2 cycles BWD&lt;br /&gt;
    Serial.println(&amp;quot; Dir: BWD&amp;quot;);&lt;br /&gt;
    arduio.powerHB1BWD(DUTY_PCT(duty_pct));&lt;br /&gt;
    arduio.powerHB2BWD(DUTY_PCT(duty_pct));&lt;br /&gt;
  }&lt;br /&gt;
  cnt_sec++;&lt;br /&gt;
  if (cnt_sec &amp;gt; 43) cnt_sec = 0;&lt;br /&gt;
  duty_pct += 10;&lt;br /&gt;
  if (duty_pct &amp;gt; 100) {&lt;br /&gt;
    duty_pct = 0;&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // ArduIO shutdown:&lt;br /&gt;
  byte key = digitalRead(buttonPin); &lt;br /&gt;
  if (key == HIGH) {&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Press button again for ArduIO SHUTDOWN&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    do {&lt;br /&gt;
      delay(10);&lt;br /&gt;
      key = digitalRead(buttonPin);&lt;br /&gt;
    } while (key == HIGH);&lt;br /&gt;
    do {&lt;br /&gt;
      delay(10);&lt;br /&gt;
      key = digitalRead(buttonPin);&lt;br /&gt;
    } while (key == LOW);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;Please wait for ArduIO SHUTDOWN...&amp;quot;);&lt;br /&gt;
    arduio.shutdown();&lt;br /&gt;
    delay(3000);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;The ArduIO now is in SHUTDOWN MODE!!!&amp;quot;);&lt;br /&gt;
    delay(1000);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;RESET the microcontroller now...&amp;quot;);&lt;br /&gt;
    Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
    while(true) {};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Erklärung=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Technische Informationen==&lt;br /&gt;
===I2C-Adressen===&lt;br /&gt;
'''I2C-Adressen der ArduIO:'''&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
| '''I2C-Portexpander-Baustein''' || '''I2C-&amp;lt;br/&amp;gt;Adresse *''' || '''Alternative I2C-Adressen''' || '''Verwendung'''&lt;br /&gt;
|-&lt;br /&gt;
| I2C PWM Controller (IC3: PCA9685) || 0x84 || 0x86, 0x8c, 0x8e, 0xe0 || PWM Controller&lt;br /&gt;
|-&lt;br /&gt;
| I2C I/O Expander 1 5V (IC8: PCA9535) || 0x44 || 0x46, 0x4c, 0x4e || I/O Expander 1&lt;br /&gt;
|-&lt;br /&gt;
| I2C I/O Expander 2 5V (IC13: PCA9535) || 0x46 || 0x44, 0x4c, 0x4e || I/O Expander 2&lt;br /&gt;
|-&lt;br /&gt;
| I2C I/O Expander 3 3V3 (IC12: PCA9535) || 0x4c || 0x44, 0x46, 0x4e || I/O Expander 3&lt;br /&gt;
|-&lt;br /&gt;
| I2C A/D und D/A Converter 1 (IC11: PCF8591) || 0x94 || 0x96, 0x9c, 0x9e || A/D und D/A Converter 1&lt;br /&gt;
|-&lt;br /&gt;
| I2C A/D und D/A Converter 2 (IC10: PCF8591) || 0x96 || 0x94, 0x9c, 0x9e || A/D und D/A Converter 2&lt;br /&gt;
|-&lt;br /&gt;
| I2C A/D und D/A Converter 3 (IC9: PCF8591) || 0x9c || 0x94, 0x96, 0x9e || A/D und D/A Converter 3&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
'''Zu *)'''  Standard-Adresse.&lt;br /&gt;
&lt;br /&gt;
'''Zu ²)'''  Adress-Konflikt mit dem RP6-System möglich (siehe [[RP6_-_Programmierung#RP6_I2C-Adressen|hier]])!&lt;br /&gt;
&lt;br /&gt;
===Stecker-Belegungen===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Siehe auch==&lt;br /&gt;
* [[RP6v2]]&lt;br /&gt;
* [[RP6]]&lt;br /&gt;
* [[RP6 - Programmierung]]&lt;br /&gt;
* [[RP6_Sensor_Board_und_Xtra_Module]]&lt;br /&gt;
* [[RP6 Kamera - Mitmach-Projekt]]&lt;br /&gt;
* [[RP6v2 I2C-Portexpander]]&lt;br /&gt;
* [[RP6v2 USB-RS232-Adapter]]&lt;br /&gt;
* [[RP6v2 Orientierung]]&lt;br /&gt;
* [[RP6 Multi IO Projekt]]&lt;br /&gt;
* [[RP6 Multi IO Projekt - Software]]&lt;br /&gt;
* [[RP6 ArduIO]]&lt;br /&gt;
* [[Induktive_Ladestation_f%C3%BCr_den_RP6|Induktive Ladestation für den RP6]]&lt;br /&gt;
* [[IR-bake_f%C3%BCr_den_RP6|IR-bake für den RP6]]&lt;br /&gt;
* [[CCRP5]]&lt;br /&gt;
* [[Yeti]]&lt;br /&gt;
* [[Asuro]]&lt;br /&gt;
* [[C't-Bot]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich [https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER].&lt;br /&gt;
&lt;br /&gt;
[http://rn-wissen.de/wiki/index.php/RP6_ArduIO HIER] findet ihr den Hardware-Artikel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:Software]]&lt;br /&gt;
&lt;br /&gt;
==Autoren==&lt;br /&gt;
--[http://www.roboternetz.de/community/members/1972-Dirk Dirk] 22:18, 29. Nov 2014 (CET)&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25590</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25590"/>
				<updated>2014-12-01T11:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Jumper-Default.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:Spannungsversorgung.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:Spannungsversorgung.jpg&amp;diff=25589</id>
		<title>Datei:Spannungsversorgung.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:Spannungsversorgung.jpg&amp;diff=25589"/>
				<updated>2014-12-01T11:21:03Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Spannungsversorgung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Spannungsversorgung&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:ArduIO-Jumper-Default.jpg&amp;diff=25588</id>
		<title>Datei:ArduIO-Jumper-Default.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:ArduIO-Jumper-Default.jpg&amp;diff=25588"/>
				<updated>2014-12-01T11:18:49Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Überblick über die Jumper in Default-Stellung.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Überblick über die Jumper in Default-Stellung.&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25587</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25587"/>
				<updated>2014-12-01T11:16:49Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* 3,3V-I2C */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Default-Überblick.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups. Diese sind notwendig, da die I2C-Leitungen stets Pullups besitzen sollen. Für den 5V-I2C sind diese Pullups auf dem RP6-Mainboard ( &amp;quot;Base&amp;quot; ) installiert.&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25586</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25586"/>
				<updated>2014-12-01T10:06:20Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Jumper */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Default-Überblick.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25585</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25585"/>
				<updated>2014-12-01T09:56:28Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Default-Überblick.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-1.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:PWMs.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:LC-Filter MOSFET-LEDs Int-Jumper.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:Arduino-Aufnahme unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:I2C-Pegelwandler.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:ADC-1.jpg&amp;diff=25584</id>
		<title>Datei:ADC-1.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:ADC-1.jpg&amp;diff=25584"/>
				<updated>2014-12-01T09:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: ADC#1, IC11&amp;quot; mit den DAC-Herausführungen &amp;quot;DAC1&amp;quot; und &amp;quot;DAC2&amp;quot; der ADC-ICs #1 und #2- Unten rechts in grün: Adressjumper für die ADC-ICs #1 und #2. Der Wannenstecker enthält die je 4 ADCs der beiden ADC-ICs sowie +5V und GND.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ADC#1, IC11&amp;quot; mit den DAC-Herausführungen &amp;quot;DAC1&amp;quot; und &amp;quot;DAC2&amp;quot; der ADC-ICs #1 und #2- Unten rechts in grün: Adressjumper für die ADC-ICs #1 und #2. Der Wannenstecker enthält die je 4 ADCs der beiden ADC-ICs sowie +5V und GND.&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:PWMs.jpg&amp;diff=25583</id>
		<title>Datei:PWMs.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:PWMs.jpg&amp;diff=25583"/>
				<updated>2014-12-01T09:48:52Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: PWM-Expander &amp;quot;IC3&amp;quot; mit den vier Dual-MOSFETs, den PWM-dreifach-Jumpern für den Arduino und den vier LEDs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PWM-Expander &amp;quot;IC3&amp;quot; mit den vier Dual-MOSFETs, den PWM-dreifach-Jumpern für den Arduino und den vier LEDs&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:LC-Filter_MOSFET-LEDs_Int-Jumper.jpg&amp;diff=25582</id>
		<title>Datei:LC-Filter MOSFET-LEDs Int-Jumper.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:LC-Filter_MOSFET-LEDs_Int-Jumper.jpg&amp;diff=25582"/>
				<updated>2014-12-01T09:46:53Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: LC-Filter, MOSFET-LEDs mit resettable fuse (gelb) und Jumper für die drei Int-Leitungen (blau)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LC-Filter, MOSFET-LEDs mit resettable fuse (gelb) und Jumper für die drei Int-Leitungen (blau)&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:Arduino-Aufnahme_unten.jpg&amp;diff=25581</id>
		<title>Datei:Arduino-Aufnahme unten.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:Arduino-Aufnahme_unten.jpg&amp;diff=25581"/>
				<updated>2014-12-01T09:44:21Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Arduino-Aufnahme-Pins von unten. nach oben stehen Buchsen für weitere Shields.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arduino-Aufnahme-Pins von unten. nach oben stehen Buchsen für weitere Shields.&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:I2C-Pegelwandler.jpg&amp;diff=25580</id>
		<title>Datei:I2C-Pegelwandler.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:I2C-Pegelwandler.jpg&amp;diff=25580"/>
				<updated>2014-12-01T09:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: I2C-Pegelwandler durch 2 MOSFETs (BSN20), &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I2C-Pegelwandler durch 2 MOSFETs (BSN20), &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25579</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25579"/>
				<updated>2014-12-01T07:07:25Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Default-Überblick.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scheinwerfer===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
[[Bild:ADC-2 Unten.jpg|RP6 ArduIO ADC#2|right|200px]]&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:ADC-2_Unten.jpg&amp;diff=25578</id>
		<title>Datei:ADC-2 Unten.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:ADC-2_Unten.jpg&amp;diff=25578"/>
				<updated>2014-12-01T07:03:29Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: ADC-IC #2 (IC10) der ArduIO-Platine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ADC-IC #2 (IC10) der ArduIO-Platine&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25577</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25577"/>
				<updated>2014-12-01T07:00:52Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:ArduIO-Default-Überblick.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des ArduIO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Ob es eine Bibliothek für die RP6 CCPRO M128 geben wird, ist noch offen. Sicher ist, dass auch eine Arduino Library veröffentlicht wird. Diese Bibliotheken liegen – wie das gesamte Projekt – als Open Source vor und werden den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Hardware-Überraschung - '''Scheinwerfer'''===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Datei:ArduIO-Default-%C3%9Cberblick.jpg&amp;diff=25576</id>
		<title>Datei:ArduIO-Default-Überblick.jpg</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Datei:ArduIO-Default-%C3%9Cberblick.jpg&amp;diff=25576"/>
				<updated>2014-12-01T06:59:37Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: Überblick über das ArduIO-Board von oben mit den Default-Stellungen der Jumper.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Überblick über das ArduIO-Board von oben mit den Default-Stellungen der Jumper.&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25573</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25573"/>
				<updated>2014-11-30T20:42:15Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* RP6 ArduIO Erweiterungsplatine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RP6_ArduIO_V1.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Diese Bibliothek liegt – wie das gesamte Projekt – als Open Source vor und wird den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Hardware-Überraschung - '''Scheinwerfer'''===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Jumper===&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
Eine Default-Jumperstellung seht ihr in dem Foto rechts. So wird die Platine auch ausgeliefert: alle IOs für die Arduino-Aufnahme sind an die Arduino-Pins über schwarze, kurze Jumper gelegt, ebenso die vier ADCs. Will man PWMs auf die Arduino-Pins legen, einfach den zugehörigen kurzen, schwarzen Jumper vom jeweiligen IO abziehen und auf den jeweiligen PWM legen. Die vier PWM-Leitungen für die vier Board-LEDs sind ebenfalls über vier kurze, schwarze Jumper verbunden.&lt;br /&gt;
&lt;br /&gt;
Die Blauen Jumper leiten die drei Int-Leitungen 1, 2 und 3 des XBUS auf die drei IO-Expander weiter. Außerdem aktivieren zwei weitere die LEDs, welche die Zustände der MOSFETs anzeigen. Ein letzter legt die Batteriespannung üner einen 1:1 Spannungsteiler auf den ADC#1.&lt;br /&gt;
&lt;br /&gt;
Die beiden langen, schwarzen Jumper aktivieren den 3,3V-Regler und ermöglichen den Netzbetrieb, wenn an der Buchse B1 ein Akku oder Netzgerät angeschlossen ist.&lt;br /&gt;
&lt;br /&gt;
Die gelben Jumper legen fest, dass die ArduIO den boardeigenen 5V-Regler sowie einen eigenen angeschlossenen Akku verwenden soll. Außerdem wird auf die Arduino-Pins 3,3V-Versorgungsspannung und der I2C-Bus mit 3,3V-Pegel gelegt. Das dient nur der Sicherheit! Bei 3,3V kann nichts kaputt gehen, wenn auch vielleicht ein 5V-Arduino-Board nicht funktionieren wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25530</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25530"/>
				<updated>2014-11-24T11:11:09Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Arduino-Aufnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RP6_ArduIO_V1.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Diese Bibliothek liegt – wie das gesamte Projekt – als Open Source vor und wird den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs benutzen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Hardware-Überraschung - '''Scheinwerfer'''===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25529</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25529"/>
				<updated>2014-11-24T11:10:38Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Arduino-Aufnahme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RP6_ArduIO_V1.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Diese Bibliothek liegt – wie das gesamte Projekt – als Open Source vor und wird den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu '''6 PWM-Ausgänge''' bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
'''Achtung''': Bitte für diese Jumper die schwarzen, kurzen Jumper von den IOs abziehen! Denn sonst könnte das PWM-Signal mit einem IO-Signal kollidieren, dann droht ein '''Kurzschluss!''' Daher werden diese drei Jumper auch nicht mitgeliefert; es sollen die vorhandenen IO-Jumper genutzt werden.&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Hardware-Überraschung - '''Scheinwerfer'''===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25528</id>
		<title>RP6 ArduIO</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=RP6_ArduIO&amp;diff=25528"/>
				<updated>2014-11-24T11:08:29Z</updated>
		
		<summary type="html">&lt;p&gt;Fabqu: /* Kurzbeschreibung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Bild:RP6_ArduIO_V1.jpg|RP6 ArduIO V1.0|right|500px]]&lt;br /&gt;
=RP6 ArduIO Erweiterungsplatine=&lt;br /&gt;
Die RP6-ArduIO Erweiterungsplatine (siehe auch das Vorgängerprojekt,die [http://rn-wissen.de/wiki/index.php/RP6_Multi_IO_Projekt RP6-MultiIO-Erweiterungsplatine]) im üblichen RP6-Layout ist als reine I2C-Erweiterung sowohl für den RP6, als auch für Arduino-Boards und –Shields gedacht. Entwickelt wurde sie zusammen mit einigen Mitgliedern des Roboternetzes von fabqu (Hardwarearbeiten) und Dirk (Softwarearbeiten).&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung finden sich unten in den '''[http://rn-wissen.de/wiki/index.php/RP6_ArduIO#Weblinks Weblinks]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bestellung des Multi-IO-Moduls==&lt;br /&gt;
Diese Platine kann bei '''[http://www.roboternetz.de/community/members/47148-fabqu fabqu]''' bestellt werden. Sie ist mit Lötstopplack (schwarz) sowie beidseitig mit einem weißen Bestückungsdruck versehen. Ganz im üblichen RP6-Design eben.&lt;br /&gt;
&lt;br /&gt;
Das Board ist nicht aufgebaut, aber fabqu bietet an, es komplett aufzubauen, zu löten und zu testen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Features des ArduIO-Moduls==&lt;br /&gt;
* '''Externe Stromversorgung'''&lt;br /&gt;
** Bis zu 10 Volt Eingangsspannung&lt;br /&gt;
** Verpolungs- und kurzschlussicher&lt;br /&gt;
** Netzgerät möglich&lt;br /&gt;
** 5V- und 3,3V-Regler on Board&lt;br /&gt;
* '''USRBUS, alle 14 Pins stehen zur freien Verfügung'''&lt;br /&gt;
* '''XBUS'''&lt;br /&gt;
** Nutzung des externen Akkus für RP6-Basiseinheit möglich&lt;br /&gt;
** Nutzung des Akkus der RP6-Basiseinheit möglich&lt;br /&gt;
** Pinherausführungen für I2C (5V- und 3,3V-Pegel, incl. bidirektionalen Pegelwandlern)&lt;br /&gt;
* '''48 IOs via I2C, 32 davon für 5V-Pegel, 16 für 3,3V-Pegel; freie Adresswahl der ICs''', alle IO-Expander sind Interrupt-fähig (Int1 bis Int3)&lt;br /&gt;
* '''12 ADCs via I2C; freie Adresswahl der ICs''', ein ADC kann die angeschlossene Akkuspannung überwachen&lt;br /&gt;
* '''3 DACs via I2C; freie Adresswahl der ICs'''&lt;br /&gt;
* '''16 PWM-Outputs via I2C, daran:'''&lt;br /&gt;
** 4 jumperbare LEDs&lt;br /&gt;
** 8 Dual Leistungs-MOSFETs, je vier n- und vier p-Channels&lt;br /&gt;
** MOSFET-Schaltzustände werden jeweils durch eine eigene LED angezeigt&lt;br /&gt;
** Leistungs-MOSFETs sind über eine resttable Fuse zusätlich gesichert&lt;br /&gt;
** 4 freie PWMs&lt;br /&gt;
* '''Arduino-Aufnahme'''&lt;br /&gt;
** Sowohl Boards als auch Shields möglich&lt;br /&gt;
** I2C für Arduino mit 5V- oder 3,3V-Pegel möglich (jumperbar)&lt;br /&gt;
** Arduino-Shields können jumperbar durch 16 IOs und 4 PWMs via I2C emuliert werden&lt;br /&gt;
** Arduino-Boards können jumperbar durch 16 IOs und 4 ADCs ausgelesen/gesteuert werden&lt;br /&gt;
* '''Scheinwerfer'''-Platinen für vorne und hinten incl. Blinker sowie ein Blaulicht&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Software==&lt;br /&gt;
Die Software wird von '''[http://www.roboternetz.de/community/members/1972-Dirk Dirk]''' erstellt. Diese Bibliotheken sind natürlich nur ein Vorschlag und sollen nur zur Anregung eigener Projekte und eigener Bibliotheken dienen. Es ist geplant, eine Bibliothek für die RP6v2 Base, die RP6Control M32 und die RP6M256 WiFi für alle fest installierten Aktoren aufzubauen. Diese Bibliothek liegt – wie das gesamte Projekt – als Open Source vor und wird den Usern zugänglich gemacht.&lt;br /&gt;
&lt;br /&gt;
Wir haben die Artikel für Soft- und Hardware der Übersichtlichkeit wegen getrennt.&lt;br /&gt;
&lt;br /&gt;
'''Der Software-Artikel befindet sich [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung==&lt;br /&gt;
Neben einer Anschlussmöglichkeit für eine externe Stromquelle (Akku, Netzgerät) kann der Hauptakku des RP6 zur Versorgung genutzt werden. Ebenso kann zwischen ArduIO-Boardeigenem 5V-Regler und der RP6-eigenen 5V-Versorgung gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Ein 3,3V-Regler mit bidirektionalen MOSFET-Pegelwandlern für  den I2C-Bus gehören ebenso zur Ausstattung.&lt;br /&gt;
&lt;br /&gt;
Die Erweiterung RP6-ArduIO enthält 48 IO-Pins (16mal für 3,3V-Pegel und 32mal für 5V-Pegel), 12 AD- sowie 3 DA-Wandler sowie einen 16fach 12bit-PWM-Treiber.&lt;br /&gt;
Ein 5V-IO-Expander sowie vier der AD-Wandler können jumperbar verwendet werden, um einerseits Pegelstände eines eventuell angeschlossenen Arduino-Boards oder –Shields auszulesen, andererseits können die IO‘s ebenso genutzt werden, um ein nicht vorhandenes Arduino-Board zu emulieren, also nachzuahmen, wenn Arduino-Boards und –Erweiterungen ohne eigenes Shield angeschlossen sind. Des weiteren können Arduino-Boards und –Shields direkt mit dem RP6 kommunizieren und in einem Mehrkern-Verbund interagieren.&lt;br /&gt;
&lt;br /&gt;
Der 16fach PWM-Treiber kann verwendet werden, um jumperbar 4 boardeigene LEDs sowie vier Dual-n-p-Channel Power-MOSFETs zu treiben. LEDs zeigen die Zustände der jeweiligen Channels an. Diese vier n- und vier p-Channel MOSFETs kommen auch beim RP6v2 als Motortreiber zum Einsatz, sind hier jedoch in erster Linie als Treiber für „normale“ ohmsche Verbraucher gedacht. Sollen sie als Motortreiber („H-Brücke“) genutzt werden, bitte den zugehörigen Artikel genau lesen und bei Bedarf weitere Literatur hinzuziehen.&lt;br /&gt;
&lt;br /&gt;
Allgemein gilt für diese Platine:&lt;br /&gt;
&lt;br /&gt;
- '''Grüne''' Jumper dienen der Adress-Einstellung der I2C-Teilnehmer&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, kurze''' Jumper sind für die Weiterleitung von IOs, ADCs und PWMs gedacht&lt;br /&gt;
&lt;br /&gt;
- '''Schwarze, lange''' Jumper sind für das An-/Abschalten von Komponenten gedacht (3,3V-Regler, Resettable Fuse-Überbrückung, ...)&lt;br /&gt;
&lt;br /&gt;
- '''Gelbe''' Jumper sind bitte mit '''Vorsicht''' zu genießen; bei falscher Verwendung '''droht Schaden'''!&lt;br /&gt;
&lt;br /&gt;
- '''Blaue''' Jumper sind für Sonstiges (Int-Weiterleitung, etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hardware===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #1:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C3&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 5V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +5V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-IO-Expander #2:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC13&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C9&amp;quot; beträgt 100nF. Ein 2x8-Pin-Header (GPIOs 00 bis 07) sowie ein 2x6-Pin-Header (GPIOs 10 bis 15) dienen als Pinherausführungen und Jumper auf den Arduino-Sockel. Die GPIOs 16 und 17 sind auf einem 1x2-Pin-Header herausgeführt und stehen zur freien Verfügung, sind jedoch nicht an den Arduino-Sockel geführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs können an Jumperreihen abgegriffen oder über Jumper mit den jeweiligen Pins der Arduino-Aufnahme verbunden werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-IO-Expander #3:===&lt;br /&gt;
Baustein: PCA9535&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 3,3V&lt;br /&gt;
&lt;br /&gt;
Adresse: 0100-A2-1-A0, A2 und A0 wählbar&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C6&amp;quot; beträgt 100nF. Zwei 10polige Wannenstecker dienen als Pinherausführungen für je acht IOs sowie je einmal 3,3V und GND.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCA9535_PCA9535C.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-IO-Expander steht zur freien Verfügung. Alle 16 IOs sowie +3,3V und GND sind an Wannensteckern herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Die IOs sind zwar für 3,3V-Pegel gedacht, sind dennoch 5V-Tolerant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #1:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC11&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C7&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC1&amp;quot; herausgeführt. Zwei 100kOhm Widerstände, SMD 0805, messen die Batteriespannung an AD13 (AD-Wandler #1, AD-Eingang #3).&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist herausgeführt („DAC1“).&lt;br /&gt;
&lt;br /&gt;
Am ADC3 dieses AD-Wandler-ICs liegt jumperbar (Jumper &amp;quot;AD-UB&amp;quot;) die Batteriespannung über einen 2:1-Spannungsteiler (wie im RP6 einfach 2 100kOhm-Widerstände). Die Batteriespannung wird hier erst NACH der resettable Fuse &amp;quot;F2&amp;quot; gemessen, wodurch theoretisch auch softwareseitig ein Kurzschluss durch falsche Beschaltung der Leistungs-MOSFETs SP8M3 bemerkt werden kann, da dann die resettable Fuse abschaltet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #2:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C8&amp;quot; beträgt 100nF. Der 10polige Wannenstecker dient als Pinherausführungen für die vier ADCs sowie für je einmal 5V und GND. Der DAC ist auf einem 1x2-Pin-Header bei &amp;quot;DAC2&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sowie +5V und GND sind an einen Wannenstecker herausgeführt. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC2“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-AD-DA-Expander #3:===&lt;br /&gt;
Baustein: PCF8591&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1001-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C11&amp;quot; beträgt 100nF. Die vier ADCs sind auf einem 2x4-Pin-Header herausgeführt, wodurch man diese vier ADCs jumperbar auf die A0- bis A3-Pins des Arduino-Sockels legen kann. Der DAC ist auf einem Einzelpin bei &amp;quot;DAC3&amp;quot; herausgeführt.&lt;br /&gt;
&lt;br /&gt;
[http://www.nxp.com/documents/data_sheet/PCF8591.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-AD-DA-Expander steht zur freien Verfügung. Alle 4 ADCs sind an Jumpern herausgeführt und können an die Eingänge der Arduino-Aufnahme angejumpert werden. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden. Der DAC ist an einem Einzelpin herausgeführt („DAC3“).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-PWM-Expander, 16fach, 12bit:===&lt;br /&gt;
Baustein: PCA9685&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pegel: 5V&lt;br /&gt;
&lt;br /&gt;
Adresse: 1000-A2-1-A0&lt;br /&gt;
&lt;br /&gt;
Zubehör: Ein 2x3-Pin-Header dient als Adressjumper für die Adressen A0 und A2. Der Kondensator &amp;quot;C10&amp;quot; beträgt 10uF.&lt;br /&gt;
&lt;br /&gt;
[http://www.adafruit.com/datasheets/PCA9685.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Dieser I2C-PWM-Expander steuert unter anderem vier LEDs und die Leistungs-MOSFETs (siehe unten) an. Die PWMs 12 bis 15 stehen zur freien Verfügung und sind an Einzelpins herausgeführt. Dabei können die PWMs 12 bis 14 an die PWM-Pins des Arduino-Sockels gelegt werden. Da im Arduino wahlweise 6 PWMs zur Verfügung stehen, sind hier dreifach-Jumper angebracht, wodurch je ein PWM auf einen oder zwei Arduino-Pin(s) gelegt werden können. Die Adresspins A0 sowie A2 können jumperbar auf 0 oder 1 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
Die vier Status-LEDs &amp;quot;LED1&amp;quot; bis &amp;quot;LED4&amp;quot; können mittels PWMs 8 bis 11 des IC3 angesteuert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===MOSFETs===&lt;br /&gt;
Bausteine: 4x SP8M3, je dual ein n- und ein p-Channel&lt;br /&gt;
&lt;br /&gt;
Namen auf Board: &amp;quot;IC4&amp;quot; bis &amp;quot;IC7&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 10poliger Wannenstecker, acht LEDs mit zugehörigen Vorwiderständen, 3 Stück 1x2-Jumper um die LEDs anzuschalten und um bei bedarf die resettable Fuse &amp;quot;F2&amp;quot; (mind. 4,5A) zu überbrücken. Der Kondensator &amp;quot;C14&amp;quot; (470uF) und die Drosselspule &amp;quot;L1&amp;quot; (10uH) dienen als LC-Schwingkreis gegen Spannungsspitzen.&lt;br /&gt;
&lt;br /&gt;
[http://fixit-service.kz/files/SP8M3.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Jeder dieser vier MOSFET-ICs enthält einen p- sowie einen n-Channel. Ihre Ausgänge sind zusammen mit der Batteriespannung (nach der resettable Fuse) und GND an den Wannenstecker herausgeführt. Sie werden durch den I2C-PWM-Expander (Ausgänge 0 bis 7) angesteuert und erreichen daher eine maximale Schaltfrequenz von 1kHz. Sie sind grundsätzlich für ohmsche Lasten ausgelegt, nicht für induktive (Motoren). Ihre Schaltzustände (On und Off) werden für jeden Kanal durch die LEDs 6 bis 9 (p-Channels 1 bis 4) und 10 bis 13 (n-Channels 1 bis 4) angezeigt. Diese LEDs können durch zwei Jumper komplett deaktiviert werden, ohne die MOSFETs zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Eine resettable Fuse (&amp;quot;F2&amp;quot;) dient zum Schutz der MOSFETs vor zu starkem Stromfluss. Hier muss jedoch beachtet werden, dass diese vergleichsweise langsam schaltet und ein Auslösen unter Umständen unbemerkt bleiben kann. Sie funktioniert einfach dadurch, dass sie sich bei hohen Strömen ( &amp;gt;4,5A ) aufheizt und dann hochohmig, also nicht-leitend wird. Nach dem Abkühlen sinkt der Widerstand wieder und sie wird leitend.&lt;br /&gt;
&lt;br /&gt;
Mit etwas Fachwissen können die MOSFETs schnell zu zwei Motortreibern, also H-Brücken umgebaut werden. Dafür müssen die Dioden D6 bis D9 sowie D2 bis D5 (richtig herum!) eingelötet werden. Diese sind als Rücklaufdioden für die in den Spulen der Elektromotoren gespeicherte elektrische Energie gedacht. Es handelt sich dabei um solche vom Typ BYM10-50. Darüber hinaus muss beachtet werden, dass die maximale PWM-Frequenz 1kHz beträgt. Diese Frequenz ist vom menschlichen Gehör spürbar, es kann also zur Geräuschentwicklung durch die angesteuerten Motoren kommen. Dies ist für die Motoren natürlich nicht von Nachteil, lediglich für den Zuhörer. Es muss jedoch unbedingt auf eine korrekte Beschaltung der MOSFETs geachtet werden, da sonst ein Kurzschluss droht. Wird ein p- und ein n-Channel-MOSFET an einem Motorkontakt angeschlossen und beide in den On-Status versetzt, wird ein Kurzschluss der Batteriespannung auf GND erzeugt. Die kann mehrere teils verehrende Folgen für dieses Board haben: Im besten Fall brennt die Hauptsicherung „F1“ durch oder die resettable Fuse „F2“ unterbricht den Kontakt. Im schlimmeren Fall könnten die MOSFET-IC-Bausteine Schaden nehmen oder sogar Zuleitungen platzen. Dann wird eine Reparatur sehr aufwändig. '''Also hier bitte nur mit dem nötigen Fachwissen rangehen!''' Es wird außerdem empfohlen, die MOSFETs bei Verwendung als H-Brücke mit einer eigenen Batterie zu versorgen, nicht mit dem Hauptakku des RP6 über den XBUS.&lt;br /&gt;
&lt;br /&gt;
Der LC-Schwingkreis, bestehend aus einer 10uH-Spule (L1) und einem 470uF-Elko (C14), dient zur Abschwächung möglicher Störungen durch Motoren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arduino-Aufnahme===&lt;br /&gt;
An den mit „Arduino“ bezeichneten und eingerahmten Pinheadern können Arduino-Boards (von unten) und –Shields (von oben) aufgesteckt werden. Die Stromversorgung für das jeweilige Board kann über Jumper gewählt werden: Batteriespannung („UBat“), +5V oder +3,3V. Natürlich darf hier immer nur einer der drei Jumper gesteckt sein, sonst regeln zwei oder mehr Spannungsregler gegeneinander und können Schaden nehmen. Bei Verwendung von 3,3V muss natürlich auch der 3,3V-Regler durch den Jumper angeschaltet sein. Auch kann der Pegel des I2C-Busses, welcher an &amp;quot;A4&amp;quot; und &amp;quot;A5&amp;quot; der Arduinos anliegt, gewählt werden. Dies geschieht über zwei dreifach-Jumper. Hier ist jeweils der mittlere Pin mit &amp;quot;A4&amp;quot; bzw. &amp;quot;A5&amp;quot; des Arduino-Sockels verbunden und die beiden äußeren dann dementsprechend jeweils mit den Leitungen des I2C. Auf der einen Seite für den 3,3V-Pegel, auf der anderen für den 5V-Pegel.&lt;br /&gt;
&lt;br /&gt;
Ein originaler Arduino-Prozessor würde neben ADCs und IOs auch bis zu 6 PWM-Ausgänge bereit stellen. Da das ArduIO-Board Arduino-Prozessoren emulieren kann, ist es möglich, drei der PWM-Ausgänge des PWM-Bausteins &amp;quot;IC3&amp;quot; für drei der sechs möglichen Arduino-PWMs zu verwenden. Dafür stehen wieder dreifach-Jumper bereit. In der Mitte sind die PWM-Ausgänge 13, 14 und 15 des &amp;quot;IC3&amp;quot; gelegt und diese können dann wahlweise auf die Pins 5 oder 6, 9 oder 10 sowie 11 oder 3 gejumpert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Anschluss von externen Spannungsquellen===&lt;br /&gt;
An die Buchse „B1“, können externe Spannungsquellen (Netzgeräte, Akkus, etc) angeschlossen werden. Dadurch würde der GND-Kontakt der Buchse automatisch unterbrochen (bauteilebedingt). Dies kann der Abschaltung der Elektronik im Akku-Ladebetrieb dienen. Dies ist jedoch über den Jumper &amp;quot;JP_LOAD&amp;quot; überbrückbar, wenn der RP6 etwa mit einem Netzgerät betrieben werden soll. Auch der Hauptakku des RP6 ist über den XBUS nutzbar; dies kann durch den dreifachjumper &amp;quot;JP_UB&amp;quot; direkt neben der Hauptsicherung eingestellt werden. Schalter „S1“ schaltet die Stromversorgung (egal, ob über XBUS oder die Buchse &amp;quot;B1&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Sicherung „F1“ und Verpolungsschutz===&lt;br /&gt;
Die Sicherung &amp;quot;F1&amp;quot; dient natürlich der Sicherung vor Kurzschlüssen etc, jedoch in Verbindung mit der darunter liegenden Diode „D1“ auch dem Verpolungsschutz. Bei Verpolung schaltet die Diode auf Masse durch und die Sicherung schmilzt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===5V-Regler===&lt;br /&gt;
Baustein: AP1117E50G&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren 2uF (&amp;quot;C1&amp;quot;) und 10uF (&amp;quot;C2&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED14&amp;quot;, &amp;quot;R14&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1696797.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 5V-Regler kann für die Versorgung des ArduIO-Boards genutzt werden, ebenso jedoch (nicht empfohlen) der RP6-eigene 5V-Regler über den XBUS. Die Auswahl findet durch einen 3fach-Jumper statt. &amp;quot;LED5&amp;quot; zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-Regler===&lt;br /&gt;
Baustein: LD1117AS33TR&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;IC1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zubehör: 2x Kondensatoren, 2,2uF (&amp;quot;C4&amp;quot;) und  10uF (&amp;quot;C5&amp;quot;). LED mit Vorwiderstand (&amp;quot;LED5&amp;quot;, &amp;quot;R5&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
[http://www.farnell.com/datasheets/1732936.pdf Datenblatt]&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Der 3,3V-Regler kann jumperbar on/off geschaltet werden. „LED14“ zeigt den Zustand an.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===3,3V-I2C===&lt;br /&gt;
Bausteine: BSN20, zwei Stück, und 2k2-Ohm Widerstände&lt;br /&gt;
&lt;br /&gt;
Name auf Board: &amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;, &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Beschreibung: Zwei MOSFETs (&amp;quot;Q1&amp;quot; und &amp;quot;Q2&amp;quot;) dienen als bidirektionale Pegelwandler. Natürlich muss der 3,3V-Regler aktiviert sein! Die Widerstände &amp;quot;R15&amp;quot; und &amp;quot;R16&amp;quot; dienen als Pullups.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Int-Leitungen #1 bis #3 des XBUS===&lt;br /&gt;
Die Int-Leitungen &amp;quot;Int1&amp;quot;, &amp;quot;Int2&amp;quot; sowie &amp;quot;Int3&amp;quot; finden auf diesem Board eine Verwendung und sind mit Pullup-Widerständen ausgestattet. &amp;quot;Int1&amp;quot; liegt am IO-Expander #2, &amp;quot;Int2&amp;quot; an IO-Expander #1 und &amp;quot;Int3&amp;quot; am IO-Expander #3. Alle Int-Leitungen sind dabei jumperbar und besitzen Pullup-Widerstände &amp;quot;R25&amp;quot;, &amp;quot;R26&amp;quot; und &amp;quot;R27&amp;quot; (je 2k2 Ohm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Hardware-Überraschung - '''Scheinwerfer'''===&lt;br /&gt;
Als kleine Überraschung haben wir dank Dirks Idee den Trapez-Ausschnitt in der RP6-Platine diesmal mit fünf kleinen LED-Platinchen gefüllt. Vier davon sind als Scheinwerfer gedacht. Je zwei davon sind spiegelverkehrt gemacht und enthalten zweimal je eine gelbe low-current LED und zwei rote low-current LEDs (für hinten: Blinker links/rechts und Licht/Bremslicht) sowie zweimal je gelbe low-current LED und zwei weiße superbright LEDs (für vorne: Blinker links/rechts und Standlicht/Abblendlicht). Dazu enthält eine letzte Platine zwei superbright Blaue LEDs, welche gegenüberstehend und gewinkelt aufgelötet werden und als Blaulicht fungieren. Sie teilen sich einen IO und sind daher gegeneinander gesetzt, wodurch bei High-Pegel die eine, bei Low-Pegel die andere LED leuchtet. Beim Toggeln zwischen High und Low hat man daher einen Blaulicht-Blinkeffekt.&lt;br /&gt;
&lt;br /&gt;
==Weblinks==&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[https://www.dropbox.com/sh/in8kdnq2nawxzku/AAD7tjy5H_zgJZmK6U4b1MoUa?dl=0 HIER]] findet ihr Umfangreiche Dokumentation, sämtliche Beispielprogramme und Bibliotheken, Daten, Teilelisten und eine Lötanleitung.''' Einfach das .zip runterladen, fertig.&lt;br /&gt;
&lt;br /&gt;
'''-&amp;gt; [[http://rn-wissen.de/wiki/index.php/RP6_ArduIO_-_Software HIER]] findet ihr den Software-Artikel.'''&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Elektronik]]&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Fabqu</name></author>	</entry>

	</feed>