Buenas, acudo a este foro ya que se que las reglas primero son buscar todo lo posible en google... e ecnontrado cosas referente a lo que plateare pero no me quedan claras ni me estan funcionando y bueno estoy aun nivel frustrante la verdad... Aclaro que conosco la funcionalidad de como deberia ser el funcionamiento del SPI que las lineas sck,miso,mosi pueden estar en todos los dispositivos son iguales, a excepcion del CS o cable select... que es el que define cual se esta usando... bien tambien quiero decir que estoy usando un arduino NANO y sus respectivos pines... que deseo hacer? simplemente recibir un string por el NRF2401L y guardalo en la sd, asi de simple.. que sucede.. no logro hacer que funcionen cuando estan juntas :S osea sd solo si va, nrf2401l solo si va... juntos no e podido.. el codigo que dejo a continuacion es el que utilizo pienso yo mas claramente para que sepan como estoy manejando el bus SPI y cada slave para el CS...
espero puedan ayudarme, gracias.
#include <SD.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"
#include <SPI.h>
const uint8_t SdChipSelect = 12;
const uint8_t RF24ChipSelect = 10;
const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
typedef enum { role_ping_out = 1, role_pong_back } role_e;
role_e role = role_pong_back;
unsigned long get_id;
RF24 radio(9,RF24ChipSelect);
void setup() {
Serial.begin(9600);
pinMode(RF24ChipSelect, OUTPUT);
pinMode(SdChipSelect, OUTPUT);
digitalWrite(RF24ChipSelect, HIGH);
digitalWrite(SdChipSelect, HIGH);
Initialize_SDCard_Pri();
checkPins();
testRF24();
}
void loop() {
}
void Initialize_NFC_Pri() {
InitializeRF24();
InitializeSDCard();
}
void Initialize_SDCard_Pri() {
InitializeSDCard();
InitializeRF24();
}
void InitializeRF24() {
digitalWrite(SdChipSelect, HIGH);
digitalWrite(RF24ChipSelect, LOW);
radio.begin();
radio.setRetries(15,15);
radio.setPayloadSize(8);
radio.openWritingPipe(pipes[1]);
radio.openReadingPipe(1,pipes[0]);
radio.startListening();
radio.printDetails();
digitalWrite(RF24ChipSelect, HIGH);
digitalWrite(SdChipSelect, HIGH);
}
void InitializeSDCard() {
digitalWrite(SdChipSelect, LOW);
digitalWrite(RF24ChipSelect, HIGH);
digitalWrite(SdChipSelect, LOW);
Serial.print("Initializing SD card...");
if (!SD.begin()) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
digitalWrite(RF24ChipSelect, HIGH);
digitalWrite(SdChipSelect, HIGH);
}
void checkPins() {
if(digitalRead(RF24ChipSelect) == LOW) Serial.println("RF24 Active");
else Serial.println("RF24 inActive");
if(digitalRead(SdChipSelect) == LOW) Serial.println("SD Card Active");
else Serial.println("SD Card inActive");
}
void testRF24() {
digitalWrite(SdChipSelect, HIGH);
digitalWrite(RF24ChipSelect, LOW);
radio.printDetails();
digitalWrite(RF24ChipSelect, HIGH);
digitalWrite(SdChipSelect, HIGH);
}