int digit1 = 11 ; // پین صفحه نمایش PWM 12 (digit1 از سمت راست و A1 رایج است)
int digit2 = 10 ; //پایه نمایشگر PWM 9 (digit2 معمولی A2 است)
int digit3 = 9 ; //پایه نمایشگر PWM 8 (digit3 آندهای رایج A3 است)
int digit4 = 6 ; //PWM صفحه نمایش پایه 6 (digit4 آندهای معمولی است، از سمت چپ)
int segA = 2 ; //نمایش پین 11
int segB = 3 ; //نمایش پین 7
int segC = 4 ; //صفحه نمایش 4
int segD = 5 ; //نمایش پین 2
int segE = 12 ; //پین نمایش 1
int segF = 7 ; //صفحه نمایش 10
int segG = 8 ; //نمایش پین 5
int segDP = 13 ; // نمایش پین 3
پین int = 1 ;
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC ;
بایت SW0 = A0 ;
بایت SW1 = A1 ;
بایت SW2 = A2 ;
// استفاده از هگزا در تبدیل زسیمال
int zh , uh , ore ;
int zm , um , miniti ;
تنظیم خالی () {
// Serial.begin(57600);
سیم . شروع ()؛
RTC شروع ()؛
// RTC.adjust(DateTime(__DATE__, __TIME__));
// اگر به تنظیم ساعت نیاز دارید... فقط // را از خط بالای این حذف کنید
// کد قطعه برای چشمک زن LED
سیم . startTransmission ( 0x68 )؛
سیم . نوشتن ( 0x07 )؛ // نشانگر را به آدرس SQW منتقل کنید
// Wire.write(0x00); // پین SQW را خاموش می کند
سیم . نوشتن ( 0x10 )؛ // 0x10 (هگز) 00010000 (دودویی) را برای کنترل ثبت می فرستد - موج مربعی را در 1 هرتز روشن می کند
// Wire.write(0x13); // ارسال 0x13 (هگزا) 00010011 (دودویی) 32 کیلوهرتز
سیم . endTransmission ();
اگر ( ! RTC . در حال اجرا ()) {
سریال . println ( "RTC در حال اجرا نیست!" )
// خط زیر RTC را بر روی تاریخ و زمانی تنظیم می کند که این طرح کامپایل شده است
RTC تنظیم ( DateTime ( __DATE__ ، __TIME__ ));
}
// dht.begin();
pinMode ( segA ، OUTPUT )؛
pinMode ( segB ، OUTPUT )؛
pinMode ( segC ، OUTPUT )؛
pinMode ( segD ، OUTPUT )؛
pinMode ( segE ، OUTPUT )؛
pinMode ( segF , OUTPUT )؛
pinMode ( segG ، OUTPUT )؛
pinMode ( segDP ، OUTPUT )؛
pinMode ( پین ، OUTPUT )؛
pinMode ( digit1 , OUTPUT )؛
pinMode ( digit2 , OUTPUT )؛
pinMode ( digit3 ، OUTPUT )؛
pinMode ( digit4 ، OUTPUT )؛
// pinMode(13، OUTPUT);
// Serial.begin(9600);
//Serial.println("تست برای niq_ro");
pinMode ( SW0 ، INPUT )؛ // برای این کار از یک سوئیچ کشویی استفاده کنید
pinMode ( SW1 ، INPUT )؛ // سوئیچ دکمه فشاری وجود ندارد
pinMode ( SW2 ، INPUT )؛ // سوئیچ دکمه فشاری وجود ندارد
digitalWrite ( SW0 ، HIGH ); // کشش روشن است
digitalWrite ( SW1 ، HIGH );
digitalWrite ( SW2 ، HIGH );
}
حلقه خالی () {
DateTime اکنون = RTC . اکنون ()؛
int timp = اکنون . ساعت () * 100 + اکنون . دقیقه ()
// int timp = (now.minute()، DEC);
// displayNumber(12); // این عدد برای نمایش است
// int timp = 1234;
// Serial.print(now.hour(), DEC);
// Serial.print(":");
// Serial.print(now.minute(), DEC);
// Serial.print(" -> ");
// Serial.print(timp);
// Serial.println(" !");
// نمایش قطعات
for(int i = 250 ; i >0 ; i--) {
if (timp >= 1000) displayNumber01(timp);
else displayNumber02(timp);
}
for(int i = 250 ; i >0 ; i--) {
if (timp >= 1000) displayNumber03(timp);
else displayNumber04(timp);
}
if (!(digitalRead(SW0))) set_time(); // hold the switch to set time
//blinking
}
void set_time() {
byte minutes1 = 0;
byte hours1 = 0;
byte minutes = 0;
byte hours = 0;
while (!digitalRead(SW0)) // set time switch must be released to exit
{
minutes1=minutes;
hours1=hours;
while (!digitalRead(SW1)) // set minutes
{
minutes++;
// converting hexa in zecimal:
zh = hours / 16;
uh = hours - 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes - 16 * zm ;
miniti = 10 * zm + um;
for(int i = 20 ; i >0 ; i--) {
displayNumber01(ore*100+miniti);
}
if ((minutes & 0x0f) > 9) minutes = minutes + 6;
if (minutes > 0x59) minutes = 0;
// Serial.print("Minutes = ");
if (minutes >= 9) Serial.print("0");
// Serial.println(minutes, HEX);
delay(150);
}
while (!digitalRead(SW2)) // set hours
{
hours++;
// converting hexa in zecimal:
zh = hours / 16;
uh = hours - 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes - 16 * zm ;
miniti = 10 * zm + um;
for(int i = 20 ; i >0 ; i--) {
displayNumber01(ore*100+miniti);
}
if ((hours & 0x0f) > 9) hours = hours + 6;
if (hours > 0x23) hours = 0;
// Serial.print("Hours = ");
if (hours <= 9) Serial.print("0");
Serial.println(hours, HEX);
delay(150);
}
Wire.beginTransmission(0x68); // activate DS1307
Wire.write(0); // where to begin
Wire.write(0x00); //seconds
Wire.write(minutes); //minutes
Wire.write(0x80 | hours); //hours (24hr time)
Wire.write(0x06); // Day 01-07
Wire.write(0x01); // Date 0-31
Wire.write(0x05); // month 0-12
Wire.write(0x09); // Year 00-99
Wire.write(0x10); // Control 0x10 produces a 1 HZ square wave on pin 7.
Wire.endTransmission();
// converting hexa in zecimal:
zh = hours / 16;
uh = hours - 16 * zh ;
ore = 10 * zh + uh;
zm = minutes / 16;
um = minutes - 16 * zm ;
miniti = 10 * zm + um;
for(int i = 20 ; i >0 ; i--) {
displayNumber01(ore*100+miniti);
}
// delay(150);
}
}
void displayNumber01(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
void displayNumber02(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, LOW);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
void displayNumber03(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
digitalWrite(digit1, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
void displayNumber04(int toDisplay) {
#define DISPLAY_BRIGHTNESS 500
#define DIGIT_ON HIGH
#define DIGIT_OFF LOW
for(int digit = 4 ; digit > 0 ; digit--) {
//Turn on a digit for a short amount of time
switch(digit) {
case 1:
lightNumber(10);
digitalWrite(segDP, HIGH);
break;
case 2:
digitalWrite(digit2, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 3:
digitalWrite(digit3, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
case 4:
digitalWrite(digit4, DIGIT_ON);
digitalWrite(segDP, HIGH);
break;
}
lightNumber(toDisplay % 10);
toDisplay /= 10;
delayMicroseconds(DISPLAY_BRIGHTNESS);
//Turn off all segments
lightNumber(10);
//Turn off all digits
digitalWrite(digit1, DIGIT_OFF);
digitalWrite(digit2, DIGIT_OFF);
digitalWrite(digit3, DIGIT_OFF);
digitalWrite(digit4, DIGIT_OFF);
}
}
//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {
#define SEGMENT_ON LOW
#define SEGMENT_OFF HIGH
switch (numberToDisplay){
case 0:
digitalWrite(segA, SEGMENT_ON);
digitalWrite(segB, SEGMENT_ON);
digitalWrite(segC, SEGMENT_ON);
digitalWrite(segD, SEGMENT_ON);
digitalWrite ( segE , SEGMENT_ON ) ;
digitalWrite ( segF , SEGMENT_ON ) ;
digitalWrite ( segG , SEGMENT_OFF ) ;
زنگ تفريح ؛
مورد 1 :
digitalWrite ( segA , SEGMENT_OFF )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_OFF );
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_OFF ) ;
digitalWrite ( segG , SEGMENT_OFF ) ;
زنگ تفريح ؛
مورد 2 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_OFF ) ;
digitalWrite ( segD , SEGMENT_ON ) ;
digitalWrite ( segE , SEGMENT_ON ) ;
digitalWrite ( segF , SEGMENT_OFF ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
مورد 3 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_ON ) ;
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_OFF ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
مورد 4 :
digitalWrite ( segA , SEGMENT_OFF )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_OFF );
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_ON ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
مورد 5 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_OFF );
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_ON ) ;
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_ON ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
مورد 6 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_OFF );
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_ON ) ;
digitalWrite ( segE , SEGMENT_ON ) ;
digitalWrite ( segF , SEGMENT_ON ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
مورد 7 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_OFF );
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_OFF ) ;
digitalWrite ( segG , SEGMENT_OFF ) ;
زنگ تفريح ؛
مورد 8 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_ON ) ;
digitalWrite ( segE , SEGMENT_ON ) ;
digitalWrite ( segF , SEGMENT_ON ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
مورد 9 :
digitalWrite ( segA , SEGMENT_ON )؛
digitalWrite ( segB , SEGMENT_ON ) ;
digitalWrite ( segC , SEGMENT_ON ) ;
digitalWrite ( segD , SEGMENT_ON ) ;
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_ON ) ;
digitalWrite ( segG , SEGMENT_ON ) ;
زنگ تفريح ؛
// همه بخش ها روشن هستند
مورد 10 :
digitalWrite ( segA , SEGMENT_OFF )؛
digitalWrite ( segB , SEGMENT_OFF );
digitalWrite ( segC , SEGMENT_OFF ) ;
digitalWrite ( segD , SEGMENT_OFF );
digitalWrite ( segE , SEGMENT_OFF ) ;
digitalWrite ( segF , SEGMENT_OFF ) ;
digitalWrite ( segG , SEGMENT_OFF ) ;
زنگ تفريح ؛
}
}