I have written code for the arduino elegoo robot and it works the way it is supposed to. It uses the IR remote. There are a few buttons with predefined paths and the robot can also be controlled using the directional buttons. There is also a servo motor connected. When I upload the code from my computer to the robot it works but when I copy the code and send it to another student it doesn't work when they upload it. Why would that be?
Here is the code:
#include <IRremote.h>
#include <Servo.h>
int RECV_PIN = 12;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define IR_Go 0x00FF18E7
#define IR_Back 0x00FF4AB5
#define IR_Left 0x00FF10EF
#define IR_Right 0x00FF5AA5
#define IR_Stop 0x00FF38C7
#define one 0x00FFA25D
#define two 0x00FF629D
#define three 0x00FFE21D
#define four 0x00FF22DD
#define up 0x00FF9867
#define down 0x00FF906F
#define Lpwm_pin 5 //adjusting speed
#define Rpwm_pin 6 //adjusting speed //
#define SERVO_PIN A5
Servo myservo;
int pinLB=2; // defining pin2 left rear
int pinLF=4; // defining pin4 left front
int pinRB=7; // defining pin7 right rear
int pinRF=8; // defining pin8 right front
unsigned char pwm_val =100;
void M_Control_IO_config(void)
{
pinMode(pinLB,OUTPUT); // pin2
pinMode(pinLF,OUTPUT); // pin4
pinMode(pinRB,OUTPUT); // pin7
pinMode(pinRF,OUTPUT); // pin8
pinMode(Lpwm_pin,OUTPUT); // pin5 (PWM)
pinMode(Rpwm_pin,OUTPUT); // pin6 (PWM)
}
void Set_Speed(unsigned char pwm)
{
analogWrite(Lpwm_pin,pwm);
analogWrite(Rpwm_pin,pwm);
}
void zero() // going forward
{
myservo.write(0);
}
void ninety() // going forward
{
myservo.write(90);
}
void advance() // going forward
{
digitalWrite(pinRB,LOW); // making motor move towards right rear
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,LOW); // making motor move towards left rear
digitalWrite(pinLF,HIGH);
}
void turnR() //turning right(dual wheel)
{
digitalWrite(pinRB,LOW); //making motor move towards right rear
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,HIGH);
digitalWrite(pinLF,LOW); //making motor move towards left front
}
void turnL() //turning left(dual wheel)
{
digitalWrite(pinRB,HIGH);
digitalWrite(pinRF,LOW ); //making motor move towards right front
digitalWrite(pinLB,LOW); //making motor move towards left rear
digitalWrite(pinLF,HIGH);
}
void stopp() //stop
{
digitalWrite(pinRB,HIGH);
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,HIGH);
digitalWrite(pinLF,HIGH);
}
void back() //back up
{
digitalWrite(pinRB,HIGH); //making motor move towards right rear
digitalWrite(pinRF,LOW);
digitalWrite(pinLB,HIGH); //making motor move towards left rear
digitalWrite(pinLF,LOW);
}
void first() // going forward
{
digitalWrite(pinRB,LOW); // making motor move towards right rear
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,LOW); // making motor move towards left rear
digitalWrite(pinLF,HIGH);
delay(1000); // Gof forward for 500 ms
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //right
digitalWrite(pinRF,HIGH);//right
digitalWrite(pinLB,HIGH);//right
digitalWrite(pinLF,LOW); //right
delay(500);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //forward
digitalWrite(pinRF,HIGH);//forward
digitalWrite(pinLB,LOW); //forward
digitalWrite(pinLF,HIGH); //forward
delay(3500);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
}
void second() // going forward
{
digitalWrite(pinRB,LOW); // making motor move towards right rear
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,LOW); // making motor move towards left rear
digitalWrite(pinLF,HIGH);
delay(1000); // Gof forward for 500 ms
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //right
digitalWrite(pinRF,HIGH);//right
digitalWrite(pinLB,HIGH);//right
digitalWrite(pinLF,LOW); //right
delay(500);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //forward
digitalWrite(pinRF,HIGH);//forward
digitalWrite(pinLB,LOW); //forward
digitalWrite(pinLF,HIGH); //forward
delay(4000);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
}
void third() // going forward
{
digitalWrite(pinRB,LOW); // making motor move towards right rear
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,LOW); // making motor move towards left rear
digitalWrite(pinLF,HIGH);
delay(1000); // Gof forward for 500 ms
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //right
digitalWrite(pinRF,HIGH);//right
digitalWrite(pinLB,HIGH);//right
digitalWrite(pinLF,LOW); //right
delay(500);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //forward
digitalWrite(pinRF,HIGH);//forward
digitalWrite(pinLB,LOW); //forward
digitalWrite(pinLF,HIGH); //forward
delay(4500);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
}
void fourth() // going forward
{
digitalWrite(pinRB,LOW); // making motor move towards right rear
digitalWrite(pinRF,HIGH);
digitalWrite(pinLB,LOW); // making motor move towards left rear
digitalWrite(pinLF,HIGH);
delay(1000); // Gof forward for 500 ms
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //right
digitalWrite(pinRF,HIGH);//right
digitalWrite(pinLB,HIGH);//right
digitalWrite(pinLF,LOW); //right
delay(500);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
digitalWrite(pinRB,LOW); //forward
digitalWrite(pinRF,HIGH);//forward
digitalWrite(pinLB,LOW); //forward
digitalWrite(pinLF,HIGH); //forward
delay(5000);
digitalWrite(pinRB,HIGH);//Stop
digitalWrite(pinRF,HIGH);//Stop
digitalWrite(pinLB,HIGH);//stop
digitalWrite(pinLF,HIGH);//stop
delay(500);
}
void IR_Control(void)
{
unsigned long Key;
if(irrecv.decode(&results)) //judging if serial port receives data
{
Key = results.value;
switch(Key)
{
case IR_Go:advance(); //UP
break;
case IR_Back: back(); //back
break;
case IR_Left:turnL(); //Left
break;
case IR_Right:turnR(); //Righ
break;
case IR_Stop:stopp(); //stop
break;
case one:first(); //go to first spot
break;
case two:second();
break;
case three:third();
break;
case four:fourth();
break;
case up:zero();
break;
case down:ninety();
default:
break;
}
irrecv.resume(); // Receive the next value
}
}
void setup()
{
M_Control_IO_config();
Set_Speed(pwm_val);
irrecv.enableIRIn(); // Start the receiver
Serial.begin(9600); //initializing serial port, Bluetooth used as serial port, setting baud ratio at 9600
stopp();
myservo.attach(SERVO_PIN);
}
void loop()
{
IR_Control();
}