Paso 11: Programar el Arduino
Ahora que entiendes cómo estoy operando los servos, vamos a escribir código más útil para él.Vamos a empezar definiendo un montón de funciones utilizando los valores que se registraron en el último paso que animar el árbol y también capacidad de comunicación serial y programar algunas acciones para ir junto con los datos que se recibieron desde el puerto serie.
Abrir un dibujo nuevo en el entorno de Arduino y entrar la siguiente. (Recuerde que necesita usar sus propios valores para las posiciones del servo)
int ledPin = 13; asignar el pin 13 como el pin que las luces estén encendidasint mouthPin = 8; Este es el pin donde se conecta la boca
int eyesPin = 9; los ojos están en el pin 9
para la comunicación serial
mensaje de int = 0;
void setup() {}
Serial.Begin(9600); iniciar el puerto serie con una velocidad en baudios de 9600
definir las salidas
pinMode(ledPin,OUTPUT);
pinMode(mouthPin,OUTPUT);
pinMode(eyesPin,OUTPUT);
cerrar los ojos
closeEyes();
cerrar la boca
closeMouth();
Espere unos segundos por lo que podemos presenciar la apertura después de reset
Delay(3000);
}
void loop() {}
digitalWrite(ledPin,HIGH);
openEyes();
Talk(3);
if(serial.Available() > 0) {//if el puerto serie envía datos
leer el byte entrante
mensaje = Serial.read();
animar nuestro robot según los datos en serie que recibimos
Si (mensaje == '1') {}
Talk(1);
}
Si (mensaje == '2') {}
Talk(2);
}
Si (mensaje == '3') {}
openEyes();
}
Si (mensaje == '4') {}
closeEyes();
}
Si (mensaje == "5") {}
blinkEyes();
}
Si (mensaje == '6') {}
digitalWrite(ledPin,LOW);
}
Si (mensaje == '7') {}
digitalWrite(ledPin,HIGH);
}
}
}
{} void hablar (int veces)
para (int j = 0; j < veces; j ++) {}
Primero abrimos la boca
para (int i = 0; i < 10; i ++) {}
digitalWrite(mouthPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(1100); retraso en la longitud del pulso en las declaraciones
digitalWrite(mouthPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
Ciérrelo
para (int i = 0; i < 10; i ++) {}
digitalWrite(mouthPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(500); retraso en la longitud del pulso en las declaraciones
digitalWrite(mouthPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
}
}
void closeMouth() {}
para (int i = 0; i < 10; i ++) {}
digitalWrite(mouthPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(500); retraso en la longitud del pulso en las declaraciones
digitalWrite(mouthPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
}
void openEyes() {}
para (int i = 0; i < 30; i ++) {}
digitalWrite(eyesPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(800); retraso en la longitud del pulso en las declaraciones
digitalWrite(eyesPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
}
void closeEyes() {}
para (int i = 0; i < 30; i ++) {}
digitalWrite(eyesPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(2500); retraso en la longitud del pulso en las declaraciones
digitalWrite(eyesPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
}
void blinkEyes() {}
para (int i = 0; i < 10; i ++) {}
digitalWrite(eyesPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(2500); retraso en la longitud del pulso en las declaraciones
digitalWrite(eyesPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
para (int i = 0; i < 10; i ++) {}
digitalWrite(eyesPin,HIGH); girar sobre el eje del servo, es decir enviar 5V
delayMicroseconds(800); retraso en la longitud del pulso en las declaraciones
digitalWrite(eyesPin,LOW); Apagar pin servo para acabar con el pulso
Delay(20);
}
}
Aquí hay un video de lo que debe hacer en este momento.