فهرست مطالب:
تصویری: ساعت نوشتاری پیمایش آردوینو: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
هدف این پروژه ساخت یک ساعت متن پیمایش است که زمان صحبت کردن را نمایش می دهد (به عنوان مثال ، "نیمه شب است").
این یک پروژه سریع است - ما به اندازه کافی به شما می دهیم تا با سخت افزار و طرح پیش بروید ، و سپس می توانید آن را متناسب با نیازهای خود ادامه دهید.
مرحله 1: سخت افزار
شما به سه مورد اصلی نیاز دارید -
- یک برد سازگار با Arduino Uno
- یک مدار ساعت یا ماژول زمان واقعی با استفاده از IC DS1307 یا DS3231
- و صفحه نمایش LED تک رنگ به سبک P10
ممکن است منبع تغذیه خارجی بخواهید ، اما بعداً به آن می پردازیم.
اولین مرحله این است که ساعت واقعی خود را متناسب کنید. اگر در این زمینه به کمک نیاز دارید ، برای آموزش اینجا را کلیک کنید.
در حال حاضر امیدوارم به این فکر کنید که "چگونه زمان را تعیین می کنید؟".
دو پاسخ برای این سوال وجود دارد. اگر از DS3231 استفاده می کنید فقط آن را در طرح قرار دهید (به تصویر زیر مراجعه کنید) زیرا دقت بسیار خوب است ، فقط باید طرح را با زمان جدید دو بار در سال بارگذاری کنید تا صرفه جویی در نور روز را پوشش دهد.
در غیر این صورت یک رابط کاربری ساده اضافه کنید-چند دکمه می توانند این کار را انجام دهند. در نهایت شما فقط باید سخت افزار را در پشت DMD قرار دهید. محدوده زیادی برای برآوردن نیازهای شما وجود دارد ، یک راه حل ساده این است که صفحه کنترل را تراز کنید تا بتوانید به آسانی به سوکت USB دسترسی پیدا کنید - و سپس آن را با مقداری Sugru بچسبانید.
در مورد تغذیه ساعت - می توانید یک صفحه LED را از آردوینو اجرا کنید ، و برای روشنایی خوب برای استفاده در محیط داخلی کار می کند. اگر می خواهید DMD با روشنایی کامل شبکیه چشم کار کند ، باید از منبع تغذیه جداگانه 5V 4A DC استفاده کنید. اگر از دو DMD استفاده می کنید - این عدد به 8A می رسد و غیره. کافی است برق خارجی را به پایانه های یک DMD وصل کنید (DMD دوم یا بیشتر را به این پایانه ها وصل کنید).
اگر تمایل ندارید انتهای کابل منبع تغذیه خود را قطع کنید ، از خروجی سوکت DC استفاده کنید.
مرحله 2: طرح آردوینو
شما باید دو کتابخانه آردوینو زیر را نصب کنید - TimerOne و DMD. سپس طرح را بارگذاری کنید:
// برای RTC #شامل "Wire.h" #تعریف DS1307_I2C_ADDRESS 0x68 // RTC DS1307 0x68 است
// برای نمایش LED
#شامل "SPI.h" #شامل "DMD.h" #شامل "TimerOne.h" #شامل "SystemFont5x7.h" #شامل "Arial_black_16.h" #تعریف DISPLAYS_ACROSS 1 // شما می توانید بیش از یک DMD در یک داشته باشید ردیف #تعریف DISPLAYS_DOWN 1 DMD dmd (DISPLAYS_ACROSS ، DISPLAYS_DOWN) ؛
رشته finalString ؛ // برای نگه داشتن جمله نهایی برای نمایش در DMD استفاده می شود
void ScanDMD () // مورد نیاز برای DMD
{dmd.scanDisplayBySPI ()؛ }
void setup ()
{// برای DMD Timer1.initialize (5000) ؛ Timer1.attachInterrupt (ScanDMD) ؛ dmd.clearScreen (درست) ؛
// برای RTC
Wire.begin ()؛ // بایت اتوبوس I2C را در ثانیه ، دقیقه ، ساعت ، dayOfWeek ، dayOfMonth ، ماه ، سال روشن کنید. // متغیرها را تغییر دهید و setDateDs1307 را برای تنظیم زمان کامنت گذاری کنید // سپس عملکرد را دوباره کامنت کنید و دوباره طرح را بارگذاری کنید = 0؛ دقیقه = 13 ؛ ساعت = 23 ؛ dayOfWeek = 4 ؛ dayOfMonth = 19؛ ماه = 5 ؛ سال = 13 ؛ // setDateDs1307 (ثانیه ، دقیقه ، ساعت ، dayOfWeek ، dayOfMonth ، ماه ، سال) ؛ }
// توابع معمول RTC
// تبدیل اعداد اعشاری معمولی به بایت اعشاری کد شده دوتایی decToBcd (byte val) {return ((val/10*16) + (val٪ 10)) ؛ }
// تبدیل اعشاری با کد دودویی به اعداد اعشاری معمولی
بایت bcdToDec (بایت val) {return ((val/16*10) + (val٪ 16)) ؛ }
void setDateDs1307 (بایت ثانیه ، // 0-59
دقیقه بایت ، // 0-59 بایت ساعت ، // 1-23 بایت dayOfWeek ، // 1-7 بایت روزماه ، // 1-28/29/ماه بایت ، // 1-12 بایت سال) // 0- 99 {Wire.beginTransmission (DS1307_I2C_ADDRESS) ؛ Wire.write (0) ؛ Wire.write (decToBcd (دوم)) ؛ // 0 تا بیت 7 ساعت Wire.write (decToBcd (دقیقه)) را شروع می کند. Wire.write (decToBcd (ساعت)) ؛ Wire.write (decToBcd (dayOfWeek)) ؛ Wire.write (decToBcd (dayOfMonth)) ؛ Wire.write (decToBcd (ماه)) ؛ Wire.write (decToBcd (سال)) ؛ Wire.write (00010000) ؛ // 0x10 (hex) 00010000 (باینری) برای کنترل ثبت ارسال می کند - Wire.endTransmission موج مربعی را روشن می کند () ؛ }
// تاریخ و زمان را از ds1307 دریافت می کند
void getDateDs1307 (بایت *ثانیه ، بایت *دقیقه ، بایت *ساعت ، بایت *dayOfWeek ، بایت *dayOfMonth ، بایت *ماه ، بایت *سال) {// تنظیم مجدد اشاره گر Wire.beginTransmission (DS1307_I2C_ADDRESS) ؛ Wire.write (0) ؛ Wire.endTransmission ()؛
سیم. درخواست از (DS1307_I2C_ADDRESS ، 7) ؛
// برخی از این موارد به ماسک نیاز دارند زیرا بیت های خاصی بیت های کنترل هستند
*دوم = bcdToDec (Wire.read () & 0x7f) ؛ *دقیقه = bcdToDec (Wire.read ()) ؛ *ساعت = bcdToDec (Wire.read () & 0x3f) ؛ // اگر 12 ساعت صبح/بعد از ظهر *dayOfWeek = bcdToDec (Wire.read ()) باید این مورد را تغییر دهید ؛ *dayOfMonth = bcdToDec (Wire.read ()) ؛ *month = bcdToDec (Wire.read ()) ؛ *سال = bcdToDec (Wire.read ()) ؛ }
void drawText (String oldString)
{dmd.clearScreen (درست) ؛ dmd.selectFont (Arial_Black_16) ؛ char newString [256]؛ int sLength = oldString.length ()؛ oldString.toCharArray (newString ، sLength+1) ؛ dmd.drawMarquee (newString ، sLength ، (32*DISPLAYS_ACROSS) -1 ، 0) ؛ شروع طولانی = millis ()؛ تایمر طولانی = شروع ؛ تایمر طولانی 2 = شروع ؛ boolean ret = false؛ while (! ret) {if ((تایمر+20) <millis ()) {ret = dmd.stepMarquee (-1، 0)؛ تایمر = میلی ثانیه ()؛ }}}
void createTextTime (int hh، int mm)
// این تمام داده های زمان را به صورت یک جمله در هم می آمیزد {finalString = ""؛ // جمله را برای موارد خاص پاک کنید (در زیر) finalString = finalString+"It's" ؛
// اکنون ساعت را اضافه کنید
if (hh == 1 || hh == 13) {finalString = finalString+"one"؛ } if (hh == 2 || hh == 14) {finalString = finalString+"two"؛ } if (hh == 3 || hh == 15) {finalString = finalString+"three"؛ } if (hh == 4 || hh == 16) {finalString = finalString+"چهار" ؛ } if (hh == 5 || hh == 17) {finalString = finalString+"پنج" ؛ } if (hh == 6 || hh == 18) {finalString = finalString+"six"؛ } if (hh == 7 || hh == 19) {finalString = finalString+"هفت" ؛ } if (hh == 8 || hh == 20) {finalString = finalString+"هشت" ؛ } if (hh == 9 || hh == 21) {finalString = finalString+"nine"؛ } if (hh == 10 || hh == 22) {finalString = finalString+"ده" ؛ } if (hh == 11 || hh == 23) {finalString = finalString+"یازده" ؛ }
// اکنون دقیقه را اضافه کنید
switch (mm) {case 1: finalString = finalString+"oh one"؛ زنگ تفريح؛ مورد 2: finalString = finalString+"آه دو"؛ زنگ تفريح؛ مورد 3: finalString = finalString+"آه سه" ؛ زنگ تفريح؛ مورد 4: finalString = finalString+"آه چهار"؛ زنگ تفريح؛ مورد 5: finalString = finalString+"آه پنج"؛ زنگ تفريح؛ مورد 6: finalString = finalString+"آه شش" ؛ زنگ تفريح؛ مورد 7: finalString = finalString+"آه هفت"؛ زنگ تفريح؛ مورد 8: finalString = finalString+"آه هشت"؛ زنگ تفريح؛ مورد 9: finalString = finalString+"آه نه" ؛ زنگ تفريح؛ مورد 10: finalString = finalString+"ده" ؛ زنگ تفريح؛ مورد 11: finalString = finalString+"یازده" ؛ زنگ تفريح؛ مورد 12: finalString = finalString+"دوازده" ؛ زنگ تفريح؛ مورد 13: finalString = finalString+"سیزده" ؛ زنگ تفريح؛ مورد 14: finalString = finalString+"چهارده"؛ زنگ تفريح؛ مورد 15: finalString = finalString+"پانزده"؛ زنگ تفريح؛ مورد 16: finalString = finalString+"شانزده"؛ زنگ تفريح؛ مورد 17: finalString = finalString+"هفده"؛ زنگ تفريح؛ مورد 18: finalString = finalString+"هجده" ؛ زنگ تفريح؛ مورد 19: finalString = finalString+"نوزده"؛ زنگ تفريح؛ مورد 20: finalString = finalString+"بیست" ؛ زنگ تفريح؛ مورد 21: finalString = finalString+"بیست و یک" ؛ زنگ تفريح؛ مورد 22: finalString = finalString+"بیست و دو" ؛ زنگ تفريح؛ مورد 23: finalString = finalString+"بیست و سه" ؛ زنگ تفريح؛ مورد 24: finalString = finalString+"بیست و چهار" ؛ زنگ تفريح؛ مورد 25: finalString = finalString+"بیست و پنج" ؛ زنگ تفريح؛ مورد 26: finalString = finalString+"بیست و شش" ؛ زنگ تفريح؛ مورد 27: finalString = finalString+"بیست و هفت" ؛ زنگ تفريح؛ مورد 28: finalString = finalString+"بیست و هشت" ؛ زنگ تفريح؛ مورد 29: finalString = finalString+"بیست و نه" ؛ زنگ تفريح؛ مورد 30: finalString = finalString+"سی" ؛ زنگ تفريح؛ مورد 31: finalString = finalString+"سی و یک" ؛ زنگ تفريح؛ مورد 32: finalString = finalString+"سی و دو" ؛ زنگ تفريح؛ مورد 33: finalString = finalString+"سی و سه" ؛ زنگ تفريح؛ مورد 34: finalString = finalString+"سی و چهار" ؛ زنگ تفريح؛ مورد 35: finalString = finalString+"سی و پنج" ؛ زنگ تفريح؛ مورد 36: finalString = finalString+"سی و شش" ؛ زنگ تفريح؛ مورد 37: finalString = finalString+"سی و هفت" ؛ زنگ تفريح؛ مورد 38: finalString = finalString+"سی و هشت" ؛ زنگ تفريح؛ مورد 39: finalString = finalString+"سی و نه" ؛ زنگ تفريح؛ مورد 40: finalString = finalString+"چهل" ؛ زنگ تفريح؛ مورد 41: finalString = finalString+"چهل و یک" ؛ زنگ تفريح؛ مورد 42: finalString = finalString+"چهل و دو" ؛ زنگ تفريح؛ مورد 43: finalString = finalString+"چهل و سه" ؛ زنگ تفريح؛ مورد 44: finalString = finalString+"چهل و چهار"؛ زنگ تفريح؛ مورد 45: finalString = finalString+"چهل و پنج"؛ زنگ تفريح؛ مورد 46: finalString = finalString+"چهل و شش" ؛ زنگ تفريح؛ مورد 47: finalString = finalString+"چهل و هفت"؛ زنگ تفريح؛ مورد 48: finalString = finalString+"چهل و هشت"؛ زنگ تفريح؛ مورد 49: finalString = finalString+"چهل و نه" ؛ زنگ تفريح؛ مورد 50: finalString = finalString+"پنجاه"؛ زنگ تفريح؛ مورد 51: finalString = finalString+"پنجاه و یک" ؛ زنگ تفريح؛ مورد 52: finalString = finalString+"پنجاه و دو" ؛ زنگ تفريح؛ مورد 53: finalString = finalString+"پنجاه و سه" ؛ زنگ تفريح؛ مورد 54: finalString = finalString+"پنجاه و چهار" ؛ زنگ تفريح؛ مورد 55: finalString = finalString+"پنجاه و پنج" ؛ زنگ تفريح؛ مورد 56: finalString = finalString+"پنجاه و شش" ؛ زنگ تفريح؛ مورد 57: finalString = finalString+"پنجاه و هفت" ؛ زنگ تفريح؛ مورد 58: finalString = finalString+"پنجاه و هشت" ؛ زنگ تفريح؛ مورد 59: finalString = finalString+"پنجاه و نه" ؛ زنگ تفريح؛ }
// ظهر؟
if (hh == 12 && mm == 0) {finalString = finalString+"midday"؛ } // نیمه شب؟ if (hh == 00 && mm == 0) {finalString = finalString+"نیمه شب" ؛ }
}
حلقه خالی ()
{// دریافت زمان از بایت RTC ثانیه ، دقیقه ، ساعت ، dayOfWeek ، dayOfMonth ، ماه ، سال ؛ getDateDs1307 (& دوم ، & دقیقه ، & ساعت ، & dayOfWeek ، & dayOfMonth ، & month ، & year) ؛
// زمان را به رشته جمله تبدیل کنید
createTextTime (ساعت ، دقیقه) ؛
// اکنون متن را به DMD ارسال کنید
drawText (finalString) ؛ }
این طرح دارای عملکردهای معمول برای تنظیم و بازیابی زمان از IC های ساعت در زمان واقعی DS1307/3232 است و طبق معمول با تمام ساعت های ما می توانید اطلاعات زمان را در متغیرهای void setup () و سپس unsment setDateDs1307 () وارد کنید. طرح را بارگذاری کنید ، دوباره setDateDs1307 را کامنت کنید ، سپس طرح را بار دیگر بارگذاری کنید. در صورت عدم افزودن رابط کاربری مبتنی بر سخت افزار ، این فرایند را برای تنظیم مجدد زمان تکرار کنید.
مرحله 3:
هنگامی که زمان در حلقه void () بازیابی شد ، به تابع createTextTime () منتقل می شود. این تابع با شروع با "It's" رشته متنی را برای نمایش ایجاد می کند و سپس تعیین می کند که بسته به زمان فعلی کدام کلمات را دنبال کنید. در نهایت تابع drawText () رشته نگهدارنده متن برای نمایش را به یک متغیر کاراکتر تبدیل می کند که می تواند به DMD منتقل شود.
توصیه شده:
ساعت شبکه ESP8266 بدون هیچ گونه RTC - Nodemcu NTP ساعت بدون RTC - پروژه ساعت اینترنتی: 4 مرحله
ساعت شبکه ESP8266 بدون هیچ گونه RTC | Nodemcu NTP ساعت بدون RTC | پروژه ساعت اینترنتی: در پروژه ایجاد پروژه ساعت بدون RTC ، زمان استفاده از اینترنت با استفاده از wifi و نمایش آن بر روی صفحه نمایش st7735
پروژه هالووین با جمجمه ، آردوینو ، LED های چشمک زن و چشم های پیمایش کننده - Maker ، MakerED ، MakerSpaces: 4 مرحله
پروژه هالووین با جمجمه ، آردوینو ، LED های چشمک زن و چشم های پیمایش کننده | Maker، MakerED، MakerSpaces: پروژه هالووین با جمجمه ، آردوینو ، LED های چشمک زن و اسکرول چشمان به زودی هالووین است ، بنابراین اجازه دهید یک پروژه ترسناک در حین برنامه نویسی و DIY ایجاد کنیم (کمی مشغول…). این آموزش برای افرادی طراحی شده است که چاپگر سه بعدی ندارند ، ما از پلاستیک 21 سانتی متری استفاده می کنیم
وسایل کمک نوشتاری ضد لغزش: 31 مرحله
وسایل کمک نوشتاری ضد لغزش: برخی از افراد فقط در یک بازوی خود تحرک دارند و هنگام نوشتن می توانند در ثابت نگه داشتن کاغذ مشکل داشته باشند. ما چندین دستگاه برای کمک به چنین افرادی توسعه دادیم: 1. یک تشک چسبان با روکش پارچه ای. مونتاژ این طرح بسیار ساده است و فقط نیاز دارد
نحوه ایجاد صفحه پیمایش با استفاده از آردوینو و بلوتوث: 4 مرحله
نحوه ایجاد صفحه پیمایش با استفاده از آردوینو و بلوتوث: از کانال YouTube من دیدن کنید در این پست قصد دارم در مورد & quot؛ چگونه می توانید با استفاده از آردوینو یک صفحه پیمایش ایجاد کنید و آن را از طریق تلفن هوشمند کنترل کنید & quot ؛. با استفاده از بلوتوث می توانید حداکثر 63 کاراکتر ارسال کنید و از طریق برنامه
ساخت یک قلم LED لمسی و سطح نوشتاری که به UV پاسخ می دهد: 5 مرحله
ساخت یک قلم لمسی LED و سطح نوشتاری که به UV پاسخ می دهد: یک قلم نور LED حساس به سوئیچ لمسی ایجاد کنید! در این قسمت از قطعاتی استفاده می شود که اکثر علاقه مندان احتمالاً در اطراف خانه دراز کشیده اند تا یک خودکار بسازند که از LED نور ساطع می کند. من از یک LED ماوراء بنفش برای "نوشتن شبح" با استفاده کردم. می توانید یک سورفای سفید بپوشانید