NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: kódový zámek

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Tomáš Kupka:23.10.2017 15:37

Snažím se naprogramovat arduino nano, aby mi ovládalo kódový zámek, ale nedaří se mi najít chybu v programu a to tam ještě něco chybí, ale vždy vycházím z naprogramování klávesnice a dodávám příkazy, jenže s každým dalším příkazem mi selže klávesnice. Máte někdo nápad jak to vyřešit? hardware: arduino nano v3, 4x4 klávesnice, zdroj napájení 12v, spínací relé, elektrický zámek na 5-12V

zde je program co jsem napsal, nevyznám se v tom úplně, protože nejsem z oboru, ale zajímá mě to.

#include <Keypad.h>
int LED_CLOSE = 11; // červená LED
int LED_OPEN = 12; // zelená LED
int rele = 10; //spínací relé
const byte ROWS = 4; //four rows
const byte COLS = 4; //three columns

char pressedKey[5] = {'0', '0', '0', '0'}; // náš kód pro otevření dveří
char code[5] = {'1', '9', '4', '7'};

char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'},
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};

Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup() {
Serial.begin(9600);
pinMode(rele, OUTPUT); // Sets the digital pin as output.
digitalWrite(rele, HIGH); // pin rele
pinMode(rele, OUTPUT); //výstupní pin pro relé...
}

void loop()
{
char customKey = customKeypad.get­Key();

if (customKey) {
if (customKey == '#') // když je stisknuto potvrzovací tlačítko #
{
// když se pole kódu rovná poli stiskutých talčítek
if ((pressedKey[0] == code[0]) && (pressedKey[1] == code[1]) && (pressedKey[2] == code[2]) && (pressedKey[3] == code[3]))
{
digitalWrite(LED_CLO­SE, LOW); // zhasni červenou
digitalWrite(LED_O­PEN, HIGH); // rozsvit zelenou
tone(10, 2400, 4000); // zahraj tón na pinu 10 (2400Hz, 4sec)
delay(4000); // čekej 4 sekundy
digitalWrite(LED_O­PEN, LOW); // zhasni zelenou
digitalWrite(LED_CLO­SE, HIGH); // zhasni červenou
digitalWrite(rele, HIGH); //pusť proud do relé
delay(4000);
digitalWrite(rele, LOW); //vzpni rele

// vynuluj stiskuté tlačítka
pressedKey[0] = '0';
pressedKey[1] = '0';
pressedKey[2] = '0';
pressedKey[3] = '0';
}

// jinak přo špatném kódu zahraj jiný tón a nic nedělej
else tone(10, 500, 1000); //tón na pinu 10 (500Hz, 1 vteřina)
}
else
{

//přidej znak do pole a znaky posuň
pressedKey[0] = pressedKey[1];
pressedKey[1] = pressedKey[2];
pressedKey[2] = pressedKey[3];
pressedKey[3] = customKey;

// zahraje tón při stisku tlačítka
tone(10, 1200, 80);
}
}
}

 
Odpovědět
23.10.2017 15:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.