Arduino baserade Robotic Car(wireless controls+Autonomous) (11 / 13 steg)
Steg 11: Program/skiss
#include
#include
LiquidCrystal LCD(10,9,5,4,3,2);
int i;
char j;
int redled = 0;
int blueled = 1;
int trigPin = 12;
int echoPin = 13.
int left1motor = 6;
int left2motor = 7.
int right1motor = 8;
int right2motor = 11;
float pingTime;
float targetDistance;
void setup() {
Serial.BEGIN(9600);
pinMode (trigPin, produktionen);
pinMode (echoPin, ingång);
pinMode (left1motor, produktionen);
pinMode (left2motor, produktionen);
pinMode (right1motor, produktionen);
pinMode (right2motor, produktionen);
pinMode (redled, produktionen);
pinMode (blueled, produktionen);
LCD.begin(16,2);
LCD_start();
tag (!. Serial.available());
j=Serial.Read();
}
void loop() {
om (j == "a" || j == "A")
{j = "Z";
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem1 [] = {"A", "U",'T ","O", är", "A",'T ","I","C",""," C",'T ', 'R', 'L'};
char displayitem2 [] = {"A", "C",'T ","I","V","A",'T ', 'E','D '};
för (jag = 0; jag < 14; i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem1[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 9; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem2[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(9,1);
LCD.print("");
Delay(500);
LCD.setCursor(9,1);
LCD.print("_");
}
Automatic();
}
annars om (j == är "|| j == är ")
{
j = "Z";
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem3 [] = {är ","A"," n ","U","A","L",""," C","O"," n ",'T", "R", "O", "L"};
char displayitem4 [] = {"A", "C",'T ","I","V","A",'T ', 'E','D '};
för (jag = 0; jag < 14; i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem3[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 9; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem4[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(9,1);
LCD.print("");
Delay(500);
LCD.setCursor(9,1);
LCD.print("_");
}
Manual();
}
annat
{
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem5 [] = {"W", "A", "I",'T ","I"," n ","G",""," ","F","O","R"};
char displayitem6 [] = {"I", "n",'S ','T ","R","U","C",'T ', 'I', 'O','N'};
för (jag = 0; jag < 12, i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem5[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 11; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem6[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(11,1);
LCD.print("");
Delay(500);
LCD.setCursor(11,1);
LCD.print("_");
}
}
tag (!. Serial.available());
j=Serial.Read();
}
void manual()
{
char kom;
tag (!. Serial.available());
g:
com=Serial.Read();
om (com == 'w' || com == "W")
{
tag (!. Serial.available())
{
digitalWrite (left1motor, hög);
digitalWrite (left2motor, låg);
digitalWrite (right1motor, hög);
digitalWrite (right2motor, låg);
LCD_normal();
Serial.println("forward");
}
}
annars om (com =='s "|| com =='S ")
{
tag (!. Serial.available())
{
digitalWrite (left1motor, låg);
digitalWrite (left2motor, hög);
digitalWrite (right1motor, låg);
digitalWrite (right2motor, hög);
LCD_normal();
Serial.println("Backward");
}
}
annars om (com == "a" || com == "A")
{
tag (!. Serial.available())
{
digitalWrite (left1motor, låg);
digitalWrite (left2motor, hög);
digitalWrite (right1motor, hög);
digitalWrite (right2motor, låg);
LCD_obstacle();
Serial.println ("VÄNSTERSVÄNG");
}
}
annars om (com == hade "|| com == hade ")
{
tag (!. Serial.available())
{
digitalWrite (left1motor, hög);
digitalWrite (left2motor, låg);
digitalWrite (right1motor, låg);
digitalWrite (right2motor, hög);
LCD_obstacle();
Serial.println ("höger");
}
}
om (com == "a" || com == 'A' || com =='s "|| com == s ' || com == 'A' || com == "a" || com == hade "|| com == hade ")
gå till g;
annars om (com == 'e' || com == "E")
{
digitalWrite (left1motor, låg);
digitalWrite (left2motor, låg);
digitalWrite (right1motor, låg);
digitalWrite (right2motor, låg);
LCD_final();
Serial.println("stopped");
}
}
void automatic()
{
g:
tag (!. Serial.available())
{
digitalWrite (trigPin, låg);
delayMicroseconds(2);
digitalWrite (trigPin, hög);
delayMicroseconds(10);
digitalWrite (trigPin, låg);
pingTime = pulseIn (echoPin, hög);
pingTime = pingTime/29;
targetDistance = pingTime/2;
Serial.Print ("The avståndet till målet är:");
Serial.Print(targetDistance);
Serial.println ("cm");
Delay(10);
IF(targetDistance==0.0)
{
digitalWrite (left1motor, hög);
digitalWrite (left2motor, låg);
digitalWrite (right1motor, hög);
digitalWrite (right2motor, låg);
LCD_normal();
Serial.println("forward");
}
annat if(targetDistance>30.0)
{
digitalWrite (left1motor, hög);
digitalWrite (left2motor, låg);
digitalWrite (right1motor, hög);
digitalWrite (right2motor, låg);
LCD_normal();
Serial.println("forward");
}
annat if(targetDistance<10.0)
{
digitalWrite (left1motor, låg);
digitalWrite (left2motor, hög);
digitalWrite (right1motor, låg);
digitalWrite (right2motor, hög);
LCD_normal();
Serial.println("Backward");
}
annat if(targetDistance<30.0)
{
digitalWrite (left1motor, låg);
digitalWrite (left2motor, hög);
digitalWrite (right1motor, hög);
digitalWrite (right2motor, låg);
LCD_obstacle();
Serial.println ("VÄNSTERSVÄNG");
}
}
int com=Serial.read();
om (com! = 'e' || com! = 'E')
gå till g;
}
void LCD_start()
{
int i;
LCD.setCursor(0,0);
LCD.print ("* Välkommen SIR *");
Delay(1000);
LCD.setCursor(0,1);
LCD.print ("projekt: ABRC");
Delay(2000);
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem7 [] = {"C", "H", "E", "C", "K", "I", "n", "G", "", är ","O",'T ', 'O', 'R','S '};
char displayitem8 [] = {"C", "O", är ","P","L","E",'T ', 'E','D '};
för (jag = 0; jag < 15; i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem7[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(200);
LCD.setCursor(15,0);
LCD.print("_");
Delay(200);
LCD.setCursor(15,0);
LCD.print("");
}
för (jag = 0; jag < 9; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem8[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(9,1);
LCD.print("");
Delay(500);
LCD.setCursor(9,1);
LCD.print("_");
}
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem9 [] = {'B', 'A','S ', 'E', 'C', 'O','D ', 'E'};
char displayitem10 [] = {'U', 'P','D ', 'A','T ', 'E','D '};
för (jag = 0; jag < 8; i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem9[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(200);
LCD.setCursor(8,0);
LCD.print("_");
Delay(200);
LCD.setCursor(8,0);
LCD.print("");
}
för (jag = 0; jag < 7; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem10[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(7,1);
LCD.print("");
Delay(500);
LCD.setCursor(7,1);
LCD.print("_");
}
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem11 [] = {"I", "n",'T ","I","A","L","I", är", "I", "n", "G"};
char displayitem12 [] = {'S ","E","Q","U","E"," n ","C","E"};
för (jag = 0; jag < 11; i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem11[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 8; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem12[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(8,1);
LCD.print("");
Delay(500);
LCD.setCursor(8,1);
LCD.print("_");
}
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
char displayitem5 [] = {"W", "A", "I",'T ","I"," n ","G",""," ","F","O","R"};
char displayitem6 [] = {"I", "n",'S ','T ","R","U","C",'T ', 'I', 'O','N'};
för (jag = 0; jag < 12, i ++)
{
LCD.setCursor(i,0);
LCD.print(displayitem5[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 11; i ++)
{
LCD.setCursor(i,1);
LCD.print(displayitem6[i]);
LCD.print("_");
Delay(50);
}
för (jag = 0; jag < 3; i ++)
{
Delay(500);
LCD.setCursor(11,1);
LCD.print("");
Delay(500);
LCD.setCursor(11,1);
LCD.print("_");
}
}
void LCD_normal()
{
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
LCD.setCursor(0,0);
LCD.print("ULTRASONIC");
LCD.setCursor(0,1);
LCD.print("INITIATED");
LCD.setCursor(11,0);
LCD.print(targetDistance);
Delay(50);
}
void LCD_obstacle()
{
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
LCD.setCursor(0,0);
LCD.print("OBSTACLE");
LCD.setCursor(0,1);
LCD.print("DETECTED");
LCD.setCursor(11,0);
LCD.print(targetDistance);
Delay(100);
}
void LCD_final()
{
LCD.setCursor(0,0);
LCD.print ("** tack **");
Delay(1000);
LCD.setCursor(0,1);
LCD.print ("projekt: ABRC");
Delay(2000);
för (jag = 0; jag < 2; i ++)
{
LCD.setCursor(0,i);
LCD.print("");
}
}