Hi All,
I'm Erez, currently building line following car & i need a programer to help me tidy up my code & coding touch-ups.
here are the topics where i'm struggle, hope someone can help me out:
1/ Code line following loop, front 5head IR sensor programed, need to program another IR rear sensor, black line i'm using is a closed line, so i need to add a start/finish point.
2/Code the 4 installed u.sonic so robot use anticollision loop while its moving +beeping when robot's way is blocked.
3/Code two driving speeds using pwm.
4/Code the car to run only when TEMP is under 60Deg, Humidity under 80%
using installed DHT12
5/Code alternating beep while reverse loop
heres is my code so far:
#include <Udi_RF433Remote.h>
#include <RCSwitch.h>
#include "DHT12.h"
RCSwitch mySwitch = RCSwitch();
DHT12 DHT(&Wire);
long previousMillis = 0;
long currentMillis = millis();
long Interval = 300; // millis()
long ReceivedValue;
long duration, distance, RightSensor,BackSensor,FrontSensor,LeftSensor;
bool IR_F_VALUE_1, IR_F_VALUE_2, IR_F_VALUE_3, IR_F_VALUE_4, IR_F_VALUE_5;
bool IR_B_VALUE_1, IR_B_VALUE_2, IR_B_VALUE_3, IR_B_VALUE_4, IR_B_VALUE_5;
int InverterPin1,Buzzer,RelayPin2;
#define M1PWM 3
#define M2PWM 4
#define M3PWM 5
#define M4PWM 6
#define IR_F_1 31
#define IR_F_2 30
#define IR_F_3 29
#define IR_F_4 28
#define IR_F_5 27
#define IR_B_1 33
#define IR_B_2 34
#define IR_B_3 35
#define IR_B_4 36
#define IR_B_5 37
#define M1_S 8
#define M1_B 9
#define M1_F 10
#define M1_M 11
#define M2_S 14
#define M2_B 15
#define M2_F 16
#define M2_M 17
#define M3_S 45
#define M3_B 43
#define M3_F 44
#define M3_M 42
#define M4_S 38
#define M4_B 40
#define M4_F 39
#define M4_M 41
#define Buzzer 32
#define InverterPin1 26
#define RelayPin2 25
#define trigPin1 24
#define echoPin1 23
#define trigPin2 A14
#define echoPin2 A15
#define trigPin3 A13
#define echoPin3 A12
#define trigPin4 46
#define echoPin4 22
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(0);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
pinMode(trigPin4, OUTPUT);
pinMode(echoPin4, INPUT);
pinMode(M1_S, OUTPUT);
pinMode(M1_B, OUTPUT);
pinMode(M1_F, OUTPUT);
pinMode(M1_M, OUTPUT);
pinMode(M2_S, OUTPUT);
pinMode(M2_B, OUTPUT);
pinMode(M2_F, OUTPUT);
pinMode(M2_M, OUTPUT);
pinMode(M3_S, OUTPUT);
pinMode(M3_B, OUTPUT);
pinMode(M3_F, OUTPUT);
pinMode(M3_M, OUTPUT);
pinMode(M4_S, OUTPUT);
pinMode(M4_B, OUTPUT);
pinMode(M4_F, OUTPUT);
pinMode(M4_M, OUTPUT);
pinMode(IR_F_1, INPUT);
pinMode(IR_F_2, INPUT);
pinMode(IR_F_3, INPUT);
pinMode(IR_F_4, INPUT);
pinMode(IR_F_5, INPUT);
pinMode(IR_B_1, INPUT);
pinMode(IR_B_2, INPUT);
pinMode(IR_B_3, INPUT);
pinMode(IR_B_4, INPUT);
pinMode(IR_B_5, INPUT);
pinMode(InverterPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
pinMode(Buzzer, OUTPUT);
}
void loop() {
//handleRF433();
//handleButtons();
// AntiCollision();
// handlePosition();
//Toggle();
}
void SonarSensor(int trigPin,int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
}
void Toggle(){
digitalWrite(InverterPin1, LOW);
}
void AntiCollision() {
SonarSensor(trigPin1, echoPin1);
RightSensor = distance;
SonarSensor(trigPin3, echoPin3);
LeftSensor = distance;
SonarSensor(trigPin4, echoPin4);
FrontSensor = distance;
SonarSensor(trigPin2, echoPin2);
BackSensor = distance;
//Serial.print(LeftSensor);Serial.println(" LeftSensor ");
//Serial.print(FrontSensor);Serial.println(" FrontSensor ");
//Serial.print(RightSensor);Serial.println(" RightSensor ");
//Serial.print(BackSensor);Serial.println(" BackSensor ");
}
void handlePosition() {
// IR_B_VALUE_1 = !digitalRead(IR_B_1); //delay(10);
// IR_B_VALUE_2 = !digitalRead(IR_B_2);//delay(10);
// IR_B_VALUE_3 = !digitalRead(IR_B_3);//delay(10);
// IR_B_VALUE_4 = !digitalRead(IR_B_4);//delay(10);
// IR_B_VALUE_5 = !digitalRead(IR_B_5);//delay(10);
//
// Serial.print(IR_B_VALUE_1); Serial.print(" = ");
// Serial.print(IR_B_VALUE_2); Serial.print(" = ");
// Serial.print(IR_B_VALUE_3); Serial.print(" = ");
// Serial.print(IR_B_VALUE_4); Serial.print(" = ");
// Serial.print(IR_B_VALUE_5);
// Serial.println();
IR_F_VALUE_1 = !digitalRead(IR_F_1);
IR_F_VALUE_2 = !digitalRead(IR_F_2);
IR_F_VALUE_3 = !digitalRead(IR_F_3);
IR_F_VALUE_4 = !digitalRead(IR_F_4);
IR_F_VALUE_5 = !digitalRead(IR_F_5);
Serial.print(IR_F_VALUE_1); Serial.print(" = ");
Serial.print(IR_F_VALUE_2); Serial.print(" = ");
Serial.print(IR_F_VALUE_3); Serial.print(" = ");
Serial.print(IR_F_VALUE_4); Serial.print(" = ");
Serial.print(IR_F_VALUE_5);
Serial.println();
if (IR_F_VALUE_3) {
Forward();
}
else if (IR_F_VALUE_4 || IR_F_VALUE_5) {
RightOneSide();
}
else if (IR_F_VALUE_1 || IR_F_VALUE_2) {
LeftOneSide();
}
else if (IR_F_VALUE_1 && IR_F_VALUE_2 && IR_F_VALUE_3 && IR_F_VALUE_4 && IR_F_VALUE_5) {
Stop();
}
}
void Backward() {
digitalWrite(M1_S, LOW);
digitalWrite(M1_B, HIGH);
digitalWrite(M1_F, LOW);
digitalWrite(M1_M, HIGH);
digitalWrite(M2_S, LOW);
digitalWrite(M2_F, LOW);
digitalWrite(M2_B, HIGH);
digitalWrite(M2_M, HIGH);
digitalWrite(M3_S, LOW);
digitalWrite(M3_F, LOW);
digitalWrite(M3_B, HIGH);
digitalWrite(M3_M, HIGH);
digitalWrite(M4_S, LOW);
digitalWrite(M4_F, LOW);
digitalWrite(M4_B, HIGH);
digitalWrite(M4_M, HIGH);
}
void Forward(){
digitalWrite(M1_S, LOW);
digitalWrite(M1_B, LOW);
digitalWrite(M1_F, HIGH);
digitalWrite(M1_M, HIGH);
digitalWrite(M2_S, LOW);
digitalWrite(M2_F, HIGH);
digitalWrite(M2_B, LOW);
digitalWrite(M2_M, HIGH);
digitalWrite(M3_S, LOW);
digitalWrite(M3_F, HIGH);
digitalWrite(M3_B, LOW);
digitalWrite(M3_M, HIGH);
digitalWrite(M4_S, LOW);
digitalWrite(M4_F, HIGH);
digitalWrite(M4_B, LOW);
digitalWrite(M4_M, HIGH);
}
void RightOneSide() {
digitalWrite(M1_S, HIGH);
digitalWrite(M1_B, LOW);
digitalWrite(M1_F, HIGH);
digitalWrite(M1_M, HIGH);
digitalWrite(M2_S, HIGH);
digitalWrite(M2_F, HIGH);
digitalWrite(M2_B, LOW);
digitalWrite(M2_M, HIGH);
digitalWrite(M3_S, LOW);
digitalWrite(M3_F, HIGH);
digitalWrite(M3_B, LOW);
digitalWrite(M3_M, HIGH);
digitalWrite(M4_S, LOW);
digitalWrite(M4_F, HIGH);
digitalWrite(M4_B, LOW);
digitalWrite(M4_M, HIGH);
}
void LeftOneSide() {
digitalWrite(M1_S, LOW);
digitalWrite(M1_B, LOW);
digitalWrite(M1_F, HIGH);
digitalWrite(M1_M, HIGH);
digitalWrite(M2_S, LOW);
digitalWrite(M2_F, HIGH);
digitalWrite(M2_B, LOW);
digitalWrite(M2_M, HIGH);
digitalWrite(M3_S, HIGH);
digitalWrite(M3_F, HIGH);
digitalWrite(M3_B, LOW);
digitalWrite(M3_M, HIGH);
digitalWrite(M4_S, HIGH);
digitalWrite(M4_F, HIGH);
digitalWrite(M4_B, LOW);
digitalWrite(M4_M, HIGH);
}
void Stop() {
digitalWrite(M1_S, HIGH);
digitalWrite(M1_B, LOW);
digitalWrite(M1_F, LOW);
digitalWrite(M1_M, LOW);
digitalWrite(M2_S, HIGH);
digitalWrite(M2_F, LOW);
digitalWrite(M2_B, LOW);
digitalWrite(M2_M, LOW);
digitalWrite(M3_S, HIGH);
digitalWrite(M3_F, LOW);
digitalWrite(M3_B, LOW);
digitalWrite(M3_M, LOW);
digitalWrite(M4_S, HIGH);
digitalWrite(M4_F, LOW);
digitalWrite(M4_B, LOW);
digitalWrite(M4_M, LOW);
}
void handleButtons() {
switch (ReceivedValue) {
case BTN_ARR_4_01 :
Forward();
break;
case BTN_ARR_4_02 :
Backward();
break;
case BTN_ARR_4_04 :
RightOneSide();
break;
case BTN_ARR_4_03:
LeftOneSide();
break;
}
}
void handleRF433() {
if (millis() - previousMillis > Interval) {
Stop();
Serial.println("=========NO RF=========");
}
ReceivedValue = 0;
if (mySwitch.available()) {
if (mySwitch.getReceivedValue()) {
ReceivedValue = mySwitch.getReceivedValue();
}
mySwitch.resetAvailable();
Serial.print("millis() - previousMillis: ");
Serial.println(millis() - previousMillis);
previousMillis = millis();
// Serial.print(millis());
// Serial.print(" ");
Serial.println(ReceivedValue);
}
delay(5);
}


