Índice:

Cofre: 3 etapas
Cofre: 3 etapas

Vídeo: Cofre: 3 etapas

Vídeo: Cofre: 3 etapas
Vídeo: GENSHIN IMPACT 2.1 - Ubicación de los 30 cofres | Etapa 3 Final | Evento Festival de la Luna 2024, Julho
Anonim
Cofre
Cofre
Cofre
Cofre
Cofre
Cofre

Este é o seu resultado final após colocá-lo junto e fazer o upload do código.

Etapa 1: Coisas de que você precisa

Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa

Jumper Wires, resistor 220 OHM, tela LCD 16x2, botões, servo motor, placa de ensaio, Arduino Uno.

Etapa 2: Código

James Chinchay

#incluir

#include #include

endereço interno = 0; SaveTimer longo sem sinal estático; SaveDelay longo sem sinal estático = (30 * 1000);

char CODE [10] = "1234E"; char Str [10]; Char CodeLength = 4; Pos int = 0; bool desbloqueado; DisplayTimer longo não assinado estático; DisplayDelay longo sem sinal estático = 200;

LiquidCrystal lcd (12, 11, 9, 8, 7, 6);

botãoPin1 = 2; botãoPin2 int2 = 3; botãoPin3 = 4; botãoPin4 = 5;

botão de entrada int = 10; botão de bloqueio interno = 13;

Servo myServo; // configurando o programa de construção void setup () {

meuServo.attach (A1);

int EEPROMCodeOK = true; para (Pos = 0; Pos <= (Comprimento do código); Pos ++) {Str [Pos] = EEPROM.read (Pos); if (! (strrchr ("1123456789", Str [Pos]))) {// não é um código válido EEPROMCodeOK = false; }} Pos ++; Str [Pos] = EEPROM.read (Pos); if (Str [CodeLength + 1]! = 'E') EEPROMCodeOK = falso; if (EEPROMCodeOK) {Str [CodeLength + 2] = '\ 0'; strncpy (CODE, Str, CodeLength + 1); } ClearCode (); // configurando entradas pinMode (buttonPin1, INPUT_PULLUP); pinMode (buttonPin2, INPUT_PULLUP); pinMode (buttonPin3, INPUT_PULLUP); pinMode (buttonPin4, INPUT_PULLUP);

pinMode (enterbutton, INPUT_PULLUP); pinMode (clearlockbutton, INPUT_PULLUP);

lcd.begin (16, 2); lcd.setCursor (0, 0); // configurando lcd.print com mensagem ("Hello Mr Birch"); atraso (2000); lcd.clear (); lcd.setCursor (0, 0); // configurando o prompt para a senha lcd.print ("Senha:");

DisplayTimer = millis () + 200; }

void loop () {

Trancar();

Pos = restrição (Pos, 0, CodeLength); // lê os botões int buttonState1 = digitalRead (buttonPin1); int buttonState2 = digitalRead (buttonPin2); int buttonState3 = digitalRead (buttonPin3); int buttonState4 = digitalRead (buttonPin4);

int clButtonState = digitalRead (clearlockbutton); int enterButtonState = digitalRead (enterbutton);

lcd.setCursor (9, 0); // requisitos para ativar if (buttonState1 == LOW) {Str [Pos] = '1'; Pos ++; Str [Pos] = '\ 0'; atraso (250); while (digitalRead (buttonPin1) == LOW);

}

else if (buttonState2 == LOW) {Str [Pos] = '2'; Pos ++; Str [Pos] = '\ 0'; atraso (250); enquanto (digitalRead (buttonPin2) == LOW);

}

else if (buttonState3 == LOW) {Str [Pos] = '3'; Pos ++; Str [Pos] = '\ 0'; atraso (250); enquanto (digitalRead (buttonPin3) == LOW); }

else if (buttonState4 == LOW) {Str [Pos] = '4'; Pos ++; Str [Pos] = '\ 0'; atraso (250); enquanto (digitalRead (buttonPin4) == LOW);

} else if (enterButtonState == LOW) {Str [Pos] = 'E'; Pos ++; Str [Pos] = '\ 0'; atraso (250); while (digitalRead (buttonPin1) == LOW); if (strcmp (Str, CODE) == 0) {Unlocked = true; lcd.setCursor (0, 0); lcd.print ("Acesso concedido"); atraso (2000); lcd.clear (); lcd.print ("Desbloqueado"); } else if (SaveTimer> millis () && (Pos + 1) == CodeLength) {

strcpy (CÓDIGO, Str); para (Pos = 0; Pos <= (CodeLength + 1); Pos ++) {EEPROM.write (Pos, Str [Pos]); } lcd.setCursor (0, 0); lcd.print ("Código de salvamento:"); lcd.setCursor (0, 1); lcd.print (Str);

Desbloqueado = verdadeiro; }

outro {

lcd.clear (); lcd.print ("Acesso negado."); atraso (2000); lcd.clear (); lcd.print ("Senha:");

} // código de desbloqueio while (Unlocked) {Unlock (); if (digitalRead (clearlockbutton) == LOW) {delay (200); lcd.clear (); lcd.print ("Bloqueado"); atraso (2000); lcd.clear (); Desbloqueado = falso; SaveTimer = millis () + 30000; }}

ClearCode ();

}

else if (clButtonState == LOW) {delay (500);

while (clearlockbutton == LOW); if ((millis () - SaveTimer)> 4500) {

}

ClearCode ();

}

if ((long) (millis () - DisplayTimer)> = 0) {DisplayTimer + = DisplayDelay; lcd.setCursor (9, 0); lcd.print (Str); lcd.print ("");

} }

void ClearCode () {

Pos = 0; Str [Pos] = '\ 0'; lcd.setCursor (0, 0); lcd.print ("Senha:"); lcd.setCursor (0, 1); lcd.print ("");

}

void Unlock () {

myServo.write (150);

} // botão de bloqueio do programa void Lock () {

myServo.write (50);

}

Etapa 3:

quando feito tudo, deve ficar assim.

Recomendado: