Stap 5: codering
/* Code was implemented & Tested by Amol Shah For DNA Technology Online Electronic Component Store */ <liquidcrystal.h> LiquidCrystal lcd( 8, 9, 4, 5, 6, 7 ); char low_intensity = 30; char high_intensity = 255; char sw_press = 0; int adc_reading = 0; char mins,secs; char set_mins,set_secs; char in_loop; #define btnRIGHT 1 #define btnUP 2 #define btnDOWN 3 #define btnLEFT 4 #define btnSELECT 5 #define btnNONE 0 int LCD_BACKLIGHT_PIN = 10; int vibrating_motor = 13; void setup() { lcd.begin(16, 2); pinMode(LCD_BACKLIGHT_PIN, OUTPUT); pinMode(vibrating_motor, OUTPUT); lcd.setCursor(0,0); lcd.print(" Silent Alarm "); lcd.setCursor(0,1); lcd.print(" Plz Select Time "); analogWrite(LCD_BACKLIGHT_PIN, low_intensity); digitalWrite(vibrating_motor,LOW); delay(1000); mins=0; secs=0; set_mins=0; set_secs=0; } void loop() { while(read_LCD_buttons()==btnNONE); get_set_time(); secs=0; mins=0; in_loop=1; while(in_loop){ delay(1000); inc_time(); disp_curr_time(); compare_time(); } lcd.setCursor(0,0); lcd.print(" Silent Alarm "); lcd.setCursor(0,1); lcd.print(" Plz Select Time "); int read_LCD_buttons(){ // read the buttons adc_reading = analogRead(0); // read the value from the sensor if (adc_reading > 1000) return btnNONE; if (adc_reading < 50) return btnRIGHT; if (adc_reading < 250) return btnUP; if (adc_reading < 450) return btnDOWN; if (adc_reading < 650) return btnLEFT; if (adc_reading < 850) return btnSELECT; return btnNONE; // when all others fail, return this. } void compare_time(void){ if((mins==set_mins)&&(secs==set_secs)){ sw_press=0; digitalWrite(vibrating_motor,HIGH); analogWrite(LCD_BACKLIGHT_PIN, 255); while(sw_press==0){ sw_press = read_LCD_buttons(); // read the buttons analogWrite(LCD_BACKLIGHT_PIN, high_intensity); delay(500); analogWrite(LCD_BACKLIGHT_PIN, low_intensity); delay(500); } digitalWrite(vibrating_motor,LOW); in_loop=0; while(read_LCD_buttons()!=btnNONE); delay(500); } } </p><p>void disp_set_time(void){ lcd.setCursor(0,1); lcd.print("Set Time: "); lcd.write((set_mins/10)+48); lcd.write((set_mins%10)+48); lcd.write(':'); lcd.write((set_secs/10)+48); lcd.write((set_secs%10)+48); } void disp_curr_time(void){ lcd.setCursor(0,0); lcd.print("Cur Time: "); lcd.write((mins/10)+48); lcd.write((mins%10)+48); lcd.write(':'); lcd.write((secs/10)+48); lcd.write((secs%10)+48); }void inc_time(void){ secs=secs+1; if(secs==60){ secs=0; mins=mins+1; } }void get_set_time(void){ char loop1=1; set_mins=0; set_secs=20; disp_set_time(); while(loop1){ sw_press = read_LCD_buttons(); // read the buttons switch (sw_press){ // depending on which button was pushed, we perform an action case btnRIGHT:{ // push button "RIGHT" and show the word on the screen set_mins=10; set_secs=00; disp_set_time(); break; } case btnLEFT:{ set_mins=20; set_secs=00; disp_set_time(); break; } case btnUP:{ set_mins=30; set_secs=00; disp_set_time(); break; } case btnDOWN:{ set_mins=40; set_secs=00; disp_set_time(); break; } case btnSELECT:{ loop1=0; break; } case btnNONE:{ break; } } } }