4Digit 7 Segment Multiplex Display Module
ماژول نمایش 7 قطعه ای چهار رقمی
7Segment چهار رقمی
ورودی
ورودی
لیست المان های NSE-7SA4
Quantity | Code | Symbol |
---|---|---|
1 | 4Digit 7 Segment | 7Seg |
4 | NPN/PNP (BC548/558) | Q |
8 | 220 | R |
4 | 1K | R |
13pin | 1x13 SIL Right-Angle Male | Pin Header |
6cm x 4cm | Single Side with Solder Mask and Helper | PCB |
سون سگمنت ها نمایشگر هایی کوچک هستند که به جهت آنکه میتوانند به خوبی دیده شوند و درخشان تر هستند و به دلیل زاویه دید خوبی که دارند ، برای مواردی که احتیاج به دیده شدن از دور هم وجود داشته باشد ، انتخاب بسیار مناسبی است.
ماژول سون سگمنت یک نمایشگر دیجیتال بوده که مجهز به 7 عدد ال ای دی برای نمایش اعداد است. این ماژول الکترونیک دارای 7 ال ای دی بوده که هر یک، 1 سگمنت به شمار می آیند و در هنگام روشن شدن، به رنگ قرمز روشن می گردند. این نمایشگر دیجیتال در ابعادی برابر با 60×40 میلیمتر تولید شده و قابلیت نمایش 4 عدد را دارد. ولتاژ کاری این ماژول برابر با 5 ولت DC می باشد.
ماژول “نمایش 7 قطعهای چهار رقمی” یک قطعه الکترونیکی است که برای نمایش اعداد و ارقام به صورت دیجیتال در سیستمها و دستگاههای الکترونیکی مورد استفاده قرار میگیرد. این ماژول معمولاً شامل چهار نمایشگر هفت قطعهای (Seven-Segment Display) است که به هم متصل شدهاند و قادر به نمایش اعداد از 0 تا 9 است.
هر نمایشگر هفت قطعهای شامل هفت قطعه سگمنت (Segment) است که به صورت الفبایی A تا G نامگذاری میشوند. با ترکیب این هفت قطعه سگمنت در الگوهای مختلف، اعداد مختلف قابل نمایش هستند. علاوه بر اعداد، برخی نمایشگرهای هفت قطعهای قادر به نمایش نمادهای خاص مانند نقطه (Decimal Point) هم هستند.
ماژول “نمایش 7 قطعهای چهار رقمی” عمدتاً برای نمایش اعداد چهار رقمی استفاده میشود. این ماژول دارای چهار عدد نمایشگر هفت قطعهای مستقل است که به صورت موازی و یا سری به یکدیگر متصل میشوند. هرکدام از این نمایشگرها توسط سیگنالهای کنترلی مستقلی که از میکروکنترلر یا سایر منابع سیگنال تأمین میشود، کنترل میشوند.
با استفاده از ماژول “نمایش 7 قطعهای چهار رقمی”، میتوان اعداد و ارقام مختلف را به صورت دیجیتال در دستگاهها نمایش داد. این ماژول معمولاً در دستگاههایی مانند ساعتهای دیجیتال، تقویمها، ابزارهای اندازهگیری و دستگاههای صنعتی استفاده میشود.
برای استفاده از این ماژول، عموماً نیاز به تأمین تغذیه مناسب، ارسال سیگنالهای کنترلی به نمایشگرها و تنظیم مقادیر مورد نمایش در ماژول دارید. همچنین، برخی ماژولها مجهز به ویژگیهایی مانند تنظیم روشنایی و تنظیم زمان نمایش هستند.
/**
Arduino Digital Alarm Clock
bY: Farhad Nikkhah
https://www.NikiSite.com
https://www.nikisite.com/product/nse-7sa4/
https://www.nikisite.com/product/nse-rmds/
https://www.nikisite.com/product/nse-keyx/
*/
//==========================================================================================
#include
#include "Button.h"
#include "AlarmTone.h"
#include "Clock.h"
#include "config.h"
const int COLON_PIN = 13;
const int SPEAKER_PIN = A3;
Button hourButton(A0);
Button minuteButton(A1);
Button alarmButton(A2);
AlarmTone alarmTone;
Clock clock;
SevSeg sevseg;
enum DisplayState {
DisplayClock,
DisplayAlarmStatus,
DisplayAlarmTime,
DisplayAlarmActive,
DisplaySnooze,
};
DisplayState displayState = DisplayClock;
long lastStateChange = 0;
void changeDisplayState(DisplayState newValue) {
displayState = newValue;
lastStateChange = millis();
}
long millisSinceStateChange() {
return millis() - lastStateChange;
}
void setColon(bool value) {
digitalWrite(COLON_PIN, value ? LOW : HIGH);
}
//==========================================================================================
void displayTime() {
DateTime now = clock.now();
bool blinkState = now.second() % 2 == 0;
sevseg.setNumber(now.hour() * 100 + now.minute());
setColon(blinkState);
}
//==========================================================================================
void clockState() {
displayTime();
if (alarmButton.read() == Button::RELEASED && clock.alarmActive()) {
// Read alarmButton has_changed() to clear its state
alarmButton.has_changed();
changeDisplayState(DisplayAlarmActive);
return;
}
if (hourButton.pressed()) {
clock.incrementHour();
}
if (minuteButton.pressed()) {
clock.incrementMinute();
}
if (alarmButton.pressed()) {
clock.toggleAlarm();
changeDisplayState(DisplayAlarmStatus);
}
}
//==========================================================================================
void alarmStatusState() {
setColon(false);
sevseg.setChars(clock.alarmEnabled() ? " on" : " off");
if (millisSinceStateChange() > ALARM_STATUS_DISPLAY_TIME) {
changeDisplayState(clock.alarmEnabled() ? DisplayAlarmTime : DisplayClock);
return;
}
}
//==========================================================================================
void alarmTimeState() {
DateTime alarm = clock.alarmTime();
sevseg.setNumber(alarm.hour() * 100 + alarm.minute(), -1);
if (millisSinceStateChange() > ALARM_HOUR_DISPLAY_TIME || alarmButton.pressed()) {
changeDisplayState(DisplayClock);
return;
}
if (hourButton.pressed()) {
clock.incrementAlarmHour();
lastStateChange = millis();
}
if (minuteButton.pressed()) {
clock.incrementAlarmMinute();
lastStateChange = millis();
}
if (alarmButton.pressed()) {
changeDisplayState(DisplayClock);
}
}
//==========================================================================================
void alarmState() {
displayTime();
if (alarmButton.read() == Button::RELEASED) {
alarmTone.play();
}
if (alarmButton.pressed()) {
alarmTone.stop();
}
if (alarmButton.released()) {
alarmTone.stop();
bool longPress = alarmButton.repeat_count() > 0;
if (longPress) {
clock.stopAlarm();
changeDisplayState(DisplayClock);
} else {
clock.snooze();
changeDisplayState(DisplaySnooze);
}
}
}
//==========================================================================================
void snoozeState() {
sevseg.setChars("****");
if (millisSinceStateChange() > SNOOZE_DISPLAY_TIME) {
changeDisplayState(DisplayClock);
return;
}
}
//==========================================================================================
void setup() {
Serial.begin(115200);
clock.begin();
hourButton.begin();
hourButton.set_repeat(500, 200);
minuteButton.begin();
minuteButton.set_repeat(500, 200);
alarmButton.begin();
alarmButton.set_repeat(1000, -1);
alarmTone.begin(SPEAKER_PIN);
pinMode(COLON_PIN, OUTPUT);
byte digits = 4;
byte digitPins[] = { 2, 3, 4, 5 };
byte segmentPins[] = { 6, 7, 8, 9, 10, 11, 12 };
bool resistorsOnSegments = false;
bool updateWithDelays = false;
bool leadingZeros = true;
bool disableDecPoint = true;
sevseg.begin(DISPLAY_TYPE, digits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
//==========================================================================================
void loop() {
sevseg.refreshDisplay();
switch (displayState) {
case DisplayClock:
clockState();
break;
case DisplayAlarmStatus:
alarmStatusState();
break;
case DisplayAlarmTime:
alarmTimeState();
break;
case DisplayAlarmActive:
alarmState();
break;
case DisplaySnooze:
snoozeState();
break;
}
}
دیدگاهها
پاکسازی فیلترهیچ دیدگاهی برای این محصول نوشته نشده است.