قفل تركيبة غير عادي على Arduino

Arduino هو أفضل نظام لنسخ أي معدات. معظم الأفكار لم تكن لتتحقق لولاها. لفترة طويلة كانت هناك مثل هذه الفكرة: لإنشاء قفل تركيبة خاصة لاردوينو. لفتحه ، تحتاج إلى الضغط على مفتاح معين. في هذه الحالة ، لا يجب فتح القفل ، حتى إذا كنت تعرف الزر الأيمن. لفتحه ، من الضروري تحمل فترات معينة باستخدام ذاكرة العضلات. لن يتمكن مثل هذا المجرم من ارتكابها. لكن هذه مجرد نظرية.

لتجميعها ، تحتاج إلى استخدام جهاز خاص من البقول المستطيلة ، بالإضافة إلى عدة عدادات وكومة. لكن الجهاز النهائي سيكون له أبعاد إجمالية كبيرة وسيكون من غير المناسب استخدامه. كقاعدة ، تطارد مثل هذه الأفكار. كانت الخطوة الأولى في تحقيق الحلم هي إنشاء برنامج لأردوينو. سيكون بمثابة قفل تركيبة. لفتحه ، ستحتاج إلى الضغط على ليس مفتاح واحد ، ولكن عدة مفاتيح ، والقيام بذلك في وقت واحد. يبدو المخطط النهائي كما يلي:

قفل بالرمز

جودة الصورة ليست الأفضل ، ولكن يتم الاتصال بالأرض D3 و D5 و D7 و D9 و D11.

الكود معروض أدناه:

const int ina = 3 ؛

const int inb = 5 ؛

const int inc = 9 ؛

const int ledPin = 13 ؛

int i = 1000 ؛

البايت أ = 0 ؛

بايت ب = 0 ؛

البايت ج = 0 ؛

بايت د = 0 ؛

وقت طويل غير موقّع = 0 ؛ // لا تنسى كل شيء يأخذ قيمة مليس ()

درجة الحرارة الطويلة غير الموقعة = 0 ؛ // متجر في غير موقع طويل

byte keya [] = {0، 0، 0، 0، 0، 0، 0، 0}؛ // أكواد فعلا

byte keyb [] = {1، 1، 1، 1، 0، 1، 0، 0} ؛

byte keyc [] = {1، 0، 1، 0، 1، 1، 1، 0} ؛

بايت ك = 0 ؛

 

الإعداد باطل () {

pinMode (ina، INPUT_PULLUP) ؛ // 3 مداخل متصلة بالأزرار

pinMode (inb، INPUT_PULLUP) ؛

pinMode (inc، INPUT_PULLUP) ؛

pinMode (ledPin ، OUTPUT) ؛ // LED مضمن على السن ال 13

pinMode (7 ، OUTPUT) ؛

pinMode (11 ، OUTPUT) ؛

الكتابة الرقمية (7 ، منخفضة) ؛ // استبدل الأرض

الكتابة الرقمية (11 ، منخفضة) ؛

الوقت = ملي () ؛ // مطلوب لحساب الوقت

}}

 

vink blinktwice () {/ LED وامض مزدوج

الكتابة الرقمية (ledPin ، عالية) ؛

تأخير (100) ؛

الكتابة الرقمية (ledPin ، LOW) ؛

تأخير (100) ؛

الكتابة الرقمية (ledPin ، عالية) ؛

تأخير (100) ؛

الكتابة الرقمية (ledPin ، LOW) ؛

تأخير (200) ؛

}}

 

حلقة فارغة () {

إذا (k == 0) {

blinktwice () ؛ // دعوة لإدخال الرمز

}}

إذا (ك == 8) {

الكتابة الرقمية (ledPin ، عالية) ؛

تأخير (3000) ؛

k تساوي 0 ؛

}}

أ = digitalRead (ina) ؛ // قراءة مستويات الإشارة من الأزرار - ضغط / عدم الضغط

ب = رقمي قراءة (inb) ؛

ج = digitalRead (inc) ؛

تأخير (100) ؛ // next if - الحماية ضد الإيجابيات الكاذبة ، لا يمكنك استخدامها

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

if (a == keya [k]) {

if (b == keyb [k]) {

if (c == keyc [k]) {

 

ك ++ ؛

}}

}}

}}

}}

إذا (ك == 1) {

إذا (د == 0) {

الوقت = ملي () ؛

د ++ ؛

}}

}}

درجة الحرارة = ملي () ؛

درجة الحرارة = درجة الحرارة - الوقت ؛

if (temp> 10000) {

k تساوي 0 ؛

د يساوي 0 ؛

الوقت = ملي () ؛

}}

}}


لتجنب الأسئلة غير الضرورية حول الرمز ، يجب توضيح بعض النقاط. يتم استخدام وظيفة الإعداد لتعيين المنافذ. الوظيفة التالية هي Input_Pullup ، وهي ضرورية لزيادة جهد الدبوس بمقدار 5 فولت. يتم ذلك باستخدام المقاوم. ونتيجة لذلك ، لن تحدث دوائر قصيرة مختلفة. لمزيد من الراحة ، يوصى باستخدام وظيفة blinktwice. بشكل عام ، عند إنشاء برامج مختلفة ، تحتاج إلى تجربة وظائف أخرى.

بعد تعيين الوظائف ، تتم قراءة الإشارة من المنافذ. إذا تم الضغط على الزر ، فسيتم الإشارة إليه بالرقم 1 ، وإذا لم يكن كذلك - 2. بعد ذلك ، يتم تحليل جميع القيم. على سبيل المثال ، كان هناك مزيج مثل 0،1،1. هذا يعني أنه تم الضغط على المفتاح الأول ولم يتم الضغط على المفتاحين الآخرين. إذا كانت جميع القيم صحيحة ، فإن الشرط 8 صحيح أيضًا. ويتجلى ذلك من خلال إضاءة LED مضاءة على اللوحة الأمامية. بعد ذلك ، تحتاج إلى إدخال رمز محدد يعمل على فتح الباب.

يتم استخدام عناصر الرمز الأخيرة لإعادة تعيين قيم العداد. يتم تنفيذ هذه الوظيفة إذا مرت أكثر من 10 ثوان منذ ضغطة المفتاح الأخيرة.بدون هذا الرمز ، يمكنك تصفح جميع الخيارات الممكنة ، على الرغم من وجود الكثير منها. بعد إنشاء هذا الجهاز ، تحتاج إلى اختباره.

 

(3 الأصوات)
جار التحميل...

اضف تعليق