Olá, estou começando agora a mexer com arduino, e estou fazendo uma bomba para usar em jogos de airsoft no meu time, terá 3 modos, e estou escrevendo o primeiro modo ainda onde você entra com uma senha e o tempo de jogo, o tempo começa a decrescer e quando uma pessoa for desarmar ela aperta um botão específico e entra com a senha, que se for a correta desarma e se for errado continua contando o tempo.
Agora vamos ao problema, nao estou conseguindo fazer a comparação da senha inserida após o inicio da contagem do tempo, o tempo para quando a pessoa entra no modo de desarme da bomba.
Aqui vai o código meu escrito até agora:
#include <Keypad.h>
#include <LiquidCrystal.h>
unsigned long controlMillis=0;
int t=0,c=0,reset=0,pot=2,tempo=1,segundos=0,detona=3,confirma=3;
char senha[4];
char confirmaSenha[4];
char cod1;
char cod2;
char cod3;
char cod4;
char cod5;
char vcod1;
char vcod2;
char vcod3;
char vcod4;
char vcod5;
char bt_confirma = '*';
byte pinosLinha[] = {A4,A5,8,9};
byte pinosColuna[] = {A0,A1,A2,A3};
char teclas[4][4] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
Keypad teclado = Keypad(makeKeymap(teclas),pinosLinha,pinosColuna,4,4);
LiquidCrystal lcd(2,3,4,5,6,7);
void setup() {
lcd.cursor();
lcd.begin (16,2);
lcd.setCursor(1,0);
lcd.print("GOES - Time PB");
lcd.setCursor(0,1);
lcd.print("Bomba de Airsoft");
// delay (3000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print ("Escolha o modo");
lcd.setCursor (4,1);
lcd.print ("de jogo");
// delay (3000);
lcd.clear();
lcd.print ("A-Bomba C-Down.");
lcd.setCursor (2,1);
lcd.print ("B-Dominacao");
}
void loop() {
menu();
}
void menu() {
char tecla_pressionada = teclado.waitForKey();
if (tecla_pressionada == 'A')
{
bomba();
}
if (tecla_pressionada == 'B')
{
dominacao();
}
if (tecla_pressionada == 'C')
{
download();
}
if (tecla_pressionada == 'D')
{
configuracao();
}
}
void bomba(){
char var1;
char var2;
int segundo;
char estado;
char m0;
char m1;
char s0;
char s1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("---MODO BOMBA---");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Senha: ");
lcd.setCursor(6,1);
lcd.print("----");
cod1 = teclado.waitForKey();
if (cod1 != NO_KEY) {
lcd.setCursor(6,1);
lcd.print("");
cod2 = teclado.waitForKey();
lcd.setCursor(7,1);
lcd.print("");
cod3 = teclado.waitForKey();
lcd.setCursor(8,1);
lcd.print("");
cod4 = teclado.waitForKey();
lcd.setCursor(9,1);
lcd.print("");
var1 = teclado.waitForKey();
if (var1 == bt_confirma){
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Insira o tempo");
lcd.setCursor(5,1);
lcd.print("--:--");
m0 = teclado.waitForKey();
if (m0 != NO_KEY){
lcd.setCursor(5,1);
lcd.print(m0);
m1 = teclado.waitForKey();
lcd.setCursor(6,1);
lcd.print(m1);
lcd.setCursor(7,1);
lcd.print(":");
s0 = teclado.waitForKey();
lcd.setCursor(8,1);
lcd.print(s0);
s1 = teclado.waitForKey();
lcd.setCursor(9,1);
lcd.print(s1);
var2 = teclado.waitForKey();
if (var2 == bt_confirma){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("--BOMBA ARMADA--");
lcd.setCursor(5,1);
lcd.print(m0);
lcd.setCursor(6,1);
lcd.print(m1);
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(8,1);
lcd.print(s0);
lcd.setCursor(9,1);
lcd.print(s1);
estado = 1;
segundo = 1000;
while (estado == 1)
{
int i = -1;
char tecla_pressionada = teclado.getKey();
while (tecla_pressionada == '#'){
lcd.setCursor(0,0);
lcd.print("DESARMANDO ----");
if (vcod1 != NO_KEY){
vcod1 = teclado.getKey();
}
lcd.setCursor(12,0);
lcd.print("*");
if (vcod2 != NO_KEY){
vcod2 = teclado.getKey();
}
lcd.setCursor(13,0);
lcd.print("*");
if (vcod3 != NO_KEY){
vcod3 = teclado.getKey();
}
lcd.setCursor(14,0);
lcd.print("*");
if (vcod4 != NO_KEY){
vcod4 = teclado.getKey();
}
lcd.setCursor(15,0);
lcd.print("*");
if (cod1 != vcod1 || cod2 != vcod2 || cod3 != vcod3 || cod4 != vcod4){
lcd.setCursor(0,0);
lcd.print("-CODIGO ERRADO--");
delay(3000);
lcd.print("-----ARMADA-----");
}
if (cod1 == vcod1 && cod2 == vcod2 && cod3 == vcod3 && cod4 == vcod4){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("---DESARMADA----");
lcd.setCursor(0,1);
lcd.print("--------");
}
}
if (s1 > 47)
{
lcd.setCursor(5,1);
lcd.print(m0);
lcd.setCursor(6,1);
lcd.print(m1);
lcd.setCursor(7,1);
lcd.print(":");
lcd.setCursor(8,1);
lcd.print(s0);
lcd.setCursor(9,1);
lcd.print(s1);
delay(segundo);
s1--;
if (s1 == 47 && s0 > 48)
{
lcd.setCursor(8, 1);
s0--;
lcd.print(s0);
s1 = 57;
lcd.setCursor(9, 1);
lcd.print(s1);
}
if (s1 == 47 && s0 == 48 && m1 > 48)
{
lcd.setCursor(5, 1);
m1--;
lcd.print(m1);
s0 = 53;
lcd.setCursor(8, 1);
lcd.print(s0);
s1 = 57;
lcd.setCursor(9, 1);
lcd.print(s0);
}
if (s1 == 47 && s0 == 48 && m1 == 48 && m0 > 48)
{
lcd.setCursor(7, 1);
m0--;
lcd.print(m0);
m1 = 57;
lcd.setCursor(8, 1);
lcd.print(m1);
s0 = 53;
lcd.setCursor(10, 1);
lcd.print(s0);
s1 = 57;
lcd.setCursor(11, 1);
lcd.print(s1);
}
if (s1 == 47 && s0 == 48 && m1 == 48 && m0 == 48 && segundo == 0)
{
lcd.clear();
lcd.setCursor(4,0);
lcd.print("BOOM!!!!");
}
if (s1 == 47 && s0 == 48 && m1 == 48 && m0 == 48)
{
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("BOOM!!!!");
delay(1000);
}
}
}
}
}
}
}
}
void dominacao() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("-MODO DOMINACAO-");
delay(3000);
}
void download() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("-MODO DOWNLOAD-");
delay(3000);
}
void configuracao() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CONFIGURAR BOMBA");
delay(3000);
}
Quem poder me ajudar, vou ficar agradecido.