با عرض سلام خدمت دوستان عزیز .
من یک پروژه ساخت ساعت دیجیتال دارم که مدارات اونو بصورت زیر طراحی کردم .برای سون سگمنت های این ساعت از led های 12 ولتی استفاده شده که جهت حل مشکل و کارکردنشون با آردوینو از uln2803 استفاده کردم .
مشکلی که دارم اینه که برای سوییچ هر کاراکتر چون کلا آند ها رو مشترک گرفتم بخاطر 12 ولت ،سعی کرد م با کنترل آی سی uln و خاموش کردن هر ای سی کارکتر رو خاموش کنم که قابل کنترل شه .
اما حالا هر کاراکتری که بخوام روشن کنم تمامی خروجی های آی سی Uln همه با هم 0 یا همه با هم 1 میشن و تکی اصلا کار نمیکنه مگر زمانی که هر 4 آی سی رو روشن کنی و 4 تایی باهم کار کنند .در مورد پایه 10 آی سی uln هم تمامی حالات ممکن یعنی زمین بشه یا 5 ولت یا 12 ولت رو تست کردم تاثیری نداره ظاهرا . مهمان عزیز شما حق دیدن لینک ها را ندارید
عضویت
مهمان عزیز شما حق دیدن لینک ها را ندارید
عضویت
مهمان عزیز شما حق دیدن لینک ها را ندارید
عضویت
برنامه هم بصورت زیر هست ولی اصلا نیازی به برنامه و آردوینو نیست چون مدار ال ای دیا ظاهرا یک مشکلی داره . #include "SevSeg.h"
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
SevSeg Display;
const int ledPin = A0;
unsigned int number;
unsigned long currentMillis;
unsigned int Hour;
int ledState = LOW;
unsigned long previousMillis = 0;
const long interval = 500;
void setup()
{
pinMode(ledPin, OUTPUT);
byte numDigits = 4;
byte digitPins[] = {10, 11, 12, 13};
byte segmentPins[] = {8, 7, 6, 5, 4, 3, 2, 1};
bool resistorsOnSegments = true;
bool updateWithDelaysIn = true;
byte hardwareConfig = COMMON_ANODE;
Display.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
Display.setBrightness(100);
}
void loop()
{
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
if (ledState == LOW)
{
ledState = HIGH;
}
else
{
ledState = LOW;
}
digitalWrite(ledPin, ledState);
}
tmElements_t tm;
if (RTC.read(tm))
{
Hour = tm.Hour;
if (tm.Hour > 12)
{
if (tm.Hour == 13) Hour = 1;
if (tm.Hour == 14) Hour = 2;
if (tm.Hour == 15) Hour = 3;
if (tm.Hour == 16) Hour = 4;
if (tm.Hour == 17) Hour = 5;
if (tm.Hour == 18) Hour = 6;
if (tm.Hour == 19) Hour = 7;
if (tm.Hour == 20) Hour = 8;
if (tm.Hour == 21) Hour = 9;
if (tm.Hour == 22) Hour = 10;
if (tm.Hour == 23) Hour = 11;
}
else
{
if (tm.Hour == 0) Hour = 12;
}
}
number = Hour * 100 + tm.Minute;
Display.setNumber(number);
Display.refreshDisplay();
}
در عکس زیر مشکل مشخصه که با تحریک کارکتر یک و قسمت A کل led ها روشن شدن و بجای روشن شدن فقط یک پایه uln همه روشن شدن .
ممنون میشم راهنمایی کنید .