القراء مدعوون إلى
محلية الصنع مؤلف كتاب التعليمات تحت الاسم المستعار Gearboxmakers الذي يعرض المسافة بين الكائن ومكتشف النطاق في مؤشر المقياس ، وإذا كان صغيرًا جدًا ، فإنه يلعب اللحن.
يبدأ المعلم العمل على التصميم من خلال رسم مخططه:
لا يتم عرض الاستنتاجات الخاصة بتزويد الطاقة إلى معين المدى في الرسم التخطيطي ، ولكن في محدد المدى نفسه تتوفر جميع الرموز الضرورية.
يسجل Shift 74HC595 (KR1564IR52) هنا ثاني أهم المكونات بعد
اردوينو. غالبًا ما يتم استخدامها عندما تحتاج إلى إدارة العديد من الأحمال ، باستخدام نتيجتين فقط من وحدة التحكم الدقيقة. مبسطة للغاية ، يمكن وصف مبدأ عملها على النحو التالي. تكتب على لوحة المفاتيح - فعلي أو على الشاشة. وبطبيعة الحال ، تضغط في نفس الوقت على المفاتيح بالتتابع. والنتيجة هي خط ، كل العلامات التي تراها على الشاشة في نفس الوقت - بالتوازي. من السهل زيادة عدد الأحمال التي يتم التحكم فيها عن طريق إضافة المزيد من سجلات التحول إلى السلسلة. لن يزداد عدد مخرجات وحدة التحكم الدقيقة المعنية ، ولكن مع سرعة نقل البيانات الثابتة ، سينخفض الحد الأقصى للتردد الذي يمكن من خلاله تشغيل وإيقاف كل من الأحمال.
نظرًا لأن عدد تغييرات مصابيح LED التي يتم تشغيلها في وقت واحد ، يفشل المعلم في الإدارة بمقاوم واحد مشترك - يجب عليك إضافة المقاوم إلى كل مصباح LED.
يقوم المعالج بتجميع الجهاز
افعلها بنفسك على لوح توصيل من نوع لوح الكمال ويربط عدة أسلاك بـ Arduino ، والتي تعمل على موازاة خطوط الطاقة والأسلاك المشتركة ، بالإضافة إلى تبادل البيانات مع وحدة التحكم الدقيقة. يتم إرسال إشارات التحكم من سجلات التحول وباعث الصوت وباعث معين المدى من Arduino إلى الجهاز ، ويتم إرسال الإشارات التي تم إنشاؤها بواسطة جهاز استقبال محدد المدى عند استلام التذبذبات المنعكسة إلى الجهاز. بعد ذلك ، يتم عرض اللوحة مجمعة جزئيًا:
يبدأ المعالج العمل على البرنامج ، ويحصل على الرسم التالي:
/ *
** من إعداد: تشارلز موشين
**charlesmuchene
**
** التاريخ: 3 أكتوبر 2013
**
** الوقت: 1412 ساعة
**
** كود عداد المسافة
** النظام يقيس المسافة
** باستخدام مستشعر الموجات فوق الصوتية HC-SR04
** ويترجمها إلى سلسلة
** مصابيح LED مضاءة
**
** المتعة وتعديله!
* /
/ * مكتبة الملاعب اللحنية
** يصف الترددات المطلوب إنتاجها * /
# تتضمن "العروض التقديمية. h"
const int trigPin = 10 ؛ // دبوس الزناد (أخضر)
const int echoPin = 9 ؛ // echo pin (برتقالي)
const int tonePin = 8 ؛ // دبوس نغمة (أزرق أبيض)
const int serialDataPin = 7 ؛ // دبوس البيانات التسلسلية (برتقالي)
const int registerClockPin = 6 ؛ // تسجيل دبوس الساعة (بني)
const int shiftRegisterClockPin = 5 ؛ // ساعة تسجيل التحول
const int numOfRegisters = 16 ؛ // عدد التسجيلات
التسجيلات المنطقية للكون [numOfRegisters] ؛ // تسجيل مصفوفة
int litLEDs = 0 ؛ // led عداد دبوس
نطاق int = 100 ؛ // قيمة النطاق
مسافة int // المسافة
عدد مرات التسجيل = النطاق / عدد التسجيلات ؛ // (متر لكل LED)
// بدء اللحن
int melody [] = {NOTE_C4، NOTE_G3، NOTE_G3، NOTE_A3، NOTE_G3، 0، NOTE_B3، NOTE_C4، NOTE_DS8، NOTE_DS8} ؛
// لحن المسافة الحرجة
intiticalMelody [] = {NOTE_DS8، NOTE_DS8، NOTE_DS8، NOTE_DS8} ؛
// مدد الملاحظات: 4 = ملاحظة ربع ، 8 = ملاحظة ثامنة ، إلخ.
int noteDurations [] = {4، 8، 8، 4، 4، 4، 4، 4، 4، 2} ؛
intiticalNoteDurations [] = {4، 4، 4، 4} ؛
إعداد باطل ()
{
/ * تكوينات Pin * /
pinMode (المشغل ، المخرج) ؛
pinMode (echoPin ، INPUT) ؛
pinMode (serialDataPin ، OUTPUT) ؛
pinMode (registerClockPin ، OUTPUT) ؛
pinMode (shiftRegisterClockPin ، OUTPUT) ؛
/ * ضوء 'up up * /
lightEmUp () ؛
/ * بدء اللحن * /
playMelody () ؛
/ * إيقاف تشغيل كافة مصابيح LED * /
clearRegisters () ؛
} // setup
/ * احصل على مسافة من HC-SR04 * /
المسافة البعيدة ()
{
الكتابة الرقمية (الزناد ، منخفض) ؛
تأخير ميكروثانية (2) ؛
/ * إرسال إشارة الزناد * /
الكتابة الرقمية (الزناد ، عالية) ؛
تأخير ميكروثانية (10) ؛
الكتابة الرقمية (الزناد ، منخفض) ؛
/ * مسافة الإرجاع بالسنتيمتر * /
العودة (pulseIn (echoPin، HIGH) / 2) / 29.1 ؛
} // get get مسافة
// ضوء جميع المصابيح
ضوء فارغ
{
لـ (int pin = 0؛ pin = 0؛ i--)
يسجل [i] = منخفض ؛
writeRegisters () ؛
} // مسح التسجيلات
/ * كتابة قيم التسجيل وتخزينها * /
تسجيلات باطلة
{
/ * مع تسجيل دبوس الساعة تعيين منخفض
** محتويات سجل التخزين
** لا يتم تغييرها من خلال تغيير قيم سجل التحول
** /
الكتابة الرقمية (registerClockPin، LOW) ؛
/ * تكرار عبر كافة التسجيلات * /
for (int i = numOfRegisters - 1؛ i> = 0؛ i--)
{
الكتابة الرقمية (shiftRegisterClockPin ، LOW) ؛
int val = يسجل [i] ؛
الكتابة الرقمية (serialDataPin، val) ؛
الكتابة الرقمية (shiftRegisterClockPin ، عالي) ؛
} // حلقات جميع التسجيلات
/ * هذه الإشارة تنقل محتويات
** سجل النوبات لسجلات التخزين
* /
الكتابة الرقمية (registerClockPin ، عالية) ؛
} // كتابة التسجيلات
// تعيين دبوس فردي مرتفع أو منخفض
مجموعة باطلة (تسجيل int ، قيمة int)
{
يسجل [فهرس] = القيمة ؛
} // تعيين قيمة رقم التسجيل
/ * بدء تشغيل uMelody * /
لعب فارغ ()
{
for (int thisNote = 0؛ thisNote <10؛ thisNote ++)
{
/ * لحساب مدة الملاحظة ،
خذ ثانية واحدة مقسومة على نوع الملاحظة
/ * مثل ملاحظة ربع سنوية = 1000/4 ،
** الملاحظة الثامنة = 1000/8 ، إلخ * /
int noteDuration = 1000 / noteDurations [thisNote] ؛
نغمة (نغمة ، نغمة [thisNote] ، noteDuration) ؛
/ * لتمييز الملاحظات ، قم بتعيين حد أدنى من الوقت بينهما.
** يبدو أن مدة الملاحظة + 30٪ تعمل بشكل جيد * /
int pauseB BetweenNotes = noteDuration * 1.30 ؛
التأخير (وقفة بين الملاحظات) ؛
noTone (8) ؛
} // جميع الملاحظات
} // play بدء تشغيل اللحن
/ * اللحن الحرج * /
لعب فارغ CriticalMelody ()
{
for (int thisNote = 0؛ thisNote <4؛ thisNote ++)
{
int noteDuration = 1000 / noteDurations [thisNote] ؛
نغمة (نغمة ، نقدة حادة [thisNote] ، noteDuration) ؛
/ * لتمييز الملاحظات ، قم بتعيين حد أدنى من الوقت بينهما.
** يبدو أن مدة الملاحظة + 30٪ تعمل بشكل جيد * /
int pauseB BetweenNotes = noteDuration * 1.30 ؛
التأخير (وقفة بين الملاحظات) ؛
noTone (8) ؛
} // حلقة كل الملاحظات
} // لعب اللحن الحرج
حلقة فارغة ()
{
/ * احصل على مسافة * /
المسافة = getDistance () ؛
/ * احسب مصابيح LED للإضاءة * /
إذا (المدى> = المسافة)
litLEDs = (المدى - المسافة) / العدد ؛
آخر
مضاءة = -1 ؛
/ * ضوء LED يعتمد على المسافة المحسوبة * /
لـ (int pin = 0؛ pin = 13)
playCriticalMelody () ؛
} // حلقة
/ ****************************************************
* تعريف "Pitches.h"
*
* الثوابت العامة
* الثوابت تمثل ترددات الملعب
* من الملاحظات ذات الصلة على الحفل القياسي
* ضبط الصك مثل البيانو
**************************************************** /
# تعريف NOTE_B0 31
# تعريف NOTE_C1 33
# تعريف NOTE_CS1 35
# تعريف NOTE_D1 37
# تعريف NOTE_DS1 39
# تعريف NOTE_E1 41
#define NOTE_F1 44
# تعريف NOTE_FS1 46
# تعريف NOTE_G1 49
# تعريف NOTE_GS1 52
# تعريف NOTE_A1 55
# تعريف NOTE_AS1 58
# تعريف NOTE_B1 62
# تعريف NOTE_C2 65
# تعريف NOTE_CS2 69
# تعريف NOTE_D2 73
# تعريف NOTE_DS2 78
# تعريف NOTE_E2 82
# تعريف NOTE_F2 87
# تعريف NOTE_FS2 93
# تعريف NOTE_G2 98
# تعريف __________ 104
# تعريف NOTE_A2 110
# تعريف NOTE_AS2117
# تعريف NOTE_B2 123
# تعريف NOTE_C3 131
# تعريف NOTE_CS3 139
# تعريف NOTE_D3 147
# تعريف NOTE_DS3156
# تعريف NOTE_E3 165
#define NOTE_F3 175
# تعريف NOTE_FS3 185
# تعريف NOTE_G3 196
# تعريف __________ 208
# تعريف NOTE_A3 220
# تعريف NOTE_AS3 233
# تعريف NOTE_B3 247
# تعريف NOTE_C4 262
# تعريف NOTE_CS4 277
# تعريف NOTE_D4 294
# تعريف NOTE_DS4311
# تعريف NOTE_E4 330
#define NOTE_F4 349
# تعريف NOTE_FS4 370
# تعريف NOTE_G4 392
# تعريف NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
# تعريف NOTE_B4 494
# تعريف NOTE_C5 523
# تعريف NOTE_CS5 554
# تعريف NOTE_D5 587
# تعريف NOTE_DS5 622
# تعريف NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
# تعريف NOTE_G5 784
# تعريف NOTE_GS5 831
# تعريف NOTE_A5 880
#define NOTE_AS5 932
# تعريف NOTE_B5 988
# تعريف NOTE_C6 1047
# تعريف NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
# تعريف NOTE_F6 1397
# تعريف NOTE_FS6 1480
# تعريف NOTE_G6 1568
# تعريف NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
# تعريف NOTE_B6 1976
# تعريف NOTE_C7 2093
# تعريف NOTE_CS7 2217
# تعريف NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
# تعريف NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
# تعريف NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978
بعد الانتهاء من التجميع وملء الرسم ، يظهر المعالج أنه نجح:
قد يقوم الجهاز ، على سبيل المثال ، بإبلاغ موظف بمحل تصوير ، ومركز نسخ ، وإصلاح معدني ، وما إلى ذلك. حول مظهر العميل.