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!
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.
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 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...)
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.
2. Verbindung herstellen
Verbindung zwischen D2 und SS herstellen.
CS (SS) Pin des NFC-Shields ist dann Pin 2, also muss es im Sketch entsprechend heißen:
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.
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:
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!