نحوه گراند دادن یا زمین کردن به یک پایه led در آردینو و arm به طور جداگانه و با دستور خاص

سلام جناب مهندس معین
در مبحث arm شما در بخش led ماتریکس گفتید باید جداگانه به پایه ها گراند داده شود میخوام بدونم می تونیم در آردینو و stm32 f103 اینکار را بکنیم با چه چه دستوری ؟ چون میخوام مجموعه ای از ال دی ها را به میکرو stm32 و آردینو روشن و کنترل کنم

سلام دوست عزیز، فکر میکنم که دقیق متوجه سوال نشدم. برای چه منظوری گفتم که باید جداگانه به پایه ها گراند داده بشه؟
ما برای کنترل led matrix به یک سطر vcc میدادیم و به یک ستون gnd و اینکار رو با استفاده از high و low و open drain کردن پایه ها انجام میدادیم. همین روش رو میتونید در همه میکرو ها استفاده کنید. فقط باید ببینید که در هر میکرو با توجه به دیتاشیت و رجیستر های اون، چطوری میتونید gpio ها رو کنترل کنید.
من مطمئن نیستم که سوال شما همین بوده یا نه. اگر پاسخ سوالتون رو نگرفتید، لطفا با کمی توضیحات بیشتر یا اضافه کردن شماتیک و یا عکس زیر همین پست مجدد بپرسید.

تشکر از راهنمایی تون
سوالم دقیقا نحوه دادن گراند به یک پایه ال ای دی به صورت جداگانه بود چون به جای ال ای دی ماتریکس میخواستم یه مجموعه ای از ال ای دی را به صورت مستقل و تنها با چند دکمه کنترل و روشن و خاموش کنم که توی آموزش گفته بودید باید جداگانه گراند را به ال ای دی ها داد نه اینکه همهشون را به گراند وصل کرد و خود گراند باید را ست و و رست کرد برای بحث مولتی پلکس .
به همین دلیل پرسیدم در آردینو هم میخواستم ببینم میشه یا نه که به یه پایه مستقل گراند داد چون تو اینترنت گشتم صراحتا جایی گفته نشده بود و برای کنترل ال ای دی ماتریکس از آی سی MAX7219 استفاده شده بود

دوست عزیز، شما برای کنترل همزمان چندین led میتونید اونها رو یا سری ببندید و یا موازی و همه گراند ها رو یکی کنید و به راحتی به گراند منبع تغذیه وصل کنید.
کاری که ما در led matrix انجام دادیم، برای کنترل تکی تکی led ها هست. آی سی های کنترل led matrix هم گزینه مناسبی هستن و میتونید نور بهتری از اونها بگیرید چونکه خودشون داخلشون درایور ال ای دی دارن.
در مورد آردوینو هم اگر خواستید یک پایه رو open drain کنید که بتونه نقش گراند رو بازی کنه، اینکار شدنی هست. دقت کنید که آردوینو ها از میکرو های AVR استفاده میکنن و یکی از مود های پایه های اونها open drain هست.

با تشکر از پاسخ تون
ولی من میخواستم بدونم چطور در آردوینو چطور یک پایه رو open drain کنیم که بتونه نقش گراند رو بازی کنهچه سخت افزاری و نرم افزاری و دستور خاص

دوست عزیز، من احساس میکنم که سوال اولیه شما رو اشتباه متوجه شدم. شما برای دادن gnd به یک led میتونید یک سر led رو با یک مقاومت به پایه مثبت باتری وصل کنید و سر دیگر led رو به یکی از پایه میکرو وصل کنید. حالا اگر خروجی اون پایه high باشه، led روشن نمیشه و اگر low باشه، روشن میشه. پس برای دادن گراند به led میتونید به راحتی پایه میکرو رو در حالت output تعریف کنید و خروجی رو low کنید.
برعکس اینکار رو هم میشه کرد، یعنی led رو با یک مقاومت به منفی باتری وصل کنید و سر دیگه led رو به میکرو بزنید. حالا اگه پایه high باشه، روشن میشه و اگر low باشه روشن نمیشه.
فقط دقت کنید که در حالت اول، جریان از باتری شما وارد led میشه و در نهایت وارد پایه میکرو میشه و بعد از طریق منفی میکرو، به باتری برمیگرده (در حالت دوم هم برعکس). پس باید مراقب باشید که جریان بیش از حد وارد میکرو نشه. مدارهای محافظتی در میکروها وجود داره که جلوی over current رو میگیره ولی باز هم باید مراقب باشید.
اگر خواستید که جریان بالاتری رو قطع و وصل کنید، از ترانزیستور ها استفاده کنید.

خیلی ممنون از راهنمایی تون