Mein Equipment- Arduino Uno R3
- Motor Shield
http://www.ladyada.net/make/mshield/- Ethernet-Shield von SainSmart (soll mittels LAN2WLAN Extender zu einem Wifi-Shield umfunktioniert werden)
- US Sensor SRF04
- Mobiler Roboter auf runder Grundplatte aus Sperrholz
o 2x 12V DC Getriebemotor von Pollin
Ich habe vor kurzem angefangen, mich mit dem Arduino zu beschäftigen und habe jetzt als ersten Meilenstein einen einfachen mobilen Roboter gebaut, dessen zwei 12V DC Motoren von einem MotorShield angetrieben und vom UNO R3 gesteuert werden. Als einzigen zusätzlichen Sensor habe ich zur Hindernisserkennung einen Ultraschall-Sensor SRF04 angeschlossen.
Leider belegt das MotorShield sehr viele Pins, wie man aus
http://www.robgray.com/temp/Arduino-shield-pins-used.png entnehmen kann. Wieso braucht das MotorShield so viele Pins?

Nur die 5 Analog-Pins und Pin 2 sind frei – doch diese werden von mir für teilweise für andere Zwecke gebraucht:
Pin A0 wird von einem Poti belegt, mit dem ich die Maximalgeschwindigkeit regele,
Pin A1 mit einem Poti, das als Trimmer fungiert, damit der Roboter ohne Odometrie halbwegs geradeaus fährt und
A2 und A3 für die Kommunikation mit dem SRF04.
Bleiben noch
Pin A4 und
Pin 2, die das MotorShield gnädigerweise nicht belegt.
Das stört mich sehr, weil ich nun keine Pins mehr für mehr Sensoren etc. habe. Insbesondere weil ich auch noch ein Wifi-Shield bzw. Ethernet-Shield draufstecken wollte, um den Roboter mit dem PC zu verbinden, sozusagen als nächste Ausbaustufe. Leider habe ich schon in einigen Forumseinträgen gesehen, dass es anscheinend nicht so einfach wird, weil die Shields sich zu allem Überfluss bei der Pinbelegung in die Quere kommen.
Meine Frage ist nun:
Wie bekomme ich zusätzlich zum Motor Shield noch ein Ethernet-Shield aufgesteckt zum Laufen und noch eine ausreichend große Zahl freier Ports für weitere Sensoren und Steueraufgaben? Mehrere Arduinos miteinander zu verbinden, die jeweils ein Shield tragen, halte ich für keine sehr elegante Lösung… Gibt’s da nicht einen besseren Weg?
Das führt mich zu einer weiteren sehr wichtigen Frage:
Wieso werden nicht alle Shields über I2C angesteuert, dann wären nur zwei Pins belegt und man könnte so viele draufstecken wie man wollte (wenn man von anderen begrenzenden Faktoren absieht und sich auf die Zahl der Pins beschränkt)?! Ich vermute mal, weil man dann jedem Shield einen eigenen MC draufpacken müsste, der es wieder teurer macht?