مشکل در کد آی سی شیفت رجیستر74ch595

با سلام و عرض ادب

مشکل اینجاست که هرزمان که ماژول ریست می شود تعداد از ال ای دی های در حالت روشن هستند چه تغییر ی در کد بدیم که بعد از ریست هیچ یک از ال ای دی های در حالت 1 قرار نگیرند؟ 

باتشکر

// تعریف پایه‌ها
int dataPin = 14;  (DS)
int latchPin = 5;  (ST_CP)
int clockPin = 4;  (SH_CP)
int button1Pin = 16; // پایه دکمه ۱
int button2Pin = 12; // پایه دکمه ۲

void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
}

void loop() {
if (digitalRead(button1Pin) == LOW) {
// ارسال داده به آی‌سی شیفت رجیستر
shiftOut(dataPin, clockPin, MSBFIRST, B00000001);
digitalWrite(latchPin, HIGH); // فعال‌سازی خروجی‌ها
} else if (digitalRead(button2Pin) == LOW) {

shiftOut(dataPin, clockPin, MSBFIRST, B00000010); // ال‌ای‌دی ۲ روشن می‌شود
digitalWrite(latchPin, HIGH);

} else {

shiftOut(dataPin, clockPin, MSBFIRST, B00000000);
digitalWrite(latchPin, HIGH); 

}
}

با سلام

فکر میکنم مشکل شما در پایه latchPin باشد.

زمانی که این پایه HIGH می شود دیتای که در لچ قرار دارد به خروجی برود.

برای جلوگیری از این امر پیشنهاد میکنم این موارد را بررسی کنید.

1. ببینید که کدام پایه در زمان روشن شدن میکرو در حالت LOW باقی میاند و از آن پایه برای این امر استفاده کنید

در صورتی که سرعت برای شما مهم نیست

2. استفاده از IC اشمیت تریگر در لاین های دیتا

3.استفاده از مقاومت و یک خازن بر روی این لاین که تاخیر بوت شدن میکرو را در زمین پایه درست کند.

4. استفاده از مقاومت بین این لاین و لاین زمین

 

 

میخواهید پس از ریست شدن همان دیتایی که بر روی led ها بود باقی بماند یا میخواهید تمام led ها خاموش بشود؟؟

ضمن تشکر از توجه شما
می خوام تمام ال ای دی ها خاموش باشند
هنگام راه اندازی ویا ریست کردن تعدادی از ال ای دی ها روشن وخاموش می شوند

آیا با موازی کردن یک خازن در ورودی مشکل برطرف نمی شود