درود اساتید محترم
چون برای نخستین باری بود که قصد داشتم ساعت دیجیتال بسازم، لذا بجای خریدن ماژول ساعت دقیق DS3232، ماژول ساعت دقیق DS1307 و سون سگمنت TM1637 رو از فروشگاه آفتاب رایانه خریدم. امّا در اینترنت آموزش و کدی که مناسب با اکوئیپمنت من باشه پیدا نکردم، تا اینکه در سایت Arduino.cc یک آموزش به زبان فکر کنم فرانسوی (یا زبانی دیگر) پیدا کردم. پس از اسمبل سخت افزار و آپلود کد مربوط در آردوینو، ساعت کار نکرد. در بخش Serial Monitor عملکرد رو چک کردم و دیدم ساعت کار می کنه. پس متوجه شدم که خروجی به سون سگمنت انجام نمیشه. چون آردوینو دست ساز خودم بود، روی آردوینو Uno اصلی (اورجینال نیست) تست کردم که شاید مشکل از آردوینوی خودم بوده باشه ولی نتیجه یکی بود.
سیم ها، کانکشن ها، ماژول ها، و همه چیز رو چک و تست کردم. همه چیز سالمه و خوب کار می کنه. ولی وقتی طبق آموزش (که خیلی خیلی هم ساده ست) قطعات رو اسمبل می کنم، باز هم سون سگمنت روشن نمیشه و ساعت رو نشون نمی ده..
در زیر، لینک آموزش مورد بحث هست :
4-digit RTC Clock
تصویر آموزش اسمبل سخت افزار :
تصویر ساعت اسمبل شده من :
این هم از کدی که در آموزش آورده شده :
کد:
// Reloj digital mostrado a través de un display de 4 dígitos (digitaltube), y con el tiempo
// proporcionado por un Tiny RTC de Catalex.
// Software programado por PentiumCadiz 7-1-17, basado en el ejemplo de la librería DS1307RTC
// y en el ejemplo de uso del display de Prometec http://www.prometec.net/display-con-interface/
#include "Wire.h"
#include "Time.h"
#include "DS1307RTC.h"
#include "TM1637.h"
#define CLK 9
#define DIO 8
TM1637 Display1(CLK, DIO);
int8_t Digitos[] = {0,1,2,3};
int horas;
int minutos;
boolean alterna;
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println("DS1307RTC Read Test");
Serial.println("-------------------");
Display1.init();
Display1.set();
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Ok, Time = ");
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
horas = tm.Hour;
minutos = tm.Minute;
CalculaDigitos(horas, minutos);
if (alterna)
{
Display1.point(POINT_OFF);
alterna = false;
}
else
{
Display1.point(POINT_ON);
alterna = true;
}
} else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}
void CalculaDigitos( int hor, int minu)
{
int8_t Digit0 = minu %10 ;
int8_t Digit1 = (minu % 100) / 10 ;
int8_t Digit2 = hor % 10 ;
int8_t Digit3 = (hor % 100) / 10 ;
Digitos[3] = Digit0 ;
Digitos[2] = Digit1 ;
Digitos[1] = Digit2 ;
Digitos[0] = Digit3 ;
Display1.display(Digitos);
}
ابتدا ماژول ساعت دقیق DS1307 رو توسط اسکچ Set Time از کتابخاته DS1307RTC دقیق کردم، و بعد کد فوق رو آپلود کردم..
لطفاً، بفرمائید مشکل کار از کجاست، و چطور ساعت به راه می افته.
پیشاپیش، سپاس..