4Digit 7 Segment Multiplex Display Module
ماژول نمایش 7 قطعه ای چهار رقمی
7Segment چهار رقمی
ورودی
دیتا جهت نمایش رقم (A-B-C-D-E-F-G-dot)
ورودی
انتخاب سگمنت جهت نمایش رقم (D1-D2-D3-D4)
لیست لمان های NSE-7SC4
Quantity | Code | Symbol |
---|---|---|
1 | 4Digit 7 Segment Common Cathode | 7Seg |
4 | PNP BC558 | 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 بوده است.
/**
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;
}
}
ایرانی - طراحی ایرانی – تولید ایرانی – حمایت ایرانی
دیدگاهها
پاکسازی فیلترهیچ دیدگاهی برای این محصول نوشته نشده است.