//Receiver program
#include <SPI.h>
#include "Mirf.h"
#include "nRF24L01.h"
#include "MirfHardwareSpiDriver.h"
Nrf24l Mirf = Nrf24l(10, 9);
int value;
int mov;
//MOTOR 1
const int mot1_A=6;
const int mot1_B=5;
//MOTOR 2
const int mot2_A=4;
const int mot2_B=3;
//MOTOR 3
const int mot3_A=14; //A0
const int mot3_B=15; //A1
//MOTOR 4
const int mot4_A=16; //A2
const int mot4_B=17; //A3
void setup()
{
Serial.begin(9600);
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"ROB01"); //Set your own address (receiver address) using 5 characters
Mirf.payload = sizeof(value);
Mirf.channel = 90; //Set the used channel
Mirf.config();
Serial.println("Listening..."); //Start listening to received data
pinMode(mot1_A, OUTPUT);
pinMode(mot1_B, OUTPUT);
pinMode(mot2_A, OUTPUT);
pinMode(mot2_B, OUTPUT);
pinMode(mot3_A, OUTPUT);
pinMode(mot3_B, OUTPUT);
pinMode(mot4_A, OUTPUT);
pinMode(mot4_B, OUTPUT);
}
void loop()
{
if (Mirf.dataReady()) { //When the program is received, the received data is output from the serial port
Mirf.getData((byte *) &value);
mov=value;
Serial.println(mov);
switch (mov) {
case 1:
adelante();
break;
case 2:
atras();
break;
case 3:
izquierda();
break;
case 4:
derecha();
break;
case 5:
detenido();
break;
default:
// if nothing else matches, do the default
// default is optional
break;
}
}
}
void adelante() {
digitalWrite(mot1_A, HIGH);
digitalWrite(mot1_B, LOW);
digitalWrite(mot2_A, HIGH);
digitalWrite(mot2_B, LOW);
digitalWrite(mot3_A, HIGH);
digitalWrite(mot3_B, LOW);
digitalWrite(mot4_A, HIGH);
digitalWrite(mot4_B, LOW);
}
void atras() {
digitalWrite(mot1_A, LOW);
digitalWrite(mot1_B, HIGH);
digitalWrite(mot2_A, LOW);
digitalWrite(mot2_B, HIGH);
digitalWrite(mot3_A, LOW);
digitalWrite(mot3_B, HIGH);
digitalWrite(mot4_A, LOW);
digitalWrite(mot4_B, HIGH);
}
void izquierda() {
//motor 1 y 3 adelante
digitalWrite(mot1_A, HIGH);
digitalWrite(mot1_B, LOW);
digitalWrite(mot3_A, HIGH);
digitalWrite(mot3_B, LOW);
//motor 2 y 4 atras
digitalWrite(mot2_A, LOW);
digitalWrite(mot2_B, HIGH);
digitalWrite(mot4_A, LOW);
digitalWrite(mot4_B, HIGH);
}
void derecha() {
//motor 1 y 3 atras
digitalWrite(mot1_A, LOW);
digitalWrite(mot1_B, HIGH);
digitalWrite(mot3_A, LOW);
digitalWrite(mot3_B, HIGH);
//motor 2 y 4 adelante
digitalWrite(mot2_A, HIGH);
digitalWrite(mot2_B, LOW);
digitalWrite(mot4_A, HIGH);
digitalWrite(mot4_B, LOW);
}
void detenido() {
digitalWrite(mot1_A, LOW);
digitalWrite(mot1_B, LOW);
digitalWrite(mot2_A, LOW);
digitalWrite(mot2_B, LOW);
digitalWrite(mot3_A, LOW);
digitalWrite(mot3_B, LOW);
digitalWrite(mot4_A, LOW);
digitalWrite(mot4_B, LOW);
}