Arduino Nano mit NRF24L01 und 2,8 TFT ILI9341 BITTE UM HILFE !!!

Moin Moin, :-[

bin neu hier und habe gleich mal ein kleines Problem.
Ich will mir was für mein Hobby bauen und wollte dazu ein Funkmodul (NRF24L01) und ein Display (ILI9341) verwenden. Nach dem ich das Programm geschrieben habe und beim Verifizieren/kompilieren keine Fehler auftraten lud ich das Programm hoch und habe nur ein Weißes Display vorgefunden. Nach stunden der suche und mit Hilfe des Ausschlussverfahrens (Ich wusste leider nicht mehr mit meinem Wissen weiter :cold_sweat: ) habe ich bemerkt wenn ich die Funktion des Funkmodul ausklammere Funktioniert das Display auf einmal wieder. Ich habe keine Pins Doppelt belegt und habe die SPI Schnittstellen zusammengeführt und nur die SS/CS Schnittstelle einzeln angeschlossen. Bin jetzt ratlos was ich tun soll aus den Libs werde ich nicht wirklich Schlau, hoffe ihr könnt mir helfen :smiley:

ps.: Das ist nicht das gesamte Programm nur die Empfängerschnittstelle

Hier mal mein Sketch: Hobbyprojekt - Pastebin.com

Und schon mal ein großes
DANKE !!!

Setze Deinen Code bitte direkt ins Forum. Nutze dazu bitte Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).

Gruß Tommy

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

#define TFT_DC 9              
#define TFT_CS 10             
#define TFT_RST 8             
#define TFT_MISO 12           
#define TFT_MOSI 11           
#define TFT_CLK 13 
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI,TFT_CLK, TFT_RST, TFT_MISO);

RF24 radio(3, 4); // CE, CSN
unsigned long FPS;
int FS_taster = A0;
int tasterstatusFS;
int NP_taster = A1;
int tasterstatusNP;
int vibration = 2;
int taccap = 0;
int magcap = 0;
int counter = 0;
int maxcounter = 0;

const byte addresse[6] = "00001";

void setup() {
  Serial.begin(9600);
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(ILI9341_WHITE);
  tft.setTextColor(ILI9341_BLACK,ILI9341_WHITE);
  radio.begin();
  radio.openReadingPipe(0, addresse);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();
  pinMode(vibration, OUTPUT); 
  pinMode(FS_taster, INPUT);
  pinMode(NP_taster, INPUT);
    
  }

void loop(void) {
   
if (radio.available()) {
    counter = counter +1;
    maxcounter = maxcounter +1;
    radio.read(&FPS, sizeof(unsigned long));    
    magcap = taccap - counter;       
    }
if (digitalRead(FS_taster)==HIGH){
    taccap = 19;
    tasterstatusFS = HIGH;
    tasterstatusNP = LOW;
    }
if (digitalRead(NP_taster)==HIGH){
    taccap = 21;
    tasterstatusFS = LOW;
    tasterstatusNP = HIGH;    
    } 
 
tft.setTextSize(5);
tft.setCursor(20, 10);  
tft.print("ChronyPLUS");
tft.setTextSize(3);
tft.setCursor(20, 60);
tft.print("Magazin:");
tft.setCursor(170, 60);
tft.print(magcap);
tft.setCursor(20, 110);
tft.print("FPS:");
tft.setCursor(170, 110);
tft.print(FPS);
tft.setCursor(20, 160);
tft.print("Bullets:");
tft.setCursor(170, 160);
tft.print(maxcounter);
     
if (digitalRead(FS_taster)==HIGH && counter == 19){
    sequenz();   
    }
else if (digitalRead(NP_taster)==HIGH && counter == 21){
    sequenz();
    }
else {
    digitalWrite(vibration, LOW);
    } 
 delay(200);   
}

void sequenz (){
    digitalWrite(vibration, HIGH);   
    delay(2000);              
    digitalWrite(vibration, LOW);    
    delay(1000); 
    digitalWrite(vibration, HIGH);   
    delay(2000);              
    digitalWrite(vibration, LOW);    
    delay(1000);  
    counter =0;   
}

+1 Bitte um Hilfe kann den Fehler auch nicht finden und eine Lösung würde mich sehr interessieren.

ist das ili9341 ein aufsteckbares breakout, was ist mit dem Nrf24 board??

Wenn ja, welches?

eine Lösung würde mich sehr interessieren.

Eine oder Zwei Fragen kann ich dir stellen!

Warum nutzt du für das Funkmodul Hardware SPI und für das Display SoftwareSPI?
Das kommt sich doch ins Gehege, wenn du die gleichen Pins dafür nutzt, oder?

Vielleicht bringen dich die Fragen ja zur einer Lösung....

Schuppeste:
ist das ili9341 ein aufsteckbares breakout, was ist mit dem Nrf24 board??

Wenn ja, welches?

Was meinst du mit Aufsteckbares breakout ? Also die Kontakte waren schon vorhher dran wenn du das meinst.
Display:https://www.amazon.de/Backplane-Serielle-Schnittstelle-Touch-Farbe-Display/dp/B0749N3S33/ref=sr_1_9?ie=UTF8&qid=1539780522&sr=8-9&keywords=arduino+tft
NRF24:https://www.amazon.de/AZDelivery-NRF24L01-Wireless-Arduino-Raspberry/dp/B075DBDS3J/ref=sr_1_4?ie=UTF8&qid=1539780549&sr=8-4&keywords=arduino+nrf24l01

combie:
Eine oder Zwei Fragen kann ich dir stellen!

Warum nutzt du für das Funkmodul Hardware SPI und für das Display SoftwareSPI?
Das kommt sich doch ins Gehege, wenn du die gleichen Pins dafür nutzt, oder?

Vielleicht bringen dich die Fragen ja zur einer Lösung....

Woran machst du das fest das es einmal Hardware und einmal Software ist ? an dem DEFINE?
Die Pins für das NRF24 sind vorgegeben und beim Display musste ich die zuweisen.

soweit ich das richtig verstanden habe ist das bei spi kein problem wenn die cs pins beide seperat gelegt sind mosi miso unc sck dürfen zusammen sein

mosi miso unc sck dürfen zusammen sein

Aber doch nicht Hard- und Software gleichzeitig!

Woran machst du das fest das es einmal Hardware und einmal Software ist ?

An dem Adafruit_ILI9341 Konstruktor, welchen du verwendest!
Es gibt 2 und du verwendest, für diese Situation, den falschen

Aus Adafruit_ILI9341\examples\graphicstest\graphicstest.ino:

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// If using the breakout, change pins as desired
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

combie:
Aber doch nicht Hard- und Software gleichzeitig!

ok cool danke das ist schon mal gut zu wissen das es da unterschiede gibt

combie:
An dem Adafruit_ILI9341 Konstruktor, welchen du verwendest!
Es gibt 2 und du verwendest, für diese Situation, den falschen

Also soll ich auch für die pins von dem NRF24L01 eine #DEFINE schreiben ?

sorry wenn ich zu unwissend rüberkomme :slight_smile:

agmue:
Aus Adafruit_ILI9341\examples\graphicstest\graphicstest.ino:

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// If using the breakout, change pins as desired
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

Geht das auch so nartlos bei einem Nano ?

Die Hardware-SPI-Pins sind festgelegt, müssen daher nicht im Programm definiert werden. Nur TFT_CS und TFT_DC benötigen eine Festlegung.

Mitee:
Geht das auch so nartlos bei einem Nano ?

Ja, da UNO und Nano den selben µC haben.

Allerdings macht so ein Display an einem µC mit so wenig Speicher wenig Freude. Ich nutze so ein Display am Mega 2560. Für kleine Platzverhältnisse geht auch der Mega 2560 Pro.

Also soll ich auch für die pins von dem NRF24L01 eine #DEFINE schreiben ?

Hi...
Ein klein wenig fühle ich ich verarscht....
Und wenn ich das Gefühl hätte, du würdest das absichtlich machen, dann wäre ich dir sogar böse!

Also:
Wenn ich sage, du sollst einen anderen Konstruktor für das Display verwenden...
Wie kannst du dann auf die Idee kommen, die Schnittstelle des Funkmoduls ändern zu wollen?

Es gibt da zwei grundsätzliche Fragen/Möglichkeiten:
Glaubst du mir nicht? (dann kann ich auch hier aufgeben)
Du hast so wirklich keine Ahnung von SPI und C++, ja? (dann ist das jetzt ein gute Gelegenheit sich mal kundig zu machen)


Grundsätzlich SPI

Arduino SPI
C++ Constructor

combie:
Hi...
Ein klein wenig fühle ich ich verarscht....
Und wenn ich das Gefühl hätte, du würdest das absichtlich machen, dann wäre ich dir sogar böse!

Ne das mit dem display habe ich verdrängt und ja Thema SPI ist komplett neu für mich und C++ habe ich nur schulkenntnisse.

agmue:
Die Hardware-SPI-Pins sind festgelegt, müssen daher nicht im Programm definiert werden. Nur TFT_CS und TFT_DC benötigen eine Festlegung.
Ja, da UNO und Nano den selben µC haben.

Allerdings macht so ein Display an einem µC mit so wenig Speicher wenig Freude. Ich nutze so ein Display am Mega 2560. Für kleine Platzverhältnisse geht auch der Mega 2560 Pro.

mega geil danke das werde ich gleich mal umändern