#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal.h>
#include <Servo.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int button = 6;
int buttonstate = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte up[8] = {
B01110,
B01110,
B01110,
B10101,
B01110,
B00100,
B01010,
B10001,
};
byte down[8] = {
B01110,
B01110,
B01110,
B00100,
B01110,
B10101,
B01010,
B10001,
};
byte smile[8] = {
B00000,
B00000,
B00000,
B01010,
B00000,
B10001,
B01110,
B00000,
};
byte frown[8] = {
B00000,
B00000,
B00000,
B01010,
B00000,
B01110,
B10001,
B00000,
};
Servo myservo;
const int buttonPin = 6;
void setup() {
pinMode(button, INPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.clearDisplay();
lcd.createChar(0, frown);
lcd.createChar(1, smile);
lcd.createChar(2, down);
lcd.createChar(3, up);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
myservo.attach(9);
lcd.print("w");
delay(200);
lcd.print("e");
delay(200);
lcd.print("l");
delay(200);
lcd.print("c");
delay(200);
lcd.print("o");
delay(200);
lcd.print("m");
delay(200);
lcd.print("e");
delay(200);
lcd.print(" ");
delay(200);
lcd.print("b");
delay(200);
lcd.print("a");
delay(200);
lcd.print("c");
delay(200);
lcd.print("k");
delay(200);
lcd.setCursor(0, 1);
lcd.print("E");
delay(200);
lcd.print("l");
delay(200);
lcd.print("A");
delay(200);
lcd.print("S");
delay(200);
delay(200);
lcd.print("T");
delay(200);
lcd.print("A");
delay(200);
lcd.print("G");
delay(200);
lcd.print("I");
delay(200);
lcd.print("R");
delay(200);
lcd.print("L");
delay(200);
lcd.print("");
delay(200);
lcd.print("");
delay(200);
lcd.print("");
delay(200);
lcd.print(" ");
delay(200);
man();
delay(1000);
lcd.clear();
lcd.setCursor(6, 1);
buttonCheck();
}
void loop() {
lcd.write(byte(0));
lcd.write(byte(2));
delay(15);
myservo.write(0);
delay(500);
lcd.clear();
lcd.setCursor(6, 1);
lcd.write(byte(1));
delay(15);
lcd.write(byte(3));
myservo.write(90);
delay(500);
lcd.clear();
lcd.setCursor(6, 1);
}
void man() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SCREENSLAVER");
}
void buttonCheck() {
buttonstate = digitalRead(buttonPin);
// Clear the buffer
display.clearDisplay();
// Set text size and color
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
// Set the cursor position
display.setCursor(30, 30);
if (buttonstate == HIGH) {
// Print "hello" if button is pressed
display.println("hello");
} else {
// Print "mode" if button is not pressed
display.println("");
}
// Display the text
display.display();
// Delay to debounce the button
delay(50);
}