Paso 8: Programación de Arduino
Este es el código de arduino para leer y ejecutar los comandos:
#define echoPin 10 / / Echo Pin
#define trigPin 11 / / Perno gatillo #include #include / / Inicializa o no pantalla endereco 0x27 LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, positivo);
larga duración, distancia; largo randomPisca; int tipo; int 1 = 4; int IN2 = 5; int IN3 = 6; int IN4 = 7; Modo de cadena = "rover";
void setup() {delay(650); Serial.Begin(9600); LCD.Begin (20, 4); pinMode (trigPin, salida); pinMode (echoPin, entrada); pinMode (IN1, salida); pinMode (IN2, salida); pinMode (IN3, salida); pinMode (IN4, salida); randomSeed(analogRead(A0)); Engage(); }
void loop() {si (modo == "rover") {randomPisca = random(1000); si (randomPisca < = 12.0) {pisca();} else if (randomPisca > = 13.0 & & randomPisca < = 20.0) {olhaDireita(); delay(500); olhaEsquerda(); delay(500);} else olhaFrente();} si (modo == "trena") {cls() digitalWrite (trigPin, LOW); delayMicroseconds(2); digitalWrite (trigPin, HIGH); delayMicroseconds(10); digitalWrite (trigPin, baja); duración = pulseIn (echoPin, HIGH); distancia = duración / 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 trena"); Delay(400); } Si (modo == "medo") {digitalWrite (trigPin, LOW); delayMicroseconds(2); digitalWrite (trigPin, HIGH); delayMicroseconds(10); digitalWrite (trigPin, bajo), duración = pulseIn (echoPin, HIGH); distancia = duración / 58,2; Serial.Print(Distance); Serial.Print ("cm"); Serial.println(); Si (distancia < = 20) {olhaCima(); tras();} else olhaFrente(); } Si (Serial.available() > 0) {tipo = Serial.read(); if (modo == "rover") {si (tipo == '1') {digitalWrite (trigPin, LOW); delayMicroseconds(2); digitalWrite (trigPin, HIGH); delayMicroseconds(10); digitalWrite (trigPin, bajo), duración = pulseIn (echoPin, HIGH); distancia = duración / 58,2; Serial.Print(Distance); {}} Si (tipo == '2') {olhaBugado(); tras();} si (tipo == '5') {olhaFrente(); frente();} si (tipo == '6') {olhaEsquerda(); esquerda();} si (tipo == '4') {olhaDireita(); direita();} else {}} si (tipo == había ') {lcd.setBacklight(LOW);} si (tipo == 'l') {lcd.setBacklight(HIGH);} si (tipo == ' t ') {modo = "trena";} si (tipo == 'r') {modo = "rover";} si (tipo == estoy ') {mode = "medo";}} } void tras() {//Tras digitalWrite (IN1, LOW); digitalWrite (IN2, alto); digitalWrite (IN3, alto); digitalWrite (IN4, LOW); delay(200); digitalWrite (1, elevado); digitalWrite (IN2, alto); digitalWrite (IN3, alta); digitalWrite (IN4, alta); delay(10);} void frente() {//Frente digitalWrite (1, elevado); digitalWrite (IN2, LOW); digitalWrite (IN3, LOW); digitalWrite (IN4, alto); delay(200); digitalWrite (1, elevado); digitalWrite (IN2, alto); digitalWrite (IN3, alta); digitalWrite (IN4, alta); delay(10);} void direita() {//Direita digitalWrite (IN1 ALTO); digitalWrite (IN2, LOW); digitalWrite (IN3, alto); digitalWrite (IN4, LOW); Delay(200); digitalWrite (1, elevado); digitalWrite (IN2, alto); digitalWrite (IN3, alto); digitalWrite (IN4, alto); Delay(10); } void esquerda() {//Esquerda digitalWrite (IN1, LOW); digitalWrite (IN2, alto); digitalWrite (IN3, LOW); digitalWrite (IN4, alto); delay(200); digitalWrite (1, elevado); digitalWrite (IN2, alto); digitalWrite (IN3, alta); digitalWrite (IN4, alta); 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("| (Robots de ALS) | "); 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 Robots)"); 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 Robots)"); 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 Robots)"); 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 Robots)"); 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 Robots"); 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 "(Robo de S del); 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 ("------");} cls() void {lcd.setCursor (0, 0); lcd.print(""); lcd.setCursor (0, 1); LCD.Print(""); lcd.setCursor (0, 2); LCD.Print(""); lcd.setCursor (0, 3); LCD.Print("");}