Bloqueio de combinação incomum no Arduino

O Arduino é o melhor sistema para copiar qualquer equipamento. A maioria das idéias não teria sido possível sem ela. Por um longo tempo, houve uma idéia: criar um bloqueio de combinação especial para o arduino. Para abri-lo, você precisa pressionar uma certa tecla. Nesse caso, a trava não deve abrir, mesmo se você souber o botão certo. Para abri-lo, é necessário suportar determinados intervalos usando a memória muscular. Um criminoso assim não será capaz de cometer. Mas isso é apenas uma teoria.

Para montá-lo, você precisa usar um dispositivo especial de pulsos retangulares, além de vários contadores e um monte. Mas o dispositivo acabado teria grandes dimensões gerais e seria inconveniente de usar. Como regra, esses pensamentos assombram. O primeiro passo na realização de um sonho foi a criação de um programa para o Arduino. Servirá como uma fechadura de combinação. Para abri-lo, você precisará pressionar não uma tecla, mas várias, e fazê-lo simultaneamente. O esquema final é assim:

Fechadura de combinação

A qualidade da imagem não é a melhor, mas a conexão é feita no solo, D3, D5, D7, D9 e D11.

O código é apresentado abaixo:

const int ina = 3;

const int inb = 5;

const int inc = 9;

const int ledPin = 13;

int i = 1000;

byte a = 0;

byte b = 0;

byte c = 0;

byte d = 0;

muito tempo sem sinal = 0; // não esqueça tudo o que leva um valor millis ()

temperatura longa não assinada = 0; // armazenar por muito tempo não assinado

byte keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // códigos realmente

byte keyb [] = {1, 1, 1, 1, 0, 1, 0, 0};

byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0};

byte k = 0;

 

configuração nula () {

pinMode (ina, INPUT_PULLUP); // 3 entradas conectadas aos botões

pinMode (inb, INPUT_PULLUP);

pinMode (inc, INPUT_PULLUP);

pinMode (ledPin, OUTPUT); // LED embutido no 13º pino

pinMode (7, SAÍDA);

pinMode (11, SAÍDA);

digitalWrite (7, BAIXO); // substitua a terra

digitalWrite (11, BAIXO);

tempo = milis (); // necessário para contar o tempo

}

 

void blinktwice () {// LED piscando duas vezes

digitalWrite (ledPin, HIGH);

atraso (100);

digitalWrite (ledPin, LOW);

atraso (100);

digitalWrite (ledPin, HIGH);

atraso (100);

digitalWrite (ledPin, LOW);

atraso (200);

}

 

loop vazio () {

se (k == 0) {

blinktwice (); // solicitação de código

}

se (k == 8) {

digitalWrite (ledPin, HIGH);

atraso (3000);

k é 0;

}

a = leitura digital (ina); // lê os níveis de sinal dos botões - pressionado / não pressionado

b = leitura digital (inb);

c = leitura digital (inc);

atraso (100); // next if - proteção contra falsos positivos, você não pode usar

if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {

if (a == keya [k]) {

if (b == chaveb [k]) {

if (c == keyc [k]) {

 

k ++;

}

}

}

}

se (k == 1) {

if (d == 0) {

tempo = milis ();

d ++;

}

}

temp = milis ();

temp = temp - tempo;

if (temp> 10000) {

k é 0;

d é 0;

tempo = milis ();

}

}


Para evitar perguntas desnecessárias sobre o código, alguns pontos devem ser esclarecidos. A função de configuração é usada para atribuir portas. A próxima função é Input_Pullup, necessária para aumentar a tensão do pino em 5 V. Isso é feito usando um resistor. Devido a isso, vários curtos-circuitos não ocorrerão. Para maior comodidade, é recomendável usar a função blinktwice. Em geral, ao criar vários programas, você precisa tentar outras funções.

Depois que as funções são atribuídas, o sinal é lido pelas portas. Se o botão for pressionado, será indicado pelo número 1 e, se não for - 2. Em seguida, uma análise de todos os valores. Por exemplo, houve uma combinação de 0,1,1. Isso significa que a primeira tecla é pressionada e as outras duas não. Se todos os valores forem verdadeiros, a condição 8 também será verdadeira. Isso é evidenciado por um LED aceso no painel frontal. Em seguida, você precisa inserir um código específico que servirá para abrir a porta.

Os últimos elementos de código são usados ​​para redefinir os valores do contador. Essa função é executada se mais de 10 segundos se passaram desde o último pressionamento de tecla.Sem esse código, você poderia passar por todas as opções possíveis, embora existam muitas. Depois de criar este dispositivo, você precisa testá-lo.

 

(3 votos)
Carregando...

Adicione um comentário