#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
// These constants won't change. They're used to give names to the pins used:
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
int sensorValue = 0; // value read from the pot
int mapValue = 0; // delay value in ms
float delay_time = 0.0;
boolean ledState = false;
unsigned long startTime; // start time of the LED that turned ON
unsigned long delayTimeLED; // delay time of the LED that need to be ON/OFF based on the light
unsigned long endTime=0; // the time the LED turned OFF
void setup() {
lcd.begin(16, 2);
// initialize serial communications at 9600 bps:
Serial.begin(9600);
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
mapValue = map(sensorValue, 0, 1023, 4000, 250);
delay_time = float(mapValue) / 1000.0;
// print the results to the Serial Monitor:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t time lap [sec] = ");
Serial.println(delay_time);
// set the current time
unsigned long currentTime = millis();
// set the delay time of the LED based on the light
delayTimeLED = mapValue;
if(currentTime <= 4000){
// display my name on screen
lcd.setCursor(0,0);
lcd.println("Or Bacalu");
lcd.setCursor(0,1);
lcd.print("Represent");
}else{
// display light sensor value on screen:
lcd.setCursor(0,0);
lcd.println("Light Sensor");
lcd.setCursor(0,1);
lcd.print("Display: ");
lcd.setCursor(10,1);
lcd.print(sensorValue);
}
if(ledState == false && currentTime - endTime >= delayTimeLED){
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
ledState = true;
startTime = currentTime;
}
if(ledState && currentTime - startTime >= delayTimeLED){
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
ledState = false;
endTime = currentTime;
}
// wait 2 milliseconds before the next loop for the analog-to-digital
// converter to settle after the last reading:
delay(2);
}