فهرست مطالب:
- مرحله 1: ساده شروع کنید: یک دکمه اضافه کنید
- مرحله 2: کد را برای ثبت فشارهای دکمه اصلاح کنید
- مرحله 3: به اندازه فرزند خود دکمه اضافه کنید
- مرحله 4: یک سوزن اضافه کنید
- مرحله 5: یک صفحه LCD اضافه کنید
تصویری: اصلاح کننده رفتار کودک: 5 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-02-01 14:40
اصلاح کننده رفتار کودک ثبت می کند که فرزند شما چند بار دچار مشکل شده است (با نام مستعار Strikes) و هنگامی که به سه می رسد ، صدای زنگ خاموش می شود و یک صفحه LCD اعلام می کند که زمین خورده است.
مرحله 1: ساده شروع کنید: یک دکمه اضافه کنید
اولین قدم در این پروژه ساده است. 1 دکمه اضافه کنید. در این مرحله به 4 سیم نر به نر ، 1 220 Resisitor و یک دکمه نیاز دارید.
- 5 ولت را در قسمت Power به ردیف مثبت روی نان برد وصل کنید
-
GND را به قسمت منفی تخته نان متصل کنید
- دکمه فشاری را روی تخته نان قرار دهید
-
منبع تغذیه ردیف را به قسمت پایین سمت چپ دکمه فشار وصل کنید
- با استفاده از یک مقاومت در قسمت پایین سمت راست دکمه فشار دهید تا ردیف منفی تخته نان را فشار دهید.
- شماره 13 سمت دیجیتال آردوینو را به سمت راست بالای دکمه وصل کنید.
با کد خود تأیید کنید که دکمه در حال ثبت است:
int child1ButtonPin = 13؛ // این پینی است که دکمه فشار ما به آن متصل شده است
int child1ButtonState = 0؛ // وضعیت دکمه (روشن/خاموش) را می خواند
int child1Strike = 0 ؛ // کودک چند ضربه دارد
// هنگامی که تنظیم مجدد یا تغذیه برد را فشار می دهید ، عملکرد راه اندازی یکبار اجرا می شود
void setup () {Serial.begin (9600)؛ pinMode (child1ButtonPin ، INPUT) ؛ } // عملکرد حلقه بارها و بارها اجرا می شود حلقه void () {// خواندن وضعیت دکمه (روشن یا خاموش) child1ButtonState = digitalRead (child1ButtonPin) ؛ if (child1ButtonState == HIGH) // دکمه {Serial.println ("HIGH") فشار داده شده است؛ تأخیر (5000) ؛ }
if (child1ButtonState == LOW)
{Serial.println ("LOW")؛ تأخیر (5000) ؛ }}
مرحله 2: کد را برای ثبت فشارهای دکمه اصلاح کنید
برای ثبت یک دکمه ، کد را اصلاح کنید:
int child1ButtonPin = 13؛ // این پینی است که دکمه فشار ما به آن متصل شده است // دکمه قبلی وضعیت int child1Strike = 0؛
// هنگامی که تنظیم مجدد یا تغذیه برد را فشار می دهید ، عملکرد راه اندازی یکبار اجرا می شود
void setup () {Serial.begin (9600)؛ pinMode (child1ButtonPin ، INPUT) ؛ } // عملکرد حلقه بارها و بارها اجرا می شود حلقه void () {// وضعیت دکمه را بخوانید (روشن یا خاموش) child1ButtonState = digitalRead (child1ButtonPin) ؛ if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // دکمه {child1Strike ++؛ Serial.println (child1Strike) ؛ تاخیر (1000) ؛ }}
}
در مرحله بعد ، کد را اصلاح کنید تا کودک 3 ضربه دریافت کند و پس از آن پیامی مبنی بر غیرفعال شدن دریافت کند:
int child1ButtonPin = 13؛ // این پینی است که دکمه فشار ما به آن متصل شده است int child1Strike = 0؛
// هنگامی که تنظیم مجدد یا تغذیه برد را فشار می دهید ، عملکرد راه اندازی یکبار اجرا می شود
void setup () {Serial.begin (9600)؛ pinMode (child1ButtonPin ، INPUT) ؛ } // عملکرد حلقه بارها و بارها اجرا می شود حلقه void () {// وضعیت دکمه را بخوانید (روشن یا خاموش) child1ButtonState = digitalRead (child1ButtonPin) ؛ if (child1ButtonState! = child1PreviousState) {if (child1ButtonState == HIGH) // دکمه {child1Strike ++؛ Serial.println (child1Strike) ؛
if (child1Strike> = 3)
{Serial.println ("کودک 1 زمین خورده است!") ؛ } تأخیر (3000) ؛ }}
}
Serial Moniter باید مانند تصویر بالا باشد.
توجه: مطمئن شوید که با تاخیر راحت هستید. با کمی تأخیر ، 1 دکمه را به عنوان بیش از یک فشار دهید!
مرحله 3: به اندازه فرزند خود دکمه اضافه کنید
در این مرحله ، ما به سادگی دو مرحله آخر را کپی می کنیم. به اندازه بچه ها دکمه اضافه کنید. در مورد من ، چهار عدد اضافه می کنم. اطمینان حاصل کنید که کد خود را با پین دیجیتال که دکمه به آن وصل شده است تغییر دهید. در مورد من از پین های 12 تا 10 برای افزودن دکمه های خود استفاده کردم. در صورت نیاز به یادآوری در اینجا مرحله 1 است:
-
5 ولت را در قسمت Power به ردیف مثبت روی نان برد وصل کنید
- GND را به سمت منفی تخته نان متصل کنید
-
دکمه فشاری را روی نانبرد قرار دهید برق ردیف موضعی را به قسمت پایین سمت چپ دکمه فشار وصل کنید
- با استفاده از یک مقاومت در قسمت پایین سمت راست دکمه فشار دهید تا ردیف منفی تخته نان را فشار دهید.
- (شماره پین خود) را در سمت دیجیتال آردوینو به سمت راست بالای دکمه وصل کنید.
شما همچنین باید کد را تغییر دهید تا همه دکمه های شما را اداره کند. لطفاً به خاطر داشته باشید که اگر لازم است مراقب رشته هایی باشید که استفاده کرده اید. نمی توانید با هم به حروف کوچک اضافه کنید. بهتر است 1 را به عنوان یک شی String اعلام کنید.
int child1ButtonPin = 13؛ // این پینی است که دکمه فشار ما به آن متصل شده است child2ButtonPin = 12؛ int child3ButtonPin = 11؛ int child4ButtonPin = 10 ؛ int child1ButtonState = 0؛ // حالت دکمه (روشن/خاموش) را می خواند int child2ButtonState = 0 ؛ int child3ButtonState = 0؛ int child4ButtonState = 0؛ int child1PreviousState = 0؛ int child2PreviousState = 0؛ int child3PreviousState = 0؛ int child4PreviousState = 0؛ int child1Strike = 0 ؛ int child2Strike = 0 ؛ int child3Strike = 0 ؛ int child4Strike = 0 ؛
// هنگامی که تنظیم مجدد یا تغذیه برد را فشار می دهید ، عملکرد راه اندازی یکبار اجرا می شود
void setup () {Serial.begin (9600)؛ pinMode (child1ButtonPin ، INPUT) ؛ pinMode (child2ButtonPin ، INPUT) ؛ pinMode (child3ButtonPin ، INPUT) ؛ pinMode (child4ButtonPin ، INPUT) ؛ } // عملکرد حلقه بارها و بارها اجرا می شود حلقه void () {// وضعیت دکمه را بخوانید (روشن یا خاموش) child1ButtonState = digitalRead (child1ButtonPin) ؛
child2ButtonState = digitalRead (child2ButtonPin) ؛
child3ButtonState = digitalRead (child3ButtonPin) ؛
child4ButtonState = digitalRead (child4ButtonPin) ؛
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // دکمه {child1Strike ++؛ Serial.println (String ("کودک 1 دارد:") + child1Strike + "اعتصاب") ؛
if (child1Strike> = 3)
{Serial.println ("کودک 1 زمین خورده است!") ؛ } تأخیر (3000) ؛ }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // دکمه {child2Strike ++؛ Serial.println (String ("Child 2 has:") + child2Strike + "strike")؛
if (child2Strike> = 3)
{Serial.println ("Child 2 Is Grounded!")؛ } تأخیر (3000) ؛ }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // دکمه {child3Strike ++؛ Serial.println (String ("کودک 3 دارد:") + child3Strike + "اعتصاب") ؛
if (child3Strike> = 3)
{Serial.println ("کودک 3 زمین خورده است!") ؛ } تأخیر (3000) ؛ }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // دکمه {child4Strike ++؛ Serial.println (رشته ("کودک 4 دارد:") + child4Strike + "اعتصاب") ؛
if (child4Strike> = 3)
{Serial.println ("کودک 4 زمین خورده است!") ؛ } تأخیر (3000) ؛ }}}
مرحله 4: یک سوزن اضافه کنید
حالا اجازه دهید مطمئن شویم که فرزندان شما می دانند که زمین گیر هستند. اجازه دهید یک زنگ صدا اضافه کنیم برای اتصال زنگ ، این مراحل آسان را دنبال کنید.
- یک بوزر به تخته نان خود اضافه کنید ، از آنجا که یک صفحه LCD در حال ظهور است ، فضا را برنامه ریزی کنید.
- سمت Postive (زنگ صدا باید + در سمت postive داشته باشد) را به پین دلخواه خود وصل کنید. من 9 تا کردم
- طرف دیگر را به ریل زمین گیر تخته نان خود وصل کنید.
در مرحله بعد ، کد خود را تغییر دهید تا هنگامی که کودک زمین گیر می شود ، زنگ را خاموش کند. چند روش مختلف برای کدگذاری برای زنگ شما وجود دارد ، اما من به دلیل سادگی تن (buzzerName ، hertz ، duration) را دوست دارم بنابراین یک مثال از این می تواند تن باشد (زنگ ، 4000 ، 300).
int child1ButtonPin = 13؛ // این پینی است که دکمه فشار ما به آن متصل شده است child2ButtonPin = 12؛ int child3ButtonPin = 11؛ int child4ButtonPin = 10 ؛ int child1ButtonState = 0؛ // حالت دکمه (روشن/خاموش) را می خواند int child2ButtonState = 0 ؛ int child3ButtonState = 0؛ int child4ButtonState = 0؛ int child1PreviousState = 0؛ int child2PreviousState = 0؛ int child3PreviousState = 0؛ int child4PreviousState = 0؛ int child1Strike = 0؛ int child2Strike = 0 ؛ int child3Strike = 0 ؛ int child4Strike = 0 ؛ const int buzzer = 2؛
// هنگامی که تنظیم مجدد یا تغذیه برد را فشار می دهید ، عملکرد راه اندازی یکبار اجرا می شود
void setup () {Serial.begin (9600)؛ pinMode (child1ButtonPin ، INPUT) ؛ pinMode (child2ButtonPin ، INPUT) ؛ pinMode (child3ButtonPin ، INPUT) ؛ pinMode (child4ButtonPin ، INPUT) ؛ pinMode (زنگ ، OUTPUT) ؛ } // عملکرد حلقه بارها و بارها اجرا می شود حلقه void () {// وضعیت دکمه را بخوانید (روشن یا خاموش) child1ButtonState = digitalRead (child1ButtonPin) ؛
child2ButtonState = digitalRead (child2ButtonPin) ؛
child3ButtonState = digitalRead (child3ButtonPin) ؛
child4ButtonState = digitalRead (child4ButtonPin) ؛
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // دکمه {child1Strike ++؛ Serial.println (String ("کودک 1 دارد:") + child1Strike + "اعتصاب") ؛
if (child1Strike> = 3)
{Serial.println ("کودک 1 زمین خورده است!") ؛ تن (زنگ ، 5000 ، 500) ؛ // صدای 5 هرتزی را به مدت 5 میلی ثانیه ارسال می کند
}
تاخیر (3000) ؛ }} if (child2ButtonState! = child2PreviousState) {if (child2ButtonState == HIGH) // دکمه {child2Strike ++؛ Serial.println (String ("Child 2 has:") + child2Strike + "strike")؛
if (child2Strike> = 3)
{Serial.println ("Child 2 Is Grounded!")؛ تن (زنگ ، 5000 ، 500) ؛ } تأخیر (3000) ؛ }}
if (child3ButtonState! = child3PreviousState)
{if (child3ButtonState == HIGH) // دکمه {child3Strike ++؛ Serial.println (String ("کودک 3 دارد:") + child3Strike + "اعتصاب") ؛
if (child3Strike> = 3)
{Serial.println ("کودک 3 زمین خورده است!") ؛ تن (زنگ ، 5000 ، 500) ؛ } تأخیر (3000) ؛ }}
if (child4ButtonState! = child4PreviousState)
{if (child4ButtonState == HIGH) // دکمه {child4Strike ++؛ Serial.println (رشته ("کودک 4 دارد:") + child4Strike + "اعتصاب") ؛
if (child4Strike> = 3)
{Serial.println ("کودک 4 زمین خورده است!") ؛ تن (زنگ ، 5000 ، 500) ؛ } تأخیر (3000) ؛ }}}
مرحله 5: یک صفحه LCD اضافه کنید
اکنون یک صفحه LCD برای خواندن واضح و آسان به شما اجازه می دهد.
- ابتدا یک پتانسیومتر به صفحه نان خود اضافه کنید تا صفحه LCD را کنترل کنید. مراقب محل قرار دادن آن باشید زیرا احتمالاً در حال حاضر فضای شما در حال اتمام است.
- از قسمت چپ جلو برای اتصال پتانسیومتر خود به ریل قدرت استفاده کنید
- از قسمت جلویی راست برای زمین زدن پتانسیومتر خود استفاده کنید.
- قسمت پشتی به صفحه LCD متصل می شود.
- صفحه LCD را به تخته نان خود اضافه کنید
- اولین پین صفحه را به ریل زمین متصل کنید
- پین دوم را به ریل برق وصل کنید.
- پین LCD سوم به پین 8 در آردوینو می رود
- چهارمین پین LCD به پین 7 در آردوینو می رود
- پنجم به پین 6 در آردوینو می رود
- پین ششم به پین 5 در آردوینو می رود
- پین های 7 تا 10 روی صفحه LCD خالی است
- پین 11 به پین 5 در آردوینو می رود
- پین 12 به راه آهن متصل می شود
- پین 13 به پین 4 در آردوینو می رود
- پین 14 به پشت پتانسیومتر می رود
- پین 15 به ریل برق می رود
- پین 16 به راه آهن زمینی می رود.
اکنون برای استفاده از صفحه LCD باید کد خود را به روز کنید. برای این کار از Libary Liquid Crystal استفاده می کنید. مراقب دستورات چاپ LCD خود باشید. به یاد داشته باشید که در صورت نیاز به پیام جدید صفحه را پاک کنید. همچنین به یاد داشته باشید که وقتی می خواهید از دو خط استفاده کنید مکان نما را تنظیم کنید.
#عبارتند از
LCD مایع LiquidCrystal (3 ، 4 ، 5 ، 6 ، 7 ، 8) ؛ // صفحه LCD را تنظیم می کند
int child1ButtonPin = 13؛ // این پینی است که دکمه فشار ما به int child2ButtonPin = 12 وصل شده است. int child3ButtonPin = 11؛ int child4ButtonPin = 10؛ int child1ButtonState = 0؛ // حالت دکمه (روشن/خاموش) را می خواند int child2ButtonState = 0 ؛ int child3ButtonState = 0؛ int child4ButtonState = 0؛ int child1PreviousState = 0؛ // حالت قبلی دکمه فشرده int child2PreviousState = 0؛ int child3PreviousState = 0؛ int child4PreviousState = 0؛ int child1Strike = 0؛ // چند ضربه کودک در int child2Strike = 0؛ int child3Strike = 0 ؛ int child4Strike = 0 ؛ const int buzzer = 9؛ // زنگ
// هنگامی که تنظیم مجدد یا تغذیه برد را فشار می دهید ، عملکرد راه اندازی یکبار اجرا می شود
void setup () {Serial.begin (9600)؛ lcd.begin (16 ، 2) ؛ lcd.print ("کودک") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("اصلاح کننده رفتار") ؛ pinMode (child1ButtonPin ، INPUT) ؛ pinMode (child2ButtonPin ، INPUT) ؛ pinMode (child3ButtonPin ، INPUT) ؛ pinMode (child4ButtonPin ، INPUT) ؛ pinMode (زنگ ، OUTPUT) ؛ } // تابع حلقه بارها و بارها برای همیشه void loop () {lcd.setCursor (0 ، 0) اجرا می شود ؛ // خواندن وضعیت دکمه (روشن یا خاموش) child1ButtonState = digitalRead (child1ButtonPin) ؛
child2ButtonState = digitalRead (child2ButtonPin) ؛
child3ButtonState = digitalRead (child3ButtonPin) ؛
child4ButtonState = digitalRead (child4ButtonPin) ؛
if (child1ButtonState! = child1PreviousState)
{if (child1ButtonState == HIGH) // دکمه {lcd.clear () فشار داده شده است؛ child1Strike ++؛ Serial.println (String ("کودک 1 دارد:") + child1Strike + "اعتصاب") ؛ lcd.print ("کودک 1 دارد:") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (child1Strike) ؛ lcd.print ("اعتصاب می کند!") ؛
if (child1Strike> = 3)
{Serial.println ("کودک 1 زمین خورده است!") ؛ lcd.clear ()؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("Child 1 is")؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("Grounded!") ؛
تن (زنگ ، 5000 ، 500) ؛ // صدای 5 هرتزی را به مدت 5 میلی ثانیه ارسال می کند
}
تاخیر (3000) ؛ }} if (child2ButtonState! = child2PreviousState) {lcd.clear ()؛ if (child2ButtonState == HIGH) // دکمه {child2Strike ++؛ Serial.println (String ("Child 2 has:") + child2Strike + "strike")؛ lcd.print ("Child 2 Has:")؛ lcd.setCursor (0 ، 1) ؛ lcd.print (child2Strike) ؛ lcd.print ("اعتصاب می کند!") ؛ if (child2Strike> = 3) {Serial.println ("Child 2 Is Grounded!")؛ lcd.clear ()؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("Child 2 is")؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("Grounded!") ؛ تن (زنگ ، 5000 ، 500) ؛ } تأخیر (3000) ؛ }}
if (child3ButtonState! = child3PreviousState)
{lcd.clear ()؛ if (child3ButtonState == HIGH) // دکمه {child3Strike ++؛ Serial.println (String ("کودک 3 دارد:") + child3Strike + "اعتصاب") ؛ lcd.print ("کودک 3 دارد:") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (child3Strike) ؛ lcd.print ("اعتصاب می کند!") ؛ if (child3Strike> = 3) {Serial.println ("Child 3 Is Grounded!")؛ lcd.clear ()؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("Child 3 is")؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("Grounded!") ؛ تن (زنگ ، 5000 ، 500) ؛ } تأخیر (3000) ؛ }}
if (child4ButtonState! = child4PreviousState)
{lcd.clear ()؛ if (child4ButtonState == HIGH) // دکمه {child4Strike ++ را فشار دهید ؛ Serial.println (رشته ("کودک 4 دارد:") + child4Strike + "اعتصاب") ؛ lcd.print ("کودک 4 دارد:") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print (child4Strike) ؛ lcd.print ("اعتصاب می کند!") ؛
if (child4Strike> = 3)
{Serial.println ("کودک 4 زمین خورده است!") ؛ lcd.clear ()؛ lcd.setCursor (0 ، 0) ؛ lcd.print ("کودک 4 ساله است") ؛ lcd.setCursor (0 ، 1) ؛ lcd.print ("Grounded!") ؛ تن (زنگ ، 5000 ، 500) ؛ } تأخیر (3000) ؛ }}} و تمام ، این تنها چیزی است که شما برای ایجاد اصلاح کننده رفتار کودک خود نیاز دارید
توصیه شده:
کنسول آتاری پانک با دنبال کننده 8 مرحله ای کودک: 7 مرحله (همراه با تصاویر)
کنسول آتاری پانک با توالی سنج کودک 8 مرحله ای: این ساخت وسط ، کنسول Atari Punk همه کاره و Sequencer Baby 8 Step است که می توانید بر روی دستگاه فرز PCB رومیزی Bantam Tools آسیاب کنید. این دستگاه از دو برد مدار تشکیل شده است: یکی برد رابط کاربری (UI) و دیگری یک برنامه کاربردی
کودک من را نجات دهید: صندلی هوشمند که در صورت فراموش کردن کودک در ماشین پیام های متنی ارسال می کند: 8 مرحله
کودک من را ذخیره کنید: صندلی هوشمند که کودک را در ماشین فراموش می کند پیام های متنی می فرستد: این ماشین در اتومبیل نصب شده است و به لطف آشکارساز روی صندلی کودک ، در صورت دریافت ، به ما هشدار می دهد - از طریق پیام کوتاه یا تماس تلفنی - بدون آوردن کودک با ما
مدار کامل موج اصلاح کننده از طریق اصلاح پل: 5 مرحله (همراه با تصاویر)
مدار کامل موج اصلاح کننده از طریق اصلاح پل: اصلاح یک فرایند تبدیل جریان متناوب به جریان مستقیم است
شبیه دشمن خود باشید: نشانه هایی ایجاد کنید که گیج کننده ، مبهوت کننده و تقلید کننده باشد!: 6 مرحله (همراه با تصاویر)
شبیه دشمن خود باشید: نشانه هایی ایجاد کنید که باعث گیج شدن ، حیرت و تقلید می شود !: در این مقاله آموزشی طراحی استتار را خواهید آموخت. در پروژه های گذشته ، من تکنیک های مختلفی را برای تقلید از علائم دولتی یا شرکتی اختصاص داده و اصلاح کرده ام. استفاده از روش هایی که در مراحل زیر بیان شده است به شما امکان می دهد به طور موقت
اصلاح کننده راهنمای تقویت کننده گیتار: 5 مرحله
اصلاح کننده هدایت تقویت کننده گیتار: زمینه: این دستورالعمل پیاده سازی مستقیم & quot؛ Mitchell Donut & quot؛ اصلاح کننده هدایت بلندگوی گیتار که توسط جی میچل از انجمن بحث The Gear Page پیشنهاد شده است. مرتبط ترین بحث را می توان در سخنران یافت