Arduino'da olağandışı şifreli kilit

Arduino, herhangi bir ekipmanı kopyalamak için en iyi sistemdir. Çoğu fikir onsuz mümkün olmazdı. Uzun zamandır böyle bir fikir vardı: arduino için özel bir şifreli kilit oluşturmak. Açmak için belirli bir tuşu basılı tutmanız gerekir. Bu durumda, doğru düğmeyi bilseniz bile kilit açılmamalıdır. Açmak için kas hafızasını kullanarak belirli aralıklara dayanmak gerekir. Böyle bir suçlu işleyemez. Ama bu sadece bir teori.

Montajı yapmak için dikdörtgen darbelerin özel bir cihazının yanı sıra birkaç sayaç ve bir yığın kullanmanız gerekir. Ancak bitmiş cihazın genel boyutları büyük olacak ve kullanımı rahatsız edici olacaktır. Kural olarak, bu tür düşünceler akıldan çıkmaz. Bir rüyayı gerçekleştirmenin ilk adımı Arduino için bir program yaratmaktı. Şifreli kilit görevi görecektir. Açmak için bir tuşa değil, birkaç tuşa basmanız ve aynı anda yapmanız gerekir. Bitmiş şema şöyle görünür:

Şifreli kilit

Görüntü kalitesi en iyi değil, ancak bağlantı toprağa, D3, D5, D7, D9 ve D11'e yapılır.

Kod aşağıda sunulmuştur:

const int ina = 3;







const int inb = 5;







const int inc = 9;







const int ledPin = 13;







int i = 1000;







bayt a = 0;







bayt b = 0;







bayt c = 0;







bayt d = 0;







imzasız uzun süre = 0; // milis () değeri alan her şeyi unutma







işaretsiz uzun sıcaklık = 0; // imzasız olarak sakla







bayt keya [] = {0, 0, 0, 0, 0, 0, 0, 0}; // aslında kodlar







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







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







bayt k = 0;







 







void setup () {







pinMode (ina, INPUT_PULLUP); // düğmelere bağlı 3 giriş







pinMode (inb, INPUT_PULLUP);







pinMode (inc, INPUT_PULLUP);







pinMode (ledPin, OUTPUT); // 13. pimde dahili LED







pinMode (7, ÇIKIŞ);







pinMode (11, ÇIKIŞ);







digitalWrite (7, DÜŞÜK); // dünyayı değiştir







digitalWrite (11, DÜŞÜK);







zaman = milis (); // zamanı saymak için gerekli







}







 







void blinktwice () {// çift yanıp sönen LED







digitalWrite (ledPin, YÜKSEK);







gecikme (100);







digitalWrite (ledPin, DÜŞÜK);







gecikme (100);







digitalWrite (ledPin, YÜKSEK);







gecikme (100);







digitalWrite (ledPin, DÜŞÜK);







gecikme (200);







}







 







void loop () {







eğer (k == 0) {







blinktwice (); // kod istemi







}







eğer (k == 8) {







digitalWrite (ledPin, YÜKSEK);







gecikme (3000);







k, O'dır;







}







a = digitalRead (ina); // düğmelerden sinyal seviyelerini oku - basılı / basılı değil







b = digitalRead (inç);







c = digitalRead (inc);







gecikme (100); // sonraki if - yanlış pozitiflere karşı koruma, kullanamazsınız







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







if (a == keya [k]) {







if (b == keyb [k]) {







if (c == keyc [k]) {







 







k ++;







}







}







}







}







eğer (k == 1) {







eğer (d == 0) {







zaman = milis ();







d ++;







}







}







temp = milis ();







temp = sıcaklık - zaman;







eğer (sıcaklık> 10000) {







k, O'dır;







d, O'dır;







zaman = milis ();







}







}




Kodla ilgili gereksiz soruları önlemek için bazı hususlar açıklığa kavuşturulmalıdır. Kurulum işlevi bağlantı noktalarını atamak için kullanılır. Bir sonraki fonksiyon, pin voltajını 5 V arttırmak için gerekli olan Input_Pullup'dur. Bu bir direnç kullanılarak yapılır. Bu nedenle, çeşitli kısa devreler oluşmaz. Kolaylık sağlamak için yanıp sönme işlevini kullanmanızı öneririz. Genel olarak, çeşitli programlar oluştururken, diğer işlevleri denemeniz gerekir.

Fonksiyonlar atandıktan sonra, sinyal portlardan okunur. Düğmeye basılırsa, o zaman 1 numara ile gösterilir ve değilse - 2. Daha sonra, tüm değerlerin bir analizi. Örneğin, 0,1,1 gibi bir kombinasyon vardı. Bu, ilk tuşa basıldığı ve diğer ikisinin basılmadığı anlamına gelir. Tüm değerler doğruysa, koşul 8 de doğrudur. Bu, ön paneldeki yanan bir LED ile kanıtlanmıştır. Ardından, kapıyı açmaya yarayacak belirli bir kod girmeniz gerekir.

Son kod elemanları sayaç değerlerini sıfırlamak için kullanılır. Son tuş vuruşundan bu yana 10 saniyeden uzun bir süre geçtiyse böyle bir işlev gerçekleştirilir.Bu kod olmadan, birçoğu olmasına rağmen olası tüm seçenekleri inceleyebilirsiniz. Bu cihazı oluşturduktan sonra test etmeniz gerekiyor.

 

(3 oy)
Yükleniyor ...

Yorum ekle