I have a very simple circuit, but my program is some what complicated.
Here is the circuit diagram:
Here is the code:
/*
01 - GND -------- GND
02 - +5V -------- 5V
03 - V0 -------- Potentiometer Middle
04 - Reset ------ 9
05 - Read/Write - GND
06 - Enable ----- 8
07 - Data0 ------ NC
08 - Data1 ------ NC
09 - Data2 ------ NC
10 - Data3 ------ NC
11 - Data4 ------ 10
12 - Data5 ------ 11
13 - Data6 ------ 12
14 - Data7 ------ 13
15 - +LCD ------- 5V
16 - -LCD ------- GND
*/
//include LCD library
#include <LiquidCrystal.h>
//Initialize an LCD object
/*Pins should be mentioned in this order:
Reset
Enable
Data4
Data5
Data6
Data7
*/
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
int onTimePin = A0;
int onTime = 0;
int offTimePin = A1;
int offTime = 0;
int ledPin = 13;
void setup()
{
pinMode(onTimePin, INPUT);
pinMode(offTimePin, INPUT);
pinMode(ledPin, OUTPUT);
//Begin the LCD interface
lcd.begin(16, 2);
lcd.print("ON TIME : ");
lcd.setCursor(0, 2);
lcd.print("OFF TIME : ");
}
void loop()
{
onTime = map(analogRead(onTimePin), 0, 1023, 1, 3);
lcd.setCursor(11, 0);
lcd.print(onTime);
offTime = map(analogRead(offTimePin), 0, 1023, 1, 9);
lcd.setCursor(11, 1);
lcd.print(offTime);
digitalWrite(ledPin, HIGH);
delay(onTime * 1000);
digitalWrite(ledPin, LOW);
delay(offTime * 1000);
}
The above code works. But there is a small problem:
When I turn the potentiometer wiper, there is a delay.
It's obvious because when the loop completes, the changed value of potentiometer is displayed. So, I decided to do the same thing using interrupts. But only digital pins have interrupts.
I would like to know the solution for using interrupts on analog input.