ATX Home Security Robot Rover (8 / 8 steg)
Steg 8: Arduino programmering
Detta är koden för arduino att läsa och köra kommandona:
#define echoPin 10 / / Echo Pin
#define trigPin 11 / / Trigger Pin #include #include / / Inicializa o Visa inga endereco 0x27 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positiv);
lång varaktighet, avstånd; lång randomPisca; typen int; int IN1 = 4; int IN2 = 5; int IN3 = 6; int IN4 = 7. Strängen mode = "rover";
void setup() {delay(650); Serial.BEGIN(9600); LCD.BEGIN (20, 4); pinMode (trigPin, produktionen); pinMode (echoPin, ingång); pinMode (IN1, OUTPUT); pinMode (IN2, OUTPUT); pinMode (IN3, OUTPUT); pinMode (IN4, OUTPUT); randomSeed(analogRead(A0)); Engage(); }
void loop() {om (läge == "rover") {randomPisca = random(1000); om (randomPisca < = 12,0) {pisca();} else om (randomPisca > = 13,0 & & randomPisca < = 20,0) {olhaDireita(); delay(500); olhaEsquerda(); delay(500);} annat olhaFrente();} om (läge == "Britta") {cls(), digitalWrite (trigPin, låg), delayMicroseconds(2), digitalWrite (trigPin, hög); delayMicroseconds(10); digitalWrite (trigPin, låg), längd = pulseIn (echoPin, hög), avstånd = varaktighet / 58,2; Serial.Print(Distance); lcd.setCursor (0, 0); LCD.Print ("ATX 2.0"); lcd.setCursor (1, 1); LCD.Print(Distance); lcd.setCursor (1, 2); LCD.Print("cm"); lcd.setCursor (0, 3); LCD.Print ("Modo Joens"); Delay(400); } om (läge == "medo") {digitalWrite (trigPin, låg), delayMicroseconds(2), digitalWrite (trigPin, hög), delayMicroseconds(10), digitalWrite (trigPin, låg), längd = pulseIn (echoPin, hög), avstånd = varaktighet / 58,2; Serial.Print(Distance); Serial.Print ("cm"); Serial.println(); om (avstånd < = 20) {olhaCima(); tras();} annat olhaFrente(); } om (Serial.available() > 0) {typ = Serial.read(); om (läge == "rover") {om (typ == '1') {digitalWrite (trigPin, låg), delayMicroseconds(2), digitalWrite (trigPin, hög), delayMicroseconds(10), digitalWrite (trigPin, låg), längd = pulseIn (echoPin, hög), avstånd = varaktighet / 58,2; Serial.Print(Distance); {} om (typ == '2') {olhaBugado(); tras();} om (typ == "5") {olhaFrente(); frente();} om (typ == '6') {olhaEsquerda(); esquerda();} om (typ == '4') {olhaDireita(); direita();} annat {{}} om (typ == hade ") {lcd.setBacklight(LOW);} om (typ =="l") {lcd.setBacklight(HIGH);} om (typ == 't') {läge ="Britta";} om (typ =="r") {läge ="rover";} om (typ == är") {läge = "medo";}} } void tras() {//Tras digitalWrite (IN1, låg); digitalWrite (IN2, hög), digitalWrite (IN3, hög), digitalWrite (IN4, låg); delay(200), digitalWrite (IN1, hög), digitalWrite (IN2, hög), digitalWrite (IN3, hög), digitalWrite (IN4, hög), delay(10);} void frente() {//Frente digitalWrite (IN1, hög), digitalWrite (IN2, låg); digitalWrite (IN3, låg); digitalWrite (IN4, hög), delay(200), digitalWrite (IN1, hög), digitalWrite (IN2, hög), digitalWrite (IN3, hög), digitalWrite (IN4, hög), delay(10);} void direita() {//Direita digitalWrite (IN1 HÖG); digitalWrite (IN2, låg); digitalWrite (IN3, hög); digitalWrite (IN4, låg); Delay(200); digitalWrite (IN1, hög); digitalWrite (IN2, hög); digitalWrite (IN3, hög); digitalWrite (IN4, hög); Delay(10); } void esquerda() {//Esquerda digitalWrite (IN1, låg), digitalWrite (IN2, hög), digitalWrite (IN3, låg), digitalWrite (IN4, hög); delay(200), digitalWrite (IN1, hög), digitalWrite (IN2, hög), digitalWrite (IN3, hög), digitalWrite (IN4, hög), delay(10);} void engage() {lcd.setBacklight(HIGH), lcd.setCursor (0, 0), lcd.print("*---*"), lcd.setCursor (0, 1); lcd.print("| ATX 2.0 | "); lcd.setCursor (0, 2); LCD.Print("| (ALS robotar) | "); lcd.setCursor (0, 3); LCD.Print("*---*"); Delay(3000); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("ATX 2.0"); lcd.setCursor (0, 2); LCD.Print ("(ALS robotar)"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("ATX 2.0"); lcd.setCursor (0, 2); LCD.Print ("(ALS robotar)"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("ATX 2.0"); lcd.setCursor (0, 2); LCD.Print ("(ALS robotar)"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("ATX 2.0"); lcd.setCursor (0, 2); LCD.Print ("(ALS robotar)"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("ATX 2.0"); lcd.setCursor (0, 2); LCD.Print ("ALS robotar"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("ATX 2.0"); lcd.setCursor (0, 2); LCD.Print ("LS Robot"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("TX 2.0"); lcd.setCursor (0, 2); LCD.Print ("S Robo"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("---"); lcd.setCursor (0, 1); LCD.Print ("X 2. "); lcd.setCursor (0, 2); LCD.Print ("Rob"); lcd.setCursor (0, 3); LCD.Print ("---"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("--"); lcd.setCursor (0, 1); LCD.Print ("2"). lcd.setCursor (0, 2); LCD.Print ("Ro"); lcd.setCursor (0, 3); LCD.Print ("--"); Delay(100); lcd.setCursor (0, 0); LCD.Print(""); lcd.setCursor (0, 1); LCD.Print(""); lcd.setCursor (0, 2); LCD.Print(""); lcd.setCursor (0, 3); LCD.Print(""); Delay(200); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O| | O| "); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(700); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O | | O | "); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(700); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("| O | | O | "); lcd.setCursor (0, 2); LCD.Print("||||"); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(700); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("| O| | O| "); lcd.setCursor (0, 2); LCD.Print("||||"); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(700); Pisca(); } void pisca() {delay(100), lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print ("|___| |___|"); lcd.setCursor (0, 2); LCD.Print("| O | | O | "); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print ("|___| |___|"); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print ("|___| |___|"); lcd.setCursor (0, 2); LCD.Print("| O | | O | "); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(100); lcd.setCursor (0, 0); LCD.Print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O | | O | "); lcd.setCursor (0, 3); LCD.Print ("------"); Delay(1000); } void olhaDireita() {lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O| | O| "); lcd.setCursor (0, 3); LCD.Print ("------");} void olhaEsquerda() {lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O | | O | "); lcd.setCursor (0, 3); LCD.Print ("------");} void olhaFrente() {lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O | | O | "); lcd.setCursor (0, 3); LCD.Print ("------");} void olhaBugado() {lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||| O| "); lcd.setCursor (0, 2); LCD.Print("| O | | | "); lcd.setCursor (0, 3); LCD.Print ("------");} void olhaVesgo() {lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("||||"); lcd.setCursor (0, 2); LCD.Print("| O| | O | "); lcd.setCursor (0, 3); LCD.Print ("------");} void olhaCima() {lcd.setCursor (0, 0), lcd.print ("___ ___"); lcd.setCursor (0, 1); LCD.Print("| O | | O | "); lcd.setCursor (0, 2); LCD.Print("||||"); lcd.setCursor (0, 3); LCD.Print ("------");} void cls() {lcd.setCursor (0, 0); lcd.print(""); lcd.setCursor (0, 1); LCD.Print(""); lcd.setCursor (0, 2); LCD.Print(""); lcd.setCursor (0, 3); LCD.Print("");}