I HAVE WRITTEN THIS PROGRAM FOR MY LAST PROJECT WHICH SIMPLY TAKE DELAY VALUE FROM USER USING 4X4 KEYPAD AND DISPLAY 16X2 LED . I HOPE YOU ALL LIKE THIS PROJECT..
BUT I NEED TO TAKE THAT BOTH DELAY FROM USER VIA BLUETOOTH :---??????
THANKS IN ADVANCE
//programmed by Sandeep Automation //
// Use Buzzer as indication for application startup //
#include <Wire.h>
#include <LiquidCrystal.h>
#include <Keypad.h>
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'#','0','*','D'}
};
byte rowPins[ROWS] = { A0, A1, A2, A3 };// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = { A4, A5, 9, 10 };//connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // KEYPAD CREATED
int relay = 7; //relay connected to pin 2
int buzzer = 8; // buzzer connected to pin 3
int onstat = 13;
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup() {
// initialize the lcd
lcd.begin(16 , 2);
lcd.setCursor(1,0);
lcd.print("SANDEEP");
lcd.setCursor(1,1);
lcd.print("AUTOMATION");
delay(300);
pinMode(buzzer, OUTPUT);
pinMode(relay, OUTPUT);
pinMode(onstat, OUTPUT);
for (int i = 150; i <= 153; i++){
digitalWrite(buzzer, 1);
delay(i);
digitalWrite(buzzer, 0);
delay(i);
}
digitalWrite(buzzer, 1);
delay(1000);
digitalWrite(buzzer, 0);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Wait");
delay(300);
for (int i = 1; i <= 4; i++){
lcd.clear();
lcd.setCursor(1,1);
lcd.print("SYSTEM INIT");
delay(300);
lcd.clear();
lcd.setCursor(1,1);
lcd.print("SYSTEM INIT.");
delay(300);
lcd.clear();
lcd.setCursor(1,1);
lcd.print("SYSTEM INIT..");
delay(300);
lcd.clear();
lcd.setCursor(1,1);
lcd.print("SYSTEM INIT....");
delay(300);
lcd.clear();
lcd.setCursor(1,1);
lcd.print("SYSTEM INIT.....");
delay(300);
}
lcd.clear();
lcd.setCursor(1,0);
lcd.print("DEVICE IS ON");
delay(600);
lcd.clear();
lcd.setCursor(1,0);
lcd.write(" WELCOME");
delay(1000);
lcd.setCursor(1,1);
lcd.write("SANDEEP AUTOMATION");
delay(1000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("ENTER OFF TIME");
lcd.setCursor(1,1);
lcd.print("THEN PRESS *");
delay(2000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("ENTER ON TIME");
lcd.setCursor(1,1);
lcd.print("THEN PRESS #");// take value from user ON time
delay(800);
}
void loop()
{
char buffer[4];
static int ontime = 0;
static int offtime = 0;
int i=0;
while (1)
{
char key = keypad.getKey();
// If it's a number AND we have space left, add to our string
if ('0' <= key && key <= '9' && i<3)
{
buffer[i] = key;
i++;
}
// If it's a * or #, end
else if ('#' == key || '*' == key)
{
// Null terminate
buffer[i] = 0;
// Convert to an integer
int value = atoi(buffer);
// Set the appropriate value
if ('*' == key) ontime = value;
if ('#' == key) offtime = value;
break;
}
}
lcd.clear();
lcd.setCursor(1,0);
lcd.print("OFF TIME IS=");
lcd.setCursor(1,1);
lcd.print(offtime);
lcd.print("-Minutes");
delay(600);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("ON TIME IS=");
lcd.setCursor(1,1);
lcd.print(ontime);
lcd.print("-Minutes");
digitalWrite(buzzer,1);
delay(500);
digitalWrite(buzzer, 0);
delay (100);
digitalWrite(buzzer,1);
delay(500);
digitalWrite(buzzer, 0);
delay (100);
if (ontime > 0 && offtime > 0)
{
turn:
lcd.clear();
lcd.setCursor(1,0);
lcd.print("ON TIME");
lcd.setCursor(1,1);
lcd.print(ontime);
lcd.print("-MINUTES");
digitalWrite(relay, HIGH);
digitalWrite(onstat, 0);
delay(offtime*600);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("OFF TIME");
lcd.setCursor(1,1);
lcd.print(offtime);
lcd.print("-MINUTES");
digitalWrite(relay, LOW);
digitalWrite(onstat, 1);
delay(ontime*600);
goto turn;
}
}