#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <Servo.h>
Servo servoMotor;
Servo servoMotor2;
LiquidCrystal_I2C lcd (0x27, 16, 2);
int delay1 = 400;
int delay2 = 2000;
int delay3 = 1000;
byte a_tilde[8] = {
0B00010,
0B00100,
0B01110,
0B00001,
0B01111,
0B10001,
0B01111,
0B00000,
};
byte e_tilde[8] = {
0B00010,
0B00100,
0B01110,
0B10001,
0B11111,
0B10000,
0B01110,
0B00000,
};
byte i_tilde[8] = {
0B00010,
0B00100,
0B01100,
0B00100,
0B00100,
0B00100,
0B01110,
0B00000,
};
byte o_tilde[8] = {
0B00010,
0B00100,
0B01110,
0B10001,
0B10001,
0B10001,
0B01110,
0B00000,
};
byte u_tilde[8] = {
0B00010,
0B00100,
0B10001,
0B10001,
0B10001,
0B10011,
0B01101,
0B00000,
};
byte ene[8] = {
0B01110,
0B00000,
0B10110,
0B11001,
0B10001,
0B10001,
0B10001,
0B00000,
};
void setup() {
Serial.begin(9600);
Serial.println("Ingrese 'a' para abrir la boca y levantar el brazo, ingrese 'c' para bajar el brazo y cerrar la boca, ingrese 'l' para encender los dos ojos, ingrese 'i' para encender el ojo izquierdo, ingrese 'd' para encender el ojo derecho, ingrese 'b' para abrir solo la boca, ingrese 'm' para levantar solo el brazo e ingrese 't' para accionar todo.");
Serial.println("");
servoMotor.attach(9);
servoMotor2.attach(10);
servoMotor.write(0);
servoMotor2.write(0);
pinMode(4, OUTPUT); //Izquierda
pinMode(2, OUTPUT); //Derecha
pinMode(11, INPUT);
lcd.init();
lcd.backlight();
lcd.createChar(0, a_tilde);
lcd.createChar(1, e_tilde);
lcd.createChar(2, i_tilde);
lcd.createChar(3, o_tilde);
lcd.createChar(4, u_tilde);
lcd.createChar(5, ene);
lcd.setCursor(5,0);
lcd.print("MATERIA");
lcd.setCursor(6,1);
lcd.print("Stem");
delay(delay2);
for (int a = 0; a <= 12; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
lcd.setCursor(5,0);
lcd.print("CURSO");
lcd.setCursor(7,1);
lcd.print("7A");
delay(delay2);
for (int a = 0; a <= 10; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
lcd.setCursor(3,0);
lcd.print("CREADO POR");
lcd.setCursor(0,1);
lcd.print("Andres Veloza y Jeronimo Diaz");
delay(delay2);
for (int a = 0; a <= 28; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
lcd.setCursor(2,0);
lcd.print("ENTREGADO A");
lcd.setCursor(0,1);
lcd.print("Miguel Angel D az Gonz lez");
lcd.setCursor(14, 1);
lcd.write(2);
lcd.setCursor(22, 1);
lcd.write(0);
delay(delay2);
for (int a = 0; a <= 20; a++ ){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
void loop() {
bool estado = digitalRead(11);
if (Serial.available()){
char valor_boca = Serial.read();
if (valor_boca == 'a'){
for (int a = 0; a <= 95; a++){
servoMotor.write(a);
servoMotor2.write(a);
delay(10);
}
lcd.setCursor(0,0);
lcd.print("Moviendo boca y mano...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 'c') {
for (int a = 95; a >= 0; a--){
servoMotor.write(a);
servoMotor2.write(a);
delay(10);
}
lcd.setCursor(0,0);
lcd.print("Cerrando boca y mano...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 'l') {
for (int b = 0; b < 5; b++){
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(4, LOW);
digitalWrite(2, LOW);
delay(1000);
}
lcd.setCursor(0,0);
lcd.print("Prendiendo leds...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 'i'){
for (int b = 0; b < 5; b++){
digitalWrite(2, HIGH);
delay(1000); digitalWrite(2, LOW);
delay(1000);
}
lcd.setCursor(0,0);
lcd.print("Prendiendo led izquierdo...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 'd'){
for (int b = 0; b < 5; b++){
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
delay(1000);
}
lcd.setCursor(0,0);
lcd.print("Prendiendo led derecho...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 'b'){
for (int b = 0; b < 95; b++){
servoMotor.write(b);
delay(100);
}
lcd.setCursor(0,0);
lcd.print("Abriendo boca...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 'm'){
for (int b = 0; b < 95; b++){
servoMotor2.write(b);
delay(100);
}
lcd.setCursor(0,0);
lcd.print("Moviendo mano...");
for (int b = 0; b <= 20; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
if (valor_boca == 't'){
for (int b = 0; b < 5; b++){
servoMotor.write(95);
delay(100);
servoMotor2.write(95);
delay(100);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(4, LOW);
digitalWrite(2, LOW);
delay(1000);
}
lcd.setCursor(0,0);
lcd.print("Ejecutando todas las acciones...");
for (int b = 0; b <= 30; b++){
lcd.scrollDisplayLeft();
delay(delay1);
}
lcd.clear();
delay(delay3);
}
}
if (estado == true){
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(4, LOW);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(4, HIGH);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(4, LOW);
digitalWrite(2, LOW);
}
}