#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define LED_RED 6
#define LED_GREEN 5
#define LED_BLUE 3
#define RED_BUTTON 2
#define GREEN_BUTTON 4
byte smile[8] = {
B10101,
B00000,
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
};
void initRGB()
{
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
pinMode(LED_RED, OUTPUT);
digitalWrite(LED_RED, LOW);
pinMode(LED_GREEN, OUTPUT);
digitalWrite(LED_GREEN, LOW);
pinMode(LED_BLUE, OUTPUT);
digitalWrite(LED_BLUE, LOW);
}
void initButtons()
{
pinMode(RED_BUTTON, INPUT_PULLUP);
pinMode(GREEN_BUTTON, INPUT_PULLUP);
}
void setup()
{
initRGB();
initButtons();
lcd.init();
lcd.backlight();
lcd.createChar(0, smile);
lcd.setCursor(0, 0);
lcd.print("Hello");
lcd.setCursor(3, 1);
lcd.print("World!");
lcd.setCursor(15, 0);
lcd.write(byte(0));
}
void blinkRedLed()
{
const unsigned long BlinkChangePeriod = 900UL;
static int ledState = LOW;
static unsigned long lastBlinkChange = 0UL;
if (millis() - lastBlinkChange >= BlinkChangePeriod)
{
if (ledState == HIGH)
{
ledState = LOW;
}
else
{
ledState = HIGH;
}
digitalWrite(LED_RED, ledState);
lastBlinkChange += BlinkChangePeriod;
}
}
void loop()
{
}