#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);


void writeLcdColor(int R, int G, int B) {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("displaying");
  lcd.setCursor(0, 1);
  String text = String(R) + String(";") + String(G) + String(";") + String(G);
  lcd.print(text.c_str());
}

const int led[3] = {12, 14, 27}; // R G B
void initLed() {
  pinMode(led[0], OUTPUT);
  pinMode(led[1], OUTPUT);
  pinMode(led[2], OUTPUT);

  digitalWrite(led[0], LOW);
  digitalWrite(led[1], LOW);
  digitalWrite(led[2], LOW);
}
void setLightRGBA(int R, int G, int B, float A) {
  // led light intensity will be based on alpha arg
  int R_alpha = R * A;
  int G_alpha = G * A;
  int B_alpha = B * A;

  Serial.print(R_alpha);
  Serial.print(";");
  Serial.print(G_alpha);
  Serial.print(";");
  Serial.print(B_alpha);
  Serial.println();
  
  analogWrite(led[0], R_alpha);
  analogWrite(led[1], G_alpha);
  analogWrite(led[2], B_alpha);
  
  // this is heavy to emulate
  // writeLcdColor(R_alpha, G_alpha, B_alpha);
}

void setup() {

  // Serial.begin(115200);
  // init led
  initLed();

  // init lcd
  lcd.init();
  lcd.clear();
  lcd.backlight();
  
  // test
  lcd.setCursor(0, 0);
  lcd.print("displaying");
  lcd.setCursor(0, 1);
  lcd.print("123");
}

void loop() {
  lcd.setCursor(1, 0);
  lcd.print(".");
  delay(250);
  lcd.setCursor(0, 0);
  lcd.print("o");
  delay(250);
  lcd.setCursor(0, 0);
  lcd.print("O");
  delay(250);
  lcd.setCursor(0, 0);
  lcd.print("o");
  delay(250);
}