RFID scanner + NRF240L1

Je gebruikt een library.
Die library zorgt voor de communicatie met de module, en die stuurt de signalen dus op de juiste wijze aan, aangenomen dat ze goed zijn ingesteld.

In mijn vorige post had ik het over het gebruik van const.
Das dus wat je het best kunt doen met die pinnen.
Het instellen van de twee modules gebeurt op exact dezelfde wijze, maar ik vraag me af of je dat wel hebt gezien.

Wat je doet is dit, als de "variabelen" worden opgelost:

RF24 radio(7, 8);
MFRC522 mfrc522(10, 9);

Das dus twee keer hetzelfde voor die modules.
Je RF24 noem je voortaan radio, en hebben de pinnen 7 en 8 nodig naast 'the obvious' SPI pinnen.
Je RFID noem je voortaan mrfc522, en hebben de pinnen 10 en 9 nodig naast de SPI pinnen.

Als je goed gelezen hebt (ik blijf het zo doen dat je minstens twee keer moet lezen), dan zie je dat ik het eerst over const had en nu over variabele.
Dat zijn twee tegenovergestelden.
Een const heet zo omdat ie nooit verandert en dus CONSTant is.
Een variabele heet zo omdat ie moet veranderen.
Const wordt door je compiler (de IDE) opgelost, een variabele moet door de Arduino worden bijgehouden en heeft daarom ruimte nodig.
En in de Arduino is ruimte schaars.
#define maakt ook een constante, maar dat gaat verder en is dan niet altijd vergelijkbaar als "vaste variabele".

Dit zijn allemaal dingen waar je op moet letten als je stabiele code wil maken, die lang kan blijven werken.

Dat dit fout gaat komt omdat je een aantal gevonden en werkende codes hebt gepakt, en bij elkaar hebt geveegd zonder eerst te begrijpen wat er gebeurt.
Die werkende codes zijn gemaakt om te laten zien hoe iets werkt, dus juist om dat uit te vinden.

Ik ga nu je code aanpassen zodat het op die manier werkt, zodat je ook nog beter kunt begrijpen wat er gebeurt in die code.
Daarvoor doe ik alleen wat met namen, dus definities en consts.

#include <SPI.h>
#include <MFRC522.h>
#include "RF24.h"

#define RFID_RST_PIN         9      
#define RFID_SS_PIN          10     
#define radio_SS_pin         4 
#define radio_ CE_pin        5
   

byte adres[6] = {"adres"};
int scans = 0;

MFRC522 RFID(RFID_SS_PIN, RFID_RST_PIN);  // Create MFRC522 instance
RF24 radio(radio_SS_pin,radio_CE_pin); // De CSN en de CE pins (ik dacht dat de CSN ook wel als de SS pin gezien kon worden)

void setup() {
 Serial.begin(115200); // Initialize serial communications with the PC
 SPI.begin(); // Init SPI bus
 RFID.PCD_Init(); // Init MFRC522
 RFID.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
 Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks..."));
 radio.begin();
 radio.setPALevel(RF24_PA_MIN);
 radio.openWritingPipe(adres);
 radio.stopListening();
}

void loop() {
 // Look for new cards
 if ( ! RFID.PICC_IsNewCardPresent()) {
   return;
 }

 // Select one of the cards
 if ( ! RFID.PICC_ReadCardSerial()) {
   return;
 }
 delay(100);
 scans = scans + 1;
 Serial.println(scans);
 radio.write(&scans, sizeof(scans));
 delay(100);
}

Je begint je loop met controleren of er een kaart is, daarna of je daarvan het serienummer kunt lezen, en dan met een delay van 0,1 seconde.
Moet dat met die delay ?

Code die ineens stopt na een tijdje, doet vermoeden dat je geheugen vol loopt.
Maar of dat echt zo is weet ik natuurlijk niet.
Ik weet niet of er niet nog meer van die kaart getrokken word, en wat er dan mee word gedaan.
Zie je in de serial monitor hetzelfde voorbij komen als via de ontvanger ?

Wat er met pin 13 gebeurt weet ik niet want ik zie die hier nergens tussen staan.
Maar dat zal wel iets met de library te maken hebben.