Arduino combinação de fechadura - esquema

click fraud protection

Arduino é o melhor sistema para copiar qualquer hardware. A maioria das ideias não teria sido possível sem ela. Esse pensamento existe há muito tempo: criar uma fechadura de combinação especial no arduino. Para abri-lo, você precisa manter pressionada uma determinada tecla. Nesse caso, a fechadura não deve abrir, mesmo que você conheça o botão desejado. Para abri-lo, é necessário manter certos intervalos usando a memória muscular. Um criminoso assim não pode fazer. Mas tudo isso é apenas teoria.

Para coletá-lo, você precisa usar um dispositivo especial para pulsos retangulares, bem como vários contadores e um heap. Mas o dispositivo acabado teria grandes dimensões e seria inconveniente de usar. Via de regra, esses pensamentos não dão descanso. O primeiro passo para tornar esse sonho realidade foi a criação de um programa para o Arduino. É ela quem servirá de fechadura de combinação. Para abri-lo, você precisa pressionar não uma tecla, mas várias, e fazer isso simultaneamente. O circuito concluído é assim:

A qualidade da imagem não é das melhores, mas as conexões são feitas ao terra, D3, D5, D7, D9 e D11.

O código é mostrado 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 se esqueça de tudo que millis () assume em unsigned long temp = 0; // armazena em keya de byte longo sem sinal [] = {0, 0, 0, 0, 0, 0, 0, 0}; // codifica a tecla de byte apropriadab [] = {1, 1, 1, 1, 0, 1, 0, 0}; byte keyc [] = {1, 0, 1, 0, 1, 1, 1, 0}; byte k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 entradas conectadas aos botões pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // LED embutido no pino 13 pinMode (7, OUTPUT); pinMode (11, SAÍDA); digitalWrite (7, BAIXO); // substitui o solo digitalWrite (11, LOW); tempo = milis (); // necessário contar o tempo} void blinktwice () {// piscar duas vezes do LED digitalWrite (ledPin, HIGH); atraso (100); digitalWrite (ledPin, LOW); atraso (100); digitalWrite (ledPin, HIGH); atraso (100); digitalWrite (ledPin, LOW); atraso (200); } void loop () {if (k == 0) {blinktwice (); // solicita a inserção do código} if (k == 8) {digitalWrite (ledPin, HIGH); atraso (3000); k = 0; } a = digitalRead (ina); // níveis de sinal são lidos dos botões - pressionado / não pressionado b = digitalRead (inb); c = digitalRead (inc); atraso (100); // o próximo if - proteção contra falsos positivos, você não precisa usar if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = tecla c [k]) {k ++; }}}} if (k == 1) {if (d == 0) {tempo = milis (); d ++; }} temp = milis (); temp = temp - tempo; se (temp> 10.000) {k = 0; d = 0; tempo = milis (); } } 


Para não levantar dúvidas 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, que é 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 piscar duas vezes. Em geral, ao criar vários programas, você precisa experimentar outras funções.

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

Os últimos elementos do código são usados ​​para redefinir os valores do contador. Esta função é executada se mais de 10 segundos se passaram desde o último pressionamento de tecla. Sem este código, era possível enumerar todas as opções possíveis, embora existam algumas delas. Depois de criar este dispositivo, você precisa testá-lo. Ainda Projetos Arduino.

Gostar(0)eu não gosto(0)

instagram viewer