// https://forum.arduino.cc/t/infinite-loop-until-a-condition-is-met/1188115/
#include <LiquidCrystal_I2C.h>
// Define the LCD screen
LiquidCrystal_I2C lcd(0x27, 16, 2); // ADDR, COLUMNS LINES);
// Define the piezo sensor on pin A3
const int piezoPin = A3;
// Define the threshold value
const int threshold = 30;
void setup() {
// Initialize LCD
// lcd.begin();
lcd.init();
}
void loop() {
int Count = 0;
int sensorValue = analogRead(piezoPin);
if (sensorValue > threshold) {
Count++;
}
for (Count; Count < 3; Count++) {
sleep1();
sleep2();
}
blink2();
blink1();
eyesOpen1();
eyesOpen2();
lookLeft1();
lookLeft2();
lookLeft1();
eyesOpen2();
lookRight1();
lookRight2();
lookRight1();
blink1();
blush();
smile();
hello();
smile();
blink1();
idle();
idleBlink();
idle();
idleBlink();
idle();
delay(2000);
}
void sleep1() {
lcd.setCursor(0, 0);
lcd.print(" - -");
lcd.setCursor(0, 1);
lcd.print(" . <Zzz)");
delay(2000);
lcd.clear();
}
void sleep2() {
lcd.setCursor(0, 0);
lcd.print(" - -");
lcd.setCursor(0, 1);
lcd.print(" C <ZzZzz)");
delay(2000);
lcd.clear();
}
void blink2() {
lcd.setCursor(0, 0);
lcd.print(" = =");
lcd.setCursor(0, 1);
lcd.print(" ---- ");
delay(1000);
lcd.clear();
}
void blink1() {
lcd.setCursor(0, 0);
lcd.print(" - -");
lcd.setCursor(0, 1);
lcd.print(" ----");
delay(200);
lcd.clear();
}
void eyesOpen1() {
lcd.setCursor(0, 0);
lcd.print(" o o");
lcd.setCursor(0, 1);
lcd.print(" ----");
delay(500);
lcd.clear();
}
void eyesOpen2() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" ----");
delay(500);
lcd.clear();
}
void lookLeft1() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" ---- ");
delay(300);
lcd.clear();
}
void lookLeft2() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" ----");
delay(2000);
lcd.clear();
}
void lookRight1() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" ----");
delay(300);
lcd.clear();
}
void lookRight2() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" ----");
delay(2000);
lcd.clear();
}
void blush() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" # ---- #");
delay(1000);
lcd.clear();
}
void smile() {
lcd.setCursor(0, 0);
lcd.print(" ^ ^");
lcd.setCursor(0, 1);
lcd.print(" # V #");
delay(2000);
lcd.clear();
}
void hello() {
lcd.setCursor(0, 0);
lcd.print(" ^ ^");
lcd.setCursor(0, 1);
lcd.print(" # c<HELLO!)");
delay (1000);
lcd.clear();
}
void idle() {
lcd.setCursor(0, 0);
lcd.print(" O O");
lcd.setCursor(0, 1);
lcd.print(" # ---- #");
delay(2000);
lcd.clear();
}
void idleBlink() {
lcd.setCursor(0, 0);
lcd.print(" - -");
lcd.setCursor(0, 1);
lcd.print(" # ---- #");
delay(300);
lcd.clear();
}