Problem with NRF24L01 and Arduino Micro

Hello all. Long time reader, first time poster.

I am trying to make a basic wireless transmitter with 2 momentary buttons and receiver that takes the signal from the Tx and moves 2 different servos. The transmitter is Arduino Uno with nRF24L01 and the receiver is Arduino Micro (not pro micro) also with nRF24L01.

Using the code below, I was able to successfully make this project using (2) Arduino Uno's. Everything worked without issue. When I change the receiver to Arduino Micro, using the wiring schematic below, the project does not work. Serial monitor of the receiver just says "X=0, Y=0". Nothing happens with buttons are pressed, and never do I get "Radio not available".

Do I need to change something with regard to the connections/coding due to using the Micro instead of the Uno? Please help. Thanks in advance.

Transmitter Code:

/* YourDuinoStarter Example: nRF24L01 Transmit Joystick values
 - WHAT IT DOES: Reads Analog values on A0, A1 and transmits
   them over a nRF24L01 Radio Link to another transceiver.
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
   1 - GND
   2 - VCC 3.3V !!! NOT 5V
   3 - CE to Arduino pin 9
   4 - CSN to Arduino pin 10
   5 - SCK to Arduino pin 13
   6 - MOSI to Arduino pin 11
   7 - MISO to Arduino pin 12
   8 - UNUSED
   - 
   Analog Joystick or two 10K potentiometers:
   GND to Arduino GND
   VCC to Arduino +5V
   X Pot to Arduino A0
   Y Pot to Arduino A1
   
 - V1.00 11/26/13
   Based on examples at http://www.bajdi.com/
   Questions: terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10
#define JOYSTICK_X 7
#define JOYSTICK_Y 8


// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2];  // 2 element array holding Joystick readings

void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  joystick[0] = digitalRead(JOYSTICK_X);
  joystick[1] = digitalRead(JOYSTICK_Y);
  
  radio.Write( joystick, sizeof(joystick) );

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********

Receiver Code:

/* YourDuinoStarter Example: nRF24L01 Receive Joystick values

 - WHAT IT DOES: Receives data from another transceiver with
   2 Analog values from a Joystick or 2 Potentiometers
   Displays received values on Serial Monitor
 - SEE the comments after "//" on each line below
 - CONNECTIONS: nRF24L01 Modules See:
 http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
   1 - GND
   2 - VCC 3.3V !!! NOT 5V
   3 - CE to Arduino pin 9
   4 - CSN to Arduino pin 10
   5 - SCK to Arduino pin 13
   6 - MOSI to Arduino pin 11
   7 - MISO to Arduino pin 12
   8 - UNUSED
   
 - V1.00 11/26/13
   Based on examples at http://www.bajdi.com/
   Questions: terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN   9
#define CSN_PIN 10

// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe


/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2];  // 2 element array holding Joystick readings
Servo servoRight;
Servo servoLeft;

void setup()   /****** SETUP: RUNS ONCE ******/
{
  Serial.begin(9600);
  delay(1000);
  Serial.println("Nrf24L01 Receiver Starting");
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();
  
  
  servoLeft.attach(6);
  servoRight.attach(5);
  servoLeft.write (0);
  servoRight.write(0);
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  while ( radio.available() )
  {
    // Read the data payload until we've received everything
    
      // Fetch the data payload
      radio.read( joystick, sizeof(joystick) );
      Serial.print("X = ");
      Serial.print(joystick[0]);
      Serial.print(" Y = ");      
      Serial.println(joystick[1]);
     // angle = map (joystick[0], 0, 1023, 0, 179);
      servoLeft.write(map (joystick[0], 0, 1, 0, 180));
      servoRight.write(map (joystick[1], 0, 1, 0, 100));
    
  }
  
     
      Serial.println("No radio available");
  

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********

Transmitter Schematic:

Receiver Schematic

Serial is a bit buggy on those Micro/Leo boards I think...

You tried adding:
while(!Serial);

Just after Serial.begin() ?

See:

Not sure this will help TBH...

Hello -- I have also been researching this subject. I have a similar problem:

-If I use two nRF24L01+ devices (ones purchased from Tinkersphere in NYC with 2dB external antennas) with two Arduino Unos with the pinouts given by the maniacbug tutorial, everything works.

-If I then replace the transmitting Arduino Uno with an Arduino Micro (ones purchased from Adafruit) and connect the SCK, MISO, MOSI to the corresponding pins on the Micro, and connect the CE and CSN to A9, A10, or 9, 10, or 2, 3 (I have tried all versions and defined the pins accordingly in the code) the transmission will not work. I have poured over the datasheets, and from as far as I can tell, it should not matter what pins I define CE and CSN to be. I am wondering if I have misconnected the SCK, MISO, and MOSI pins between the nRF24L01+ and the Arduino Micro.

I don't have my oscilloscope on me at the moment, but when I probed the pins connected to the nRF24L01+, I was getting different pulse trains, looking like the correct things were happening.

Overall, can anyone recommend a way to monitor my transmitting Arduino Micro to determine if it is transmitting correctly?

Yea, I too am working on this. It works with Arduino UNO to Arduino UNO, but not my homemade Arduino Pro Mini.

I figured it out, the Micro uses the same chip as Leonardo, NRF24L01 com Arduino Leonardo (NRF24L01 with Arduino Leonardo) | Arduino Examples

It has a different pin setup, this worked for me.

I figured it out, the Micro uses the same chip as Leonardo, NRF24L01 com Arduino Leonardo (NRF24L01 with Arduino Leonardo) | Arduino Examples

It has a different pin setup, this worked for me.

I figured it out, the Micro uses the same chip as Leonardo,

It has a different pin setup, this worked for me.

Yes, I have finally gotten this to work for me too. I was also working with a damaged nRF24L01+ (I damaged it by powering it with +5V -- don't do that!)

I posted the steps I used to connect the Arduino Micro and the nRF24L01+ here:
http://mythicelectronics.tumblr.com/post/126697252913/arduino-micro-and-nrf24l01