#include <SoftwareSerial.h>
#include <IRremote.h>
#define PUMP 12
#define MOTOR_A_FORWARD 5
#define MOTOR_A_BACK 4
#define MOTOR_B_FORWARD 2
#define MOTOR_B_BACK 3
#define RX 10
#define TX 11
#define IR_RECEIVER 7
#define TRIG 8
#define ECHO 6
IRrecv irrecv(IR_RECEIVER);
decode_results results;
//SoftwareSerial nodeCommunication(RX, TX);
#define nodeCommunication Serial
void setup() {
pinMode(RX, INPUT);
pinMode(TX, OUTPUT);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(PUMP, OUTPUT);
pinMode(MOTOR_A_FORWARD, OUTPUT);
pinMode(MOTOR_A_BACK, OUTPUT);
pinMode(MOTOR_B_FORWARD, OUTPUT);
pinMode(MOTOR_B_BACK, OUTPUT);
nodeCommunication.begin(38400);
nodeCommunication.println("Start");
irrecv.enableIRIn();
}
void loop() {
long duration, distance;
digitalWrite(TRIG, LOW);
delayMicroseconds(2);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duration = pulseIn(ECHO, HIGH);
distance = (duration / 2) / 29.1;
if (nodeCommunication.available() > 0) {
char signal = nodeCommunication.read();
if (signal == '1') {
while (!irrecv.decode(&results)) {
digitalWrite(MOTOR_A_FORWARD, HIGH);
digitalWrite(MOTOR_A_BACK, LOW);
digitalWrite(MOTOR_B_FORWARD, LOW);
digitalWrite(MOTOR_B_BACK, HIGH);
delay(500);
}
irrecv.resume();
digitalWrite(MOTOR_A_FORWARD, LOW);
digitalWrite(MOTOR_A_BACK, LOW);
digitalWrite(MOTOR_B_FORWARD, LOW);
digitalWrite(MOTOR_B_BACK, LOW);
delay(3000);
digitalWrite(MOTOR_A_FORWARD, LOW);
digitalWrite(MOTOR_A_BACK, HIGH);
digitalWrite(MOTOR_B_FORWARD, HIGH);
digitalWrite(MOTOR_B_BACK, LOW);
if (distance < 5) {
digitalWrite(MOTOR_A_FORWARD, LOW);
digitalWrite(MOTOR_A_BACK, LOW);
digitalWrite(MOTOR_B_FORWARD, LOW);
digitalWrite(MOTOR_B_BACK, LOW);
digitalWrite(PUMP, HIGH);
delay(2000);
digitalWrite(PUMP, LOW);
digitalWrite(MOTOR_A_FORWARD, LOW);
digitalWrite(MOTOR_A_BACK, HIGH);
digitalWrite(MOTOR_B_FORWARD, LOW);
digitalWrite(MOTOR_B_BACK, HIGH);
delay(3000);
digitalWrite(MOTOR_A_FORWARD, LOW);
digitalWrite(MOTOR_A_BACK, LOW);
digitalWrite(MOTOR_B_FORWARD, LOW);
digitalWrite(MOTOR_B_BACK, LOW);
delay(10000);
}
}
}
}