Kunci kombinasi Arduino - skema

click fraud protection

Arduino adalah sistem terbaik untuk menyalin perangkat keras apa pun. Kebanyakan ide tidak akan mungkin terjadi tanpa dia. Sudah lama ada pemikiran seperti itu: untuk membuat kunci kombinasi khusus pada arduino. Untuk membukanya, Anda perlu menahan tombol tertentu. Dalam hal ini, kunci tidak boleh terbuka, bahkan jika Anda mengetahui tombol yang diinginkan. Untuk membukanya, perlu untuk mempertahankan interval tertentu menggunakan memori otot. Penjahat seperti itu tidak bisa melakukannya. Tapi ini semua hanya teori.

Untuk mengumpulkannya, Anda perlu menggunakan perangkat pulsa persegi panjang khusus, serta beberapa penghitung dan tumpukan. Tetapi perangkat yang sudah jadi akan memiliki dimensi besar dan tidak nyaman untuk digunakan. Sebagai aturan, pikiran seperti itu tidak memberikan istirahat. Langkah pertama untuk mewujudkan mimpi ini adalah pembuatan program untuk Arduino. Dialah yang akan berfungsi sebagai kunci kombinasi. Untuk membukanya, Anda tidak perlu menekan satu tombol, tetapi beberapa, dan melakukannya secara bersamaan. Sirkuit yang sudah jadi terlihat seperti ini:

Kualitas gambar bukan yang terbaik, tetapi koneksi dibuat ke ground, D3, D5, D7, D9 dan D11.

Kode ditunjukkan di bawah ini:

const int ina = 3; const int inb = 5; const inc = 9; const int ledPin = 13; int saya = 1000; byte a = 0; byte b = 0; byte c = 0; byte d = 0; waktu lama yang tidak ditandatangani = 0; // jangan lupa semua yang milis () lakukan pada unsigned long temp = 0; // simpan di unsigned long byte keyya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // mengkode byte yang tepat keyb [] = {1, 1, 1, 1, 0, 1, 0, 0}; byte kuncic [] = {1, 0, 1, 0, 1, 1, 1, 0}; byte k = 0; void setup () {pinMode (ina, INPUT_PULLUP); // 3 input terhubung ke tombol pinMode (inb, INPUT_PULLUP); pinMode (termasuk, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // built-in LED pada pin 13 pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, RENDAH); // ganti ground digitalWrite (11, LOW); waktu = mili (); // diperlukan untuk menghitung waktu} void blinktwice() {// kedipan ganda pada LED digitalWrite (ledPin, HIGH); penundaan (100); digitalWrite (ledPin, RENDAH); penundaan (100); digitalWrite (ledPin, TINGGI); penundaan (100); digitalWrite (ledPin, RENDAH); penundaan (200); } void loop () {jika (k == 0) {berkedip dua kali (); // prompt untuk memasukkan kode} if (k == 8) {digitalWrite (ledPin, HIGH); penundaan (3000); k = 0; } a = digitalRead (ina); // level sinyal dibaca dari tombol - ditekan / tidak ditekan b = digitalRead (inb); c = digitalRead (inc); penundaan (100); // if berikutnya - perlindungan terhadap positif palsu, Anda tidak perlu menggunakan if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) {if (a == keya [k]) {if (b == keyb [k]) {if (c = = kuncic [k]) {k ++; }}}} if (k == 1) {if (d == 0) {waktu = milis (); d++; }} suhu = mili (); suhu = suhu - waktu; if (suhu> 10000) {k = 0; d = 0; waktu = mili (); } } 


Untuk menghindari pertanyaan yang tidak perlu tentang kode, beberapa poin harus diklarifikasi. Fungsi setup digunakan untuk menetapkan port. Fungsi selanjutnya adalah Input_Pullup, yang diperlukan untuk menaikkan tegangan pin sebesar 5 V. Ini dilakukan dengan menggunakan resistor. Karena ini, berbagai korsleting tidak akan terjadi. Untuk kenyamanan lebih, disarankan untuk menggunakan fungsi blinktwice. Secara umum, saat membuat berbagai program, Anda perlu mencoba fungsi lain.

Setelah menetapkan fungsi, sinyal dibaca dari port. Jika tombol ditekan, maka akan ditunjukkan dengan angka 1, dan jika tidak - 2. Selanjutnya, semua nilai dianalisis. Misalnya, kombinasi seperti 0,1,1 muncul. Ini berarti bahwa tombol pertama ditekan dan dua lainnya tidak. Jika semua nilai benar, maka kondisi 8 juga benar. Ini dibuktikan dengan lampu LED di panel depan. Selanjutnya, Anda perlu memasukkan kode tertentu yang akan berfungsi untuk membuka pintu.

Elemen terakhir dari kode digunakan untuk mengatur ulang nilai penghitung. Fungsi ini dilakukan jika lebih dari 10 detik telah berlalu sejak penekanan tombol terakhir. Tanpa kode ini, dimungkinkan untuk menghitung semua opsi yang mungkin, meskipun ada beberapa di antaranya. Setelah membuat perangkat ini, Anda perlu mengujinya. Belum Proyek Arduino.

Suka(0)saya tidak suka(0)

instagram viewer