- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
ساخت ساعت با ماژول سون سگمنت و آردوینو
با سلام! در این آموزش به شما روش ساخت ساعت با ماژول سون سگمنت و آردوینو را آموزش خواهیم داد. به طور کلی، یک سون سگمنت 4 تایی معمولی، 12 پایه دارد که برای راهاندازی آن باید سختی بسیار کشید اما نگران نباشید زیرا بهنام رباتیک به عنوان واردکننده قطعات الکترونیکی، میداند که چگونه باید از آنها استفاده کنید. ماژول TM1637 اتصالات پین را از 12 به 4 کاهش میدهد و دو پایه برای اتصالات برق و دو پایه برای کنترل بخشها دارد و به همین دلیل فرآیند استفاده کردن از آن بسیار آسان است.
از میان پروژههای موجود، پروژه ساخت ساعت یا تایمر را انتخاب کردهایم. شما برای انجام این پروژه، به یک عدد ماژول سون سگمنت 4 رقمی TM1637، یک برد آردوینو ترجیحا آردوینو UNO، ماژول DS3231، تعدادی سیم جامپر و یک عدد برد بورد احتیاج دارید.
فهرست مطالب
بررسی ماژول TM1637 قبل از ساخت ساعت با ماژول سون سگمنت و آردوینو
TM1637 از عملکردهای بسیاری از جمله روشن و خاموش و همچنین کنترل روشنایی LEDها و دسترسی به هر یک از بخشهای A تا G پشتیبانی میکند.
به علاوه، تی ام 1637 این امکان را به شما میدهد تا میزان روشنایی LEDها را تنظیم نمایید.
یکی از نکات خوب این ماژول این است که به محض بهروزرسانی نمایشگر توسط میکروکنترلر، TM1637 از تازهسازی نمایشگر مراقبت مینماید که این خود باعث طول عمر نمایشگر و برد میشود. نکته خوب دیگر این محصول این است که برای نشان دادن زمان ، دارای علامت “:” ( دو نقطه) به صورت پیشفرض میباشد.
نمایشگرهای 7 سگمنتی معمولی در واقع فقط هفت LED هستند که در یک الگوی خاص (عدد 8 انگلیسی) قرار گرفتهاند.
ماژول TM1637 شامل چهار سون سگمنت برای نمایش دادهها یا دما است. علاوه بر چهار سون سگمنت، این ماژول دارای یک “:” در مرکز است که ایجاد پروژههای مبتنی بر زمان را بسیار آسان خواهد کرد.
ماژول تی ام 1637 با ولتاژ تغذیه 3.3 تا 5 ولت کار میکند و از طریق دو پایه داده، به VCC (قطب مثبت) و GND (قطب منفی) نیاز دارد. برای ارتباط راحتتر با این ماژول، آردوینو کتابخانههایی دارد که کار را برای ما آسان خواهد کرد.
آشنایی با مهمترین پینهای ماژول TM1637 پیش از ساخت ساعت با ماژول سون سگمنت و آردوینو
CLK: پین ورودی ساعت است (به هر پین دیجیتال آردوینو متصل میشود).
DIO: پین ورودی و خروجی داده است. (به هر پین دیجیتال آردوینو متصل میشود).
VCC: پین قطب مثبت (آن را به منبع تغذیه 3.3 ولت تا 5 ولت وصل نمایید).
GND: پین قطب منفی.
آشنایی با اتصالات ماژول سون سگمنت تی ام 1637 با Arduino UNO پیش از ساخت ساعت با ماژول سون سگمنت و آردوینو
اتصالات TM1637 با آردوینو بسیار ساده است. شما فقط باید چهار سیم برای داشته باشید؛ دو سیم برای برق و دو سیم دیگر برای کنترل صفحه نمایش.
انرژی مورد نیاز این ماژول از خروجی 5 ولت آردوینو تأمین میشود. پایههای CLK و DIO هم به پایههای دیجیتال متصل هستند. (مشابه شکل زیر)
هیچ یک از پینهای مورد استفاده در Arduino حیاتی نیستند زیرا ماژول به ویژگی خاصی برای پین نیاز ندارد بنابراین اگر میخواهید از پینهای مختلف استفاده کنید، میتوانید با خیال راحت این کار را انجام دهید فقط مطمئن شوید که شماره پینها را در کد تغییر دهید تا تغییرات در اتصالات نشان داده شوند.
نصب کتابخانه TM1637 جهت ساخت ساعت با ماژول سون سگمنت و آردوینو
برای ارتباط با تراشه TM1637، باید از کتابخانههای آردوینو استفاده نمایید. Avishay Orpaz یک کتابخانه عالی برای نمایشگرهای TM1637 میباشد. این کتابخانه چند عملکرد داخلی دارد که کنترل نمایشگر را نسبتاً آسان میکند بنابراین شما فقط باید مشخص کنید که کدام شماره نمایش داده شده و کنترل شود.
برای نصب کتابخانه، به آدرس زیر بروید:
Sketch > Include Library > Manage
با تایپ tm1637 جستجوی خود را فیلتر نمایید. بعد به دنبال کتابخانه Avishay Orpaz باشید. سپس Install را انتخاب کنید.
آشنایی با کد اولیه آردوینو به منظور ساخت ساعت با ماژول سون سگمنت و آردوینو
در زیر یک برنامه آزمایشی پیش از ساخت ساعت با ماژول سون سگمنت و آردوینو وجود دارد که مجموعهای از فرآیندهای مختلف را انجام میدهد. این مسیر را طی کرده و آن را در آردوینو خود بارگذاری کنید.
// Include the library
#include
// Define the connections pins
#define CLK 3
#define DIO 4
// Create a display object of type TM1637Display
TM1637Display display = TM1637Display(CLK, DIO);
// Create an array that turns all segments ON
const uint8_t allON[] = {0xff, 0xff, 0xff, 0xff};
// Create an array that turns all segments OFF
const uint8_t allOFF[] = {0x00, 0x00, 0x00, 0x00};
// Create an array that sets individual segments per digit to display the word "dOnE"
const uint8_t done[] = {
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
SEG_C | SEG_E | SEG_G, // n
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
};
// Create degree celsius symbol
const uint8_t celsius[] = {
SEG_A | SEG_B | SEG_F | SEG_G, // Degree symbol
SEG_A | SEG_D | SEG_E | SEG_F // C
};
void setup() {
}
void loop() {
// Set the brightness to 5 (0=dimmest 7=brightest)
display.setBrightness(5);
// Set all segments ON
display.setSegments(allON);
delay(2000);
display.clear();
// Show counter 0-9
int i;
for (i = 0; i < 10; i++) {
display.showNumberDec(i);
delay(50);
}
delay(2000);
display.clear();
display.showNumberDec(-12); // Prints _-12
delay(2000);
display.clear();
display.showNumberDec(-999); // Prints -999
delay(2000);
display.clear();
display.showNumberDec(31, false); // Prints __31
delay(2000);
display.clear();
display.showNumberDec(31, true); // Prints 0031
delay(2000);
display.clear();
display.showNumberDec(14, false, 2, 1); // Prints _14_
delay(2000);
display.clear();
display.showNumberDec(-5, false, 3, 0); // Prints _-5_
delay(2000);
display.clear();
// Prints 12:34
display.showNumberDecEx(1234, 0b11100000, false, 4, 0);
delay(2000);
display.clear();
// Prints 15°C
int temperature = 15;
display.showNumberDec(temperature, false, 2, 0);
display.setSegments(celsius, 2, 2);
delay(2000);
display.clear();
// Prints dOnE
display.setSegments(done);
while(1);
}
توضیح کد
ساخت طرح مدنظر، با گنجاندن کتابخانه و تعریف پینهای مورد استفاده برای اتصال نمایشگر TM1637 آغاز میشود.
#include
#define CLK 3
#define DIO 4
در مرحله بعد، نمونه جدیدی از کلاس TM1637Display با تابع TM1637Display () ایجاد میشود. این عملکرد به دو پارامتر احتیاج دارد؛ یکی پین CLK و دیگری پین DIO.
TM1637Display display = TM1637Display(CLK, DIO);
برای تنظیم بخشهای جداگانه نمایشگر، دو روش وجود دارد. چندین آرایه قبل از بخش ایجاد کد تنظیم شده که بخشهای جداگانه نمایش را مشخص خواهند کرد. ما از تابع setSegmentها () استفاده میکنیم.
اولین گزینه برای تنظیم بخشهای منفرد، استفاده از اعداد هگزادسیمال است. Hexadecimal 0xFF به صورت باینری به 11111111 ترجمه میشود و همه بخشها را روشن میکند. به عنوان مثال، 0xEF به 11101111 ترجمه شده و همه بخشها را به جز بخش E روشن خواهد کرد حال آنکه 0x00 تمام بخشها را خاموش مینماید.
توجه داشته باشید که شمارش از راست به چپ انجام میشود بنابراین بخش 11111111 مربوط به (نقطه) GFEDCBA است.
// Create an array that turns all segments ON
const uint8_t allON[] = {0xff, 0xff, 0xff, 0xff};
// Create an array that turns all segments OFF
const uint8_t allOFF[] = {0x00, 0x00, 0x00, 0x00};
دیگر روش برای تنظیم هر کدام از سگمنتها، مشخص کردن سگمنتی است که میخواهید روشن شود. این شیوه از روش اولیه آسانتر است. به کدهای زیر نگاهی بیندازید. اولیه آرایه dOne را نشان میدهد حال آنکه دومین آرایه C° را نشان خواهد داد.
// Create an array that sets individual segments per digit to display the word "dOnE"
const uint8_t done[] = {
SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
SEG_C | SEG_E | SEG_G, // n
SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
};
// Create °C symbol
const uint8_t celsius[] = {
SEG_A | SEG_B | SEG_F | SEG_G, // °
SEG_A | SEG_D | SEG_E | SEG_F // C
};
چیزی برای تنظیم وجود ندارد بنابراین قسمت تنظیمات خالی نگه داشته شود.
void setup() { }
در بخش حلقه کد، از بسیاری از توابع کتابخانه استفاده کردهایم که در ادامه یکی از آنها را بررسی میکنیم؛
کد setBrightness (تنظیم روشنایی) برای ساخت ساعت با ماژول سون سگمنت و آردوینو
این عملکرد برای تنظیم روشنایی صفحه نمایش استفاده میشود. میتوانید سطح روشنایی را از 0 (کمترین روشنایی) تا 7 (بالاترین میزان روشنایی) مشخص نمایید. آرگومان دوم اختیاری است و میتواند برای روشن یا خاموش کردن نمایشگر استفاده شود. درست (نمایشگر روشن)، غلط (نمایشگر خاموش).
به عنوان مثال، display.setBrightness (5) روشنایی را روی 5 تنظیم میکند در حالی که display.setBrightness (5 ، false) نمایشگر را خاموش میکند.
کد setSegments (سگمنتها، طول، موقعیت) برای ساخت ساعت با ماژول سون سگمنت و آردوینو
از این عملکرد میتوان برای تنظیم بخشهای جداگانه نمایشگر استفاده کرد. اولین آرگومان آرایهای است که شامل اطلاعات بخش میشود. آرگومان دوم تعداد ارقام به روزرسانی شده (0–4) را مشخص خواهد کرد. اگر میخواهید کلمه “dOnE” را چاپ کنید، عدد 4 خواهد بود. برای نماد ” ° C ” اما، عدد 2 خواهد بود. آرگومان سوم موقعیتی را که میخواهید از آن چاپ کنبد، تعیین خواهد کرد (0 چپترین و 3 راستترین).
توجه داشته باشید که آرگومان دوم و سوم تابع اختیاری است بنابراین اگر میخواهید همه ارقام نمایشگر را بهروز کنید، میتوانید از آنها صرف نظر نمایید. به عنوان مثال ، قطعه زیر ابتدا تمام بخشهای نمایشگر را روشن کرده و سپس “dOnE” را چاپ میکند.
// Set all segments ON
display.setSegments(allON);
// Prints dOnE
display.setSegments(done);
با این حال، اگر میخواهید فقط دو رقم آخر نمایشگر را برای چاپ نماد “° C” بهروز کنید از کد زیر استفاده میکنید.
// Prints __°C
display.setSegments(celsius, 2, 2);
کد showNumberDec (تعداد، پیشروها، طول، موقعیت) جهت ساخت ساعت با ماژول سون سگمنت و آردوینو
این عملکردی است که بیشترین کاربرد را خواهد داشت. اولین آرگومان عددی است که میخواهید روی صفحه نمایش پخش شود. بقیه استدلالها اختیاری است.
به عنوان مثال، قطعه کد زیر از 0 تا 9 شمارش میشود و سپس -12 و -999 را بر روی صفحه نمایش چاپ میکند.
// Show counter 0-9
int i;
for (i = 0; i < 10; i++) {
display.showNumberDec(i);
delay(50);
}
display.showNumberDec(-12); // Prints _-12
display.showNumberDec(-999); // Prints -999
از آرگومان دوم میتوان عددی را با صفرهای اصلی پر کرد. با تنظیم این گزینه، صفرهای اصلی به یک عدد اضافه میشود و با تنظیم نادرست آن، عدد را همانطور که هست چاپ میکند.
display.showNumberDec(31, false); // Prints __31
display.showNumberDec(31, true); // Prints 0031
مثلا، آرگومان سوم و چهارم همان تابع قبلی است. طول تعداد ارقام مورد نظر برای بهروزرسانی را مشخص میکند (0–4) و موقعیتی که میخواهید از آن چاپ کنید را تعیین خواهد کرد (0-چپترین ، 3-راستترین).
بنابراین ، اگر میخواهید عددی را در وسط نمایشگر نشان دهید، مینویسید:
display.showNumberDec(14, false, 2, 1); // Prints _14_
display.showNumberDec(-5, false, 3, 0); // Prints _-5_
کد showNumberDecEx (تعداد، نقاط، پیشروها، طول، موقعیت) برای ساخت ساعت با ماژول سون سگمنت و آردوینو
این یک نسخه توسعهیافته از عملکرد showNumberDec () است. میبینید که تنها استدلال دوم تفاوت دارد. این آرگومان به شما امکان میدهد نقاط نمایش را کنترل کنید. میتوانید از مقادیر زیر بهره ببرید:
برای نمایشگرهای TM1637 با نقاط بین هر رقم
showNumberDecEx (تعداد، نقاط، پیشروها، طول، موقعیت)
showNumberDecEx (تعداد، نقاط، پیشروها، طول، موقعیت)
بنابراین اگر میخواهید ساعتی با علامت “:” در وسط فعال شود، از کد زیر استفاده نمایید:
// Prints 12:34 display.showNumberDecEx(1234, 0b11100000, false, 4, 0);
ساخت ساعت با ماژول سون سگمنت و آردوینو
یکی دیگر از کاربردهای معمول صفحه نمایش TM1637، جفت کردن آن با ماژول DS3231 RTC و ایجاد ساعت 24 ساعته است.
در مرحله بعد، باید همانطور که در زیر نشان داده شده، به DS3231 متصل شویم. توجه داشته باشید که نمایشگر TM1637 به همان روش قبلی متصل شده است.
طرح زیر زمان را در قالب 24 ساعته نشان میدهد. این کد از کتابخانه Adafruit RTC استفاده میکند که میتوانید با جستجوی ‘RTClib which، آن را از طریق مدیر کتابخانه در Arduino IDE نصب کنید.
// Include the libraries
#include "RTClib.h"
#include
// Define the connections pins
#define CLK 3
#define DIO 4
// Create rtc and display object
RTC_DS3231 rtc;
TM1637Display display = TM1637Display(CLK, DIO);
void setup() {
// Begin serial communication
Serial.begin(9600);
// Check if RTC is connected correctly
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
// Check if the RTC lost power and if so, set the time
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// The following line sets the RTC to the date & time this sketch was compiled:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
// Set the display brightness (0-7)
display.setBrightness(5);
// Clear the display
display.clear();
}
void loop() {
// Get current date and time
DateTime now = rtc.now();
// Create time format to display
int displaytime = (now.hour() * 100) + now.minute();
// Display the current time in 24 hour format with leading zeros and a center colon enabled
display.showNumberDecEx(displaytime, 0b11100000, true);
delay(1000);
}
سلام
موقع کامپایل کردن اررور میده بورد انتخاب شده رو میده .. تغییر هم دادم بورد رو ولی بازم اررور پابرجا هست
سلام
با توجه به اینکه میفرمایید ارور میده، باید تصویری از ارور دریافت شده به ما بدین که بتونیم راهنماییتون کنیم. بیزحمت تو تلگرام یا ایتا پیام بدین و از ارور عکس بفرستید تا کمکتون کنیم.
با تشکر از همراهی شما
سلام خسته نباشید
کدی که دادید ارور میده من library سون سگمنت رو هم نصب کردم اما بازم مشکلی داره…ممنون میشم اگه راهنمایی کنید
ارورش اینه:
Clock:2:10: fatal error: RTClib.h: No such file or directory
#include “RTClib.h”
^~~~~~~~~~
compilation terminated.
exit status 1
RTClib.h: No such file or directory
سلام
کدهای قرار داده شده داخل مطلب اصلاح شدند
با تشکر از توجه شما