زمان برای پیگیری قفل ترکیبی تک دکمه ای با ایجاد نوع دیگری از سوئیچ/قفل است. برای فعال کردن این سوئیچ، ما از یک پینگ اختلاف منظر استفاده می کنیم))) سنسور اولتراسونیک، یک برد آردوینو و برخی سخت افزارهای دیگر - برای ساختن دستگاهی که یک کد چهار عددی دریافت می کند که از فاصله بین دست و سنسور اگر آردوینو و سنسورهای اولتراسونیک برای شما جدید هستند، لطفاً قبل از حرکت، این آموزش را بخوانید .
سخت افزار مورد نیاز برای این پروژه حداقل است و در زیر نشان داده شده است - یک برد سازگار با آردوینو Freetronics ، سنسور Ping))) و برای اهداف نمایش یک ماژول LCD رابط I2C داریم :
ترکیب "قفل" ما از چهار عدد صحیح تشکیل شده است. هر عدد صحیح فاصله اندازه گیری شده بین سنسور و دست کاربر (و غیره) است. به عنوان مثال، یک ترکیب ممکن است 20، 15، 20، 15 باشد. بنابراین برای اینکه سوئیچ فعال شود، کاربر باید دست خود را در فاصله 20 سانتی متری، سپس 15، سپس 20 و سپس 15 سانتی متر دورتر قرار دهد. سوئیچ ما بین هر اندازه گیری تاخیر خواهد داشت که می تواند در طرح اصلاح شود.
کد پروژه و سایر داده ها:
برای ساده نگه داشتن همه چیز، overlord of switch باید PIN را در طرح سوئیچ وارد کند. بنابراین ما به روشی برای اندازه گیری برای تولید پین نیاز داریم. ما این کار را با طرح زیر انجام می دهیم، به سادگی فاصله را روی LCD نمایش می دهد ( دانلود ):
// Ultrasonic combination lock - distance display // John Boxall - December 2011 // tronixstuff.wordpress.com/projects | CC by-sa-nc
#include "Wire.h" #include "LiquidCrystal_I2C.h" // for I2C bus LCD module http://bit.ly/eNf7jM LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int signal=8;
void setup() { pinMode(signal, OUTPUT); lcd.init(); // initialize the lcd lcd.backlight(); // turn on LCD backlight }
int getDistance() // returns distance from Ping))) sensor in cm { int distance; unsigned long pulseduration=0; // get the raw measurement data from Ping))) // set pin as output so we can send a pulse pinMode(signal, OUTPUT); // set output to LOW digitalWrite(signal, LOW); delayMicroseconds(5); // now send the 5uS pulse out to activate Ping))) digitalWrite(signal, HIGH); delayMicroseconds(5); digitalWrite(signal, LOW); // now we need to change the digital pin // to input to read the incoming pulse pinMode(signal, INPUT); // finally, measure the length of the incoming pulse pulseduration=pulseIn(signal, HIGH); // divide the pulse length by half pulseduration=pulseduration/2; // now convert to centimetres. We're metric here people... distance = int(pulseduration/29); return distance; }
void loop() { lcd.print(getDistance()); lcd.println(" cm "); delay(500); lcd.clear(); }
و در اینجا یک نمایش از طرح در عمل است:
حالا برای خود سوئیچ. برای مثال، فرآیند "باز کردن قفل" با قرار دادن دست خود در فاصله 10 سانتی متری یا کمتر در مقابل سنسور آغاز می شود. انجام این کار تابع checkPIN() را فعال میکند، جایی که نمایشگر از کاربر میخواهد چهار عدد را دریافت کند که با قرار دادن دست خود در فاصله معینی از سنسور چهار بار، با تأخیر بین هر خواندن که توسط متغیر تنظیم میشود، برگردانده میشود. عادل . مقادیر فاصلههای کاربر در تلاش آرایه ذخیره میشوند[4] .
برای جزئیات بیشتر: سوئیچ ترکیبی اولتراسونیک با استفاده از آردوینو
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
Time for a follow-up to the Single Button Combination Lock by creating another oddball type of switch/lock. To activate this switch we make use of a Parallax Ping))) Ultrasonic sensor, an Arduino-style board and some other hardware – to make a device that receives a four-number code which is made up of the distance between a hand and the sensor. If Arduino and ultrasonic sensors are new to you, please read this tutorial before moving on.