[SOLVED] Arduino mit zwei Shields will nicht ...

Hallo die nächste.
Ich nutze einen Arduino Duamilanove zusammen mit diesem
NFC-Shield: NFC Shield V2.0 – Aptofun WIKI
und diesem
LCD/Keypad-Shield: Nr.01 - Keypad Shield | Funduino - Kits und Anleitungen für Arduino

Einzeln läuft alles wunderbar. Nun dachte ich bisher, dass ich die Shields stapeln kann und beide funktionieren (bei passender Pinbelegung) auch gleichzeitig. Das ist hier leider bisher nicht der Fall.
Im Header habe ich:

#include <SPI.h>
#include "PN532_SPI.h"
#include "PN532.h"
#include "NfcAdapter.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //Angabe der erforderlichen Pins

PN532_SPI interface(SPI, 10); // create a SPI interface for the shield with the SPI CS terminal at digital pin 10
NfcAdapter nfc = NfcAdapter(interface); // create an NFC adapter object

Dürfte sich doch eigentlich nicht in die Quere kommen, oder?
Daher die Frage: Ist das nun ein Software- oder ein Hardware-Problem?
Danke für einen guten Tipp!

Und was genau funktioniert nicht ?
Ein paar mehr Informationen wäre schon gut.

Ich habe das gleiche LCD/Keypad-Shield.

Warum nicht beide Shields gleichzeitig funktionieren liegt daran, dass Pins (zumindest ein Pin) von beiden Shields gleichzeitig verwendet werden.

Bei diesem LCD/Keypad-Shield wird Pin 10 zur Steuerung der Display-Beleuchtung verwendet.
Die Dokumentation auf der Website ist leider nur mäßig und dieser Umstand ist nirgends ausdrücklich erwähnt.
Allerdings steht da folgendes:

Die freien digitalen Pins sind 13, 12, 11, 3, 2, 1 und 0.

Pin 10 ist da eben nicht dabei...

Das NFC-Shield verwendet aber ebenfalls Pin 10, nämlich als CS (Chip Select). Somit ist dieser Pin doppelt belegt und deshalb funktioniert es nicht, wenn beide Shields gleichzeitig verwendet werden.
Statt Pin 10 könnte beim NFC-Shield auch Pib 9 als CS verwendet werden, das hilft aber in diesem Fall auch nicht, weil das LCD/Keypad-Shield Pin 9 ebenfalls verwendet.

Ohne kleinen Umbau wird es also nicht funktionieren.
Man könnte z.B. beim NFC-Shield für CS Pin 3 verwenden. Die CS-Verbindung mit Pin 10 trennen und eine Verbindung zu Pin 3 herstellen (und natürlich die Programmierung entsprechend anpassen: PN532_SPI interface(SPI, 3); ). Ob das praktikabel ist, ist schwer zu sagen - ich habe so ein NFC-Shield nicht und das einzige Foto auf der Website ist leider nicht sehr aussagekräftig.

Oder ein anderes LCD-Shield verwenden.

uxomm:
Oder ein anderes LCD-Shield verwenden.

Danke für die ausführliche Antwort! Das klärt einiges! Ich hätte auch noch ein "nacktes" HD44780, wenn es damit besser geht?? Dann wäre es zwar kein Shield -- aber immerhin auf dem Breadboard.
Die Alternative wäre ja, die Pins zu tauschen. Vielleicht kann man Pin 10 vorsichtig umbiegen, so dass der gar nicht im Anschluss landet und ihn dann zu einem anderen Pin überbrücken?
Vielleicht wäre es ja doch einfacher, ein anderes LCD-Shield zu nehmen. Welches kannst du denn da empfehlen, das ootb in dieser Kombination funktionieren würde?

du steckst doch das LCD Shield auf das NFC shield auf oder?

Wenn die Backlight-Beleuchtung dauerhaft leuchtet ohne dass du es anschaltest, dann hat das LCD shield sehr wahrscheinlich eh einen Harware-Fehler. Siehe: https://forum.arduino.cc/index.php?topic=96747.0

Du könntest einfach den pin 10 vom LCD-Shield so verbiegen, dass er NICHT in den header vom NFC Shield einrastet, dann kannst du vorübergehend beide Shields verwenden.

Ansonsten würde ich dir zu einen I2C Adapter raten (PCF8574…)

noiasca:
Ansonsten würde ich dir zu einen I2C Adapter raten (PCF8574...)

Du meinst einen wie diesen? ---> https://www.amazon.de/SunFounder-Serial-Arduino-Mega2560-IIC2004/dp/B01GPUMP9C/ref=asc_df_B01GPUMP9C/?tag=&linkCode=df0
Ich habe bisher nur 2-zeilige LCD-Displays hier ... könnte man sich wirklich mal gönnen!

Benutze ich in schwarz auf grün schon seit Jahren mit I2C.
Weiß auf blau sieht aber schicker aus :wink:

Gruß Tommy

Tommy56:
Benutze ich in schwarz auf grün schon seit Jahren mit I2C.
Weiß auf blau sieht aber schicker aus :wink:

Ich fand eigentlich die schwarz auf weiß Variante am elegantesten ...
http://https://www.ebay.de/itm/Small-White-IIC-I2C-TWI-20x4-Character-LCD-Display-for-Arduino-w-Wire-Library/303252769535
Wenn ihr meint, dass man dann die Shields stapeln kann, würde ich es damit ausprobieren

Moment! Zu Shields habe ich nichts gesagt. Bis auf ein Ethernetshield aus meiner Anfangszeit benutze ich generell keine mehr.

Gruß Tommy

Tommy56:
Moment! Zu Shields habe ich nichts gesagt. Bis auf ein Ethernetshield aus meiner Anfangszeit benutze ich generell keine mehr.

Zu spät … ist bestellt :smiley:

Falls du das LCD/Keypad-Shield doch noch verwenden willst...

Ich hab mir das NFC-Shield nochmal genauer angesehen.
Man könnte es relativ leicht wie folgt modifizieren und es würde dann keine Konflikte mehr mit dem LCD/Keypad-Shield geben. Die Modifikationen sind einfach durchzuführen.
Es wird benötigt:

  • Scharfes Messer zum Durchtrennen einer "Brücke"
  • Ein dünnes Kabel ca. 5 cm
  • Lötkolben, Lötzinn

1. Brücke durchtrennen
Brücke zwischen D10 und SS trennen.
nfx_shield_mod1.png

2. Verbindung herstellen
Verbindung zwischen D2 und SS herstellen.
nfx_shield_mod2.png

CS (SS) Pin des NFC-Shields ist dann Pin 2, also muss es im Sketch entsprechend heißen:

PN532_SPI interface(SPI, 2);

Dann sollten das funktionieren.

Aber natürlich sind LCD mit I2C auch schick :slight_smile:

nfx_shield_mod1.png

nfx_shield_mod2.png

Wenn ihr meint, dass man dann die Shields stapeln kann, würde ich es damit ausprobieren

nein, diese LCD Backpacks eignen sich nicht zum stapeln. Oder wir haben andere Vorstellungen was mit stapel gemeint ist. So ein LCD Backpack schließt du mit 4 kurzen Dupont Kabeln an den Arduino oder auf das Shield das auf dem Arduino aufgesteckt ist.

uxomm:

  • Scharfes Messer zum Durchtrennen einer "Brücke"

Wow! Ich habe mir das gerade mal angesehen. Bei mir sieht es nicht so aus, als gäbe dort eine Brücke. Haben wir die gleiche Version?
(Ich finde gerade keine Möglichkeit zum Upload von Bildern -- hier steht aber V2.0b auf dem Shield und die Pads von D10 und SS sehen bereits getrennt aus.)

noiasca:
nein, diese LCD Backpacks eignen sich nicht zum stapeln. Oder wir haben andere Vorstellungen was mit stapel gemeint ist. ...

Ja, das ist klar ... es ist nicht so kompakt und man hat "2 Teile" ... aber beide Shields laufen ohne weitere Eingriffe gleichzeitig. Ich habe es auch bestellt, weil ich auch mal 4 Zeilen beschriften möchte.

Wow! Ich habe mir das gerade mal angesehen. Bei mir sieht es nicht so aus, als gäbe dort eine Brücke. Haben wir die gleiche Version?
(Ich finde gerade keine Möglichkeit zum Upload von Bildern – hier steht aber V2.0b auf dem Shield und die Pads von D10 und SS sehen bereits getrennt aus.)

sieh es dir mit einer Lupe an, oder miss es mit einem Multimeter. Du wirst überrascht sein wie dünn diese Verbindung ist.

noiasca:
sieh es dir mit einer Lupe an, oder miss es mit einem Multimeter. Du wirst überrascht sein wie dünn diese Verbindung ist.

Ich messe das später nach und berichte dann.
Wie bist du denn auf diese Lösung gekommen?

noiasca:
du steckst doch das LCD Shield auf das NFC shield auf oder?
Du könntest einfach den pin 10 vom LCD-Shield so verbiegen, dass er NICHT in den header vom NFC Shield einrastet, dann kannst du vorübergehend beide Shields verwenden.

Das habe ich gerade einfach mal gemacht ... PIN 10 leicht verbogen und das LCD-Shield aufgesetzt ... und was soll ich sagen: *Es funktioniert! ;D *
Ok, das 4-zeilige LCD ist in der Post ... macht auch nichts. Aber gut zu wissen, dass es auch so geht!