راه اندازی 7segment اردوینو

@Mohamad#5504
با سلام
ممنون از شما اقا محمد
بله درست فرمودید این قسمت رو من false نکرده بودم در قسمت شرط مود ها که الان درستش کردم
ولی جالبه هم این کد که اصلاح کردم درست کار میکند (البته delay ها را برداشتم و بازم کار کرد) هم کد قبلی که false نشده بود و دارای delay بود

سلام
تشکر استاد

سلام دوست عزیز، با تشکر از پاسخ دوستان، یک نکته دیگه من اضافه میکنم. ببینید وقتی که شما serialread رو صدا میزنید، داخلش serialkhan صدا زده میشه و بعد کل برنامه قفل میشه به خاطر while و تا وقتی که چیزی روی سریال نیومده برنامه ادامه پیدا نمیکنه. بنابراین باید یک جا صدا زده بشه و همه روتین برنامه رو طوری باید تنظیم کنید که اول محتویات سریال خونده بشه و بعد از اینکه خونده شد اتفاقات بعدی به نسبت ورودی کاربر انجام بشه.

سلام استاد وقت به خیر
بنده دو تا سوال داشتم در مورد ویدیو پنجم فصل اردوینو
1-در قسمت پنجم پروژه ایی رو اعلام میکنید که دوستان انجام بدن به عنوان تمرین که باید مود منوال اضافه کنیم و با سریال رنگ مورد نظر را روشن کنیم من این پروژه رو راه انداختم فقط یه مشکل که برخوردم این هست که طبق عکس در مود 4 سریال خوان را صدا میزنیم که از سریال در مود 4 عبارتی که میاد رو بخونه و اگر هر کدام از سه رنگ ما بود شرط رو مقایسه و اجرا کنه طبق تصویر اگر در ابتدا قبل صدا زدن سریال خوان delay قرار ندهیم اصلا نمیتواند رنگ مورد نظر ما را روشن کند و انگار که اصلا درون حلقه نمی اید می خاستم بدونم ک دلیل این که تا delay نگذاریم در این قسمت عمل نمیکند میتواند به دلیل اجرای سریع برنامه باشد که نمیتواند مقداری که در سریال وارد شده را بخواند؟
این برنامه با دستور delay که قبل از سریال خوان هست درست عمل می کند ولی بدون دستور delay کار نمیکند من حتی شرط سریال اماده هم که بگذارم و انگار همیشه این شرط یک هست و اصلا به شرط توجه ایی ندارد.
2021-07-24/1627129518-410735-5.png

2-سوال بعدی که داشتم من برای خودم پروژه تعریف کردم که عددی که در ورودی سریال خوانده می شود را روی سون سگمنت نمایش دهد ولی عدد که در ورودی سریال مینویسم به صورت دسیمال برمیگرداند و برای من چاپ میکند و هنگام مقایسه نمیتواند با شروط من مقایسه کنه چون مثلا من یک وارد کردم ولی ان برای خودش 49در نظر میگیرد؟

ممنون میشم راهنمایی کنید تشکر

سلام دوست عزیز، در مورد سوال اول لطفا فایل کامل کد رو ارسال کنید همینجا که من بتونم کل کد شما رو ببینم.
در مورد سوال دوم:
وقتی که شما در ترمینال یک عدد وارد میکنید، در واقع دارید یک کاراکتر وارد میکنید و عملا معادل ascii اون عدد رو ارسال می کنید (اگر نمیدونید جدول ascii چی هست، نگران نباشید، در ادامه باهاش کلی کار میکنیم در بسته ولی به صورت خلاصه، یک توافق هست که میگه هر کاراکتر معادل چه عدد باینری ای باشه)
همونطور که در شکل زیر میبینید، من کاراکتر “1” رو در جدول براتون عکسش رو گذاشتم و دقیقا برابر عدد 49 هست. یعنی توافق شده که کاراکتر 1 برابر عدد ۴۹ هست. منبع عکس :‌ https://www.asciitable.com/
2021-07-25/1627192110-824633-image.png

پس اگر شما میخواید یک عدد رو وارد کنید و همون عدد رو هم واقعا دریافت کنید و نه معادل کاراکتریش رو، باید از روش هایی مثل parse integer که در ادامه یاد میگیرید استفاده کنید و یا از روش scanf که در بخش avr یاد میگیرید استفاده کنید. احتمالا چند جلسه دیگه رو اگر ببینید این مشکل شما حل میشه.

یک توضیح اضافه: اگر شما در ترمینال عدد 11 رو وارد کنید، دو بار براتون 49 میاد. داستان اینه که ترمینال همه چیز رو به صورت کاراکتر میبینه. یعنی کاراکتر 1 براش فرقی با کاراکتر A نداره و مفهوم عدد نداره براش. به تعداد کاراکترهایی که وارد میکنید، همون تعداد بایت ارسال میشه برای میکرو و هر بایت برابر یک کاراکتر هست.

[upl-file uuid=622d1d42-025d-4938-89f1-a80aeee935b5 size=6kB]s02e05.txt[/upl-file]

سلام استاد خیلی ممنون بابت پاسخ گوییتون این فایل برنامه سوال اول هست ممنون میشم یه چک بکنید

@alirezamazloomshah#5503
با سلام
آقای مظلوم شاه سوال شما برام جالب شد ،کدتون رو خوندم و متوجه موضوعی شدم:
شما به جای اینکه serialamade رو برابر false کنید ، serialinput رو برابر با false کردید.
البته من فقط یه دور کد رو خوندم و مطمئن نیستم که مشکل همین باشه .

@alirezamazloomshah#5508
جالبه ، نمیدونم …البته چون serialread رو در loop هم صدا زدین ، و در این تابع Serialkhan رو صدا زدین ، ممکنه که زمانی که چیزی برای سریال میفرستین ، با توجه به این که Serialamade هم همیشه true بوده ، ممکنه که بره داخل اون تابع به جای تابعی که شما انتظار دارین و serialinput برابر با ("")کنه و اون delay باعث میشده که برنامه اکثرا اون جا block باشه تا زمانی که چیزی برای سریال اومد ، وارد اون تابع که شما میخواستید بشه .