Paso 5: Cargar el código
/ * Bomba de Airsoft
Versión 1.1Creators:
Perseguir a Cooley & & & & & & & & & & & &
Joey Meyer * /
#include < Keypad.h > #include < LiquidCrystal.h >
#include < Tone.h >
#define libra 14
Tono tone1; int Scount = 0; segundos de la cuenta
int Mcount = 0; minutesint Hcount la cuenta = 0; cuenta horas
int DCont (DCount) = 0; cuenta daysint val = 0;
secMillis largo = 0; almacenar la última vez para el segundo intervalo de addlong = 1000; intervalo de segundos
contraseña de Char [4]; int currentLength = 0;
int i = 0; char entrados [4];
int ledPin = 3; lightint rojo ledPin2 = 4; luz verde
LiquidCrystal lcd (7,8,10,11,12,13); const filas bytes = 4; cuatro filas
byte const COLS = 3; tres claves de columnschar [filas] [COLS] = {}
{'1', '2', '3'}, {'4', '5',' 6'},
{'7','8','9'},{'*','0','#'}
};
byte rowPins [filas] = {18, 2, 14, 16}; conectar a las conexiones de la fila de la keypadbyte colPins [COLS] = {17, 19, 15}; conectar a las conexiones de la columna del teclado
Teclado teclado = teclado (makeKeymap(keys), rowPins colPins, filas, COLS);
void setup() {}
pinMode (ledPin, salida); pone el pin digital como outputpinMode (ledPin2, salida); pone el pin digital como salida
tone1.Begin (9), lcd.begin (16, 2);
Serial.Begin(9600);LCD.Clear();
lcd.setCursor (0,0); lcd.print ("ingresar el código:");
mientras (currentLength < 4) {}
lcd.setCursor (currentLength + 6, 1);lcd.cursor();
clave char = keypad.getKey (); clave == NO_KEY;
Si (key! = NO_KEY) {}
LCD.Print (clave); contraseña [currentLength] = tecla;
currentLength++;delay(200);
}}
Si (currentLength == 4) {}
lcd.noCursor();lcd.clear();
LCD.Home (); lcd.print ("ha ingresado:");
lcd.setCursor(6,1);lcd.print(password[0]);
LCD.Print(password[1]);LCD.Print(password[2]);
LCD.Print(password[3]);DELAY(3000);
LCD.Clear (); currentLength = 0;
}}
void loop() {}
char la clave2 = keypad.getKey(); obtener la keylcd.setCursor(0,0);
(temporizador); si (clave2! = NO_KEY)
{mientras que (clave2 == NO_KEY)
{clave2 = keypad.getKey();
} Si (clave2! = NO_KEY)
{lcd.clear();
lcd.setCursor (0,0); lcd.print ("ingresar el código:");
mientras (currentLength < 4) {}
lcd.setCursor (currentLength + 6, 1);lcd.cursor();
char la clave2 = keypad.getKey (); if (clave2! = NO_KEY)
{lcd.print(key2);
entró [currentLength] = clave2; currentLength ++;
Delay(200);LCD.noCursor();
lcd.setCursor (currentLength + 5, 1);lcd.print("*");
lcd.setCursor (currentLength + 6, 1);lcd.cursor();
}}
Si (currentLength == 4) {}
Si (entró [0] == contraseña [0] & & entró [1] == contraseña [1] & & introducido [2] == contraseña [2] & & introducido [3] == {} password[3])
lcd.noCursor();lcd.clear();
LCD.Home (); lcd.print ("desactivado");
currentLength = 0;delay(2500);
lcd.setCursor (0,1); lcd.print ("Reset la bomba");
} else
{lcd.noCursor();
LCD.Clear();LCD.Home();
LCD.Print ("incorrecto"); lcd.setCursor(0,1);
LCD.Print ("Add - 1:30"); si (Mcount < 14)
{Mcount Mcount = 1;
} Si (Scount < 59)
{Scount Scount = 30;
} delay(1500);
currentLength = 0;}
}}
}}
timer() vacío {}
Si (Mcount > = 15) {}
mientras que (Mcount > = 15) {}
lcd.noCursor();lcd.clear();
LCD.Home (); lcd.print("! BoOm! ");
tone1.Play (NOTE_A2, 200); digitalWrite (ledPin, HIGH); el LED se pone en
tone1.Play (NOTE_A2, 200);delay(10); espera un segundo
digitalWrite (ledPin, LOW); establece el offtone1.play del LED (NOTE_A2, 200);
Delay(10); espera un seconddigitalWrite (ledPin2, HIGH); el LED se pone en
tone1.Play (NOTE_A2, 200);delay(10); espera un segundo
digitalWrite (ledPin2, LOW); establece el offtone1.play del LED (NOTE_A2, 200);
Delay(10); espera un secondchar llave4 = keypad.getKey();
Si (llave4! = NO_KEY) {}
mientras que (llave4 == NO_KEY) {}
llave4 = keypad.getKey();}
Si (llave4 = '#') {}
LCD.Clear (); lcd.print ("Reset la bomba");
}}
} Si (Mcount == 60) / / si es de 60 años Mcount hacer esta operación
{//delay (32); / / buen lugar para afinar el cronometraje
Mcount = 0; restablecer McountHcount ++;
} Si (Hcount > 23)
{DCont (DCount) ++;
Hcount = 0; tiene que reiniciar Hcount a "0" después de 24 horas}
lcd.setCursor (0,1); cursor se establece en 2 º linelcd.print ("contador:");
LCD.Print (Dcount);lcd.print (":");
LCD.Print (Hcount);lcd.print (":");
LCD.Print (Mcount);lcd.print (":");
LCD.Print (Scount);
Si (Scount > 59) / / si 60 hacen esta operación {
Mcount ++; Añadir 1 a McountScount = 0; restablecer Scount
retardo (58); ms de cambios por minuto}
Si (Scount < 60) / / hacer este oper. {59 veces
unsigned currentMillis largo = millis (); //delay (988); cambiar por uno = 60 ms a min
Si (currentMillis - secMillis > intervalo) {}
tone1.Play (NOTE_G5, 200); secMillis = currentMillis;
Scount ++; Añadir 1 a ScountdigitalWrite (ledPin2, HIGH); el LED se pone en
Delay(10); espera un seconddigitalWrite (ledPin2, LOW); fija el LED apagado
Delay(10); espera un segundo}
}}