Tyst larm (5 / 5 steg)
Steg 5: kodning
/*
Koden var genomfört & testade av Amol Shah
För DNA teknik elektronisk komponent webbutik
*/
< 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 minuter, sekunder;
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, produktionen);
lcd.setCursor(0,0);
LCD.Print ("Silent Alarm");
lcd.setCursor(0,1);
LCD.Print ("Vänligen välj tid");
analogWrite (LCD_BACKLIGHT_PIN, low_intensity);
digitalWrite(vibrating_motor,LOW);
Delay(1000);
minuter = 0;
SEK = 0;
set_mins = 0;
set_secs = 0;
}
void loop() {
While(read_LCD_buttons()==btnNONE);
get_set_time();
SEK = 0;
minuter = 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 ("Vänligen välj tid");
int read_LCD_buttons() {/ / Läs knapparna
adc_reading = analogRead(0); läsa värdet från sensorn
om (adc_reading > 1000) return btnNONE;
om (adc_reading < 50) återvänder btnRIGHT;
om (adc_reading < 250) återvänder btnUP;
om (adc_reading < 450) återvänder btnDOWN;
om (adc_reading < 650) återvänder btnLEFT;
om (adc_reading < 850) återvänder btnSELECT;
återvända btnNONE; När alla andra misslyckas, tillbaka detta.
}
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(); Läs knapparna
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 ("Ställ in tid:");
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 tid:");
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) {
SEK = SEK + 1.
IF(secs==60) {
SEK = 0;
minuter = minuter + 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(); Läs knapparna
växel (sw_press) {/ / beroende på vilken knapp var sköt, vi utför en åtgärd
fall btnRIGHT: {/ / tryck knappen "Rätt" och Visa ord på skärmen
set_mins = 10;
set_secs = 00.
disp_set_time();
bryta;
}
fall btnLEFT: {
set_mins = 20;
set_secs = 00.
disp_set_time();
bryta;
}
fall btnUP: {
set_mins = 30.
set_secs = 00.
disp_set_time();
bryta;
}
fall btnDOWN: {
set_mins = 40;
set_secs = 00.
disp_set_time();
bryta;
}
fall btnSELECT: {
loop1 = 0;
bryta;
}
fall btnNONE: {
bryta;
}
}
}
}