آموزش کدویژن ۱۴۰۴ با chatgpt

saalek110

Well-Known Member
سالک: در کدویژن در کدویزاردش ۳ انتخاب داره اولی avr8 دومی ‌avr8x یعنی چی اینا

Chatgpt:
سؤال خیلی خوبی پرسیدی!
در CodeVisionAVR وقتی وارد CodeWizard (جادوگر کد) می‌شی، معمولاً با سه گزینه روبرو می‌شی:


✅ ۱. AVR8

این گزینه برای اکثر میکروکنترلرهای کلاسیک AVR هست (مثل ATmega32، ATmega16، ATmega8، ATmega328P و امثال اینها).

اگر از این میکروکنترلرهای قدیمی و رایج استفاده می‌کنی، معمولاً باید همین گزینه رو بزنی.

✅ ۲. AVR8X

برای میکروکنترلرهای جدیدتر شرکت Microchip هست که از سری‌های ATtiny 0/1 series و ATmega 0/1 series هستن.

این میکروکنترلرها ساختار رجیسترهاشون تغییر کرده، امکانات پیشرفته‌تری دارن (مثل تایمرهای پیشرفته، سیستم Event، پین‌های قابل پیکربندی، و غیره).

مثلاً: ATmega4809، ATtiny1616، ATmega3208 و ...


✅ ۳. XMEGA

این مورد برای میکروکنترلرهای خانواده XMEGA هست (مثل ATxmega32A4U).

اینها هم ساختار متفاوت‌تری دارن، امکاناتشون حرفه‌ای‌تره، ولی به اندازه AVR8 معمول نیستن.



✅ پس چی انتخاب کنم؟

اگر مثلاً از ATmega32 یا ATmega16 یا ATmega328P استفاده می‌کنی: AVR8 رو انتخاب کن.

اگر از سری جدیدتر مثل ATmega4809 یا ATtiny1616 استفاده می‌کنی: AVR8X رو انتخاب کن.
 

saalek110

Well-Known Member
سالک:اومدم داخل کدویزارد ، حالا چطوری کار را خاتمه بدهم ، یعنی برنامه را بسازد؟

آفرین که تا اینجا اومدی!
برای اینکه در CodeVision AVR ویزارد (CodeWizard) رو تا آخر انجام بدی و برنامه رو بسازی، به ترتیب این مراحل رو برو:


✅ مراحل ساخت پروژه در CodeWizardAVR:

1. راه‌اندازی اولیه در ویزارد:

در CodeVision، از منوی بالا برو به:

Tools > CodeWizardAVR

حالا نوع میکروکنترلر، فرکانس، پورت‌ها، تایمرها، UART، ADC و ... رو تنظیم کن.


2. خاتمه دادن به تنظیمات:

وقتی همه چیز رو تنظیم کردی، در آخرین تب (یا با کلیک روی دکمه پایین سمت راست) روی دکمه:

Generate, Save and Exit

کلیک کن.

ازت می‌پرسه فایل پروژه را کجا ذخیره کنه. مسیر و نام فایل رو انتخاب کن و Save بزن.


3. بازگشت به محیط اصلی CodeVision:

حالا محیط برنامه‌نویسی باز میشه با یه فایل .c که خودش کدهای اولیه رو تولید کرده.

می‌تونی کدت رو ادامه بدی یا مستقیماً همون کد تولیدی رو کامپایل کنی.



4. کامپایل کردن پروژه:

دکمه‌ی سبز "کامپایل" (شبیه مثلث یا چرخ‌دنده) رو بزن. یا از منو:

Project > Compile

اگر همه چیز درست باشه، برنامه بدون خطا کامپایل میشه و فایل HEX برای پروگرام کردن تولید میشه.

---
 

saalek110

Well-Known Member
سالک:مال من فرق داره ، منوی program بروی اینهایی که گفتی را داره

آهان خیلی خوب گفتی
پس نسخه‌ی تو از CodeVision AVR همون نسخه‌ایه که CodeWizard داخل خودش یک پنل (Tab) داره، نه پنجره جدا.


✅ ادامه‌ی کار در نسخه‌ای که Wizard در تب «Program» است

در این نسخه، برای ساختن کد (بعد از انجام تنظیمات در ویزارد)، این مراحل رو انجام بده:

1. از منوی بالا برو به:

Program > Generate, Save and Exit

یا اگر می‌خوای فقط کد بسازه و در ویزارد بمونی:

Program > Generate Code


2. بعد از زدن این گزینه‌ها:

بهت اجازه می‌ده مسیر پروژه و فایل .C رو ذخیره کنی.

بعدش محیط نوشتن کد (Editor) باز میشه و می‌تونی ادامه بدی.


✅ اگر اصلاً گزینه‌ای نمی‌بینی

گاهی این تب‌ها یا منوها مخفی میشن، یا پنجره نصفه باز شده:

امتحان کن که با فشردن کلیدهای زیر:

Alt + P → منوی Program باز میشه

بعد با کلید جهت‌دار پایین برو روی گزینه‌ی
 

saalek110

Well-Known Member
سالک: جنریت و سیو و ...را که زدم برنامه را ساخت. من همون ۸ مگ زدم فرکانس را ، خوبه یا بده؟ اتمگا ۳۲ است میکروکنترلر من

آفرین، کارت عالیه
و بله، ۸ مگاهرتز کاملاً مناسب و استاندارد برای شروع با ATmega32 هست، ولی بذار یه توضیح کامل بدم تا خیالت راحت‌تر بشه:


✅ آیا ۸ مگاهرتز خوبه برای ATmega32؟

بله، خیلی هم خوبه، چون:

داخلی (Internal RC Oscillator) خود میکروکنترلر همین ۸MHz هست، و برای تست و پروژه‌های اولیه معمولاً از همین استفاده می‌کنن.
نیازی به کریستال خارجی نداری
مصرف برق پایین‌تر از فرکانس‌های بالاتره
اکثر توابع کتابخانه‌ای (مثل delay و UART) با ۸MHz خوب کار می‌کنن


✅ چه زمانی بخوای بیشترش کنی؟

اگر مثلاً خواستی:

UART دقیق‌تر با سرعت‌های بالا (مثلاً 115200bps)

اجرای سریع‌تر الگوریتم‌ها یا کدهای سنگین

یا استفاده از تایمرهای با دقت بالا


می‌تونی فرکانس رو ببری به ۱۲ یا ۱۶ مگاهرتز با کریستال خارجی.


⚠️ یک نکته مهم در مورد فیوزبیت‌ها (Fuse Bits):

اگر فقط در کدویژن نوشتی که فرکانس ۸MHz هست، ولی هنوز فیوزبیت‌های میکروکنترلرت رو تنظیم نکردی، ممکنه هنوز روی فرکانس دیگه‌ای باشه. پس:

لازمه با پروگرمرت بری و تنظیم کنی که از internal 8MHz oscillator استفاده کنه.
 

saalek110

Well-Known Member
سالک:فعلا خواستم کدویزارد را ببینم ، .....

آفرین، خیلی هم عالی که خواستی با CodeWizard آشنا بشی – یکی از راحت‌ترین و شیرین‌ترین راه‌ها برای شروع برنامه‌نویسی با میکروکنترلرهای AVR همین CodeVision AVR هست.

تو الان مسیر خیلی خوبی رفتی:

1. از منوی CodeWizard پروژه ساختی ✅
2. فرکانس را ۸MHz گذاشتی ✅
3. فایل‌ها تولید شدند ✅


حالا چی؟

فعلاً فقط با پنجره‌های اتوماتیکی که خودش تولید کرده آشنا شو:

یه فایل main.c ساخته که شامل تنظیمات اولیه‌ای هست که تو در CodeWizard انتخاب کردی.

مثلاً اگه تایمر یا LCD یا UART انتخاب کرده باشی، کد اولیه‌اش هست.


میتونی یه نگاهی بندازی ببینی چه کدی تولید کرده و چقدر از زحمتت کم کرده.


اگر خواستی ادامه بدی:

هر وقت آماده بودی برای:

نوشتن یک کد ساده (مثل LED چشمک‌زن)

یا تنظیم فیوزبیت‌ها

یا اضافه‌کردن یک سخت‌افزار مثل LCD


من در کنارت هستم
همین که فعلاً محیط و قابلیت‌ها رو بشناسی قدم بزرگیه!

بخوای، می‌تونم یک نمونه برنامه خیلی ساده و تمیز بهت نشون بدم فقط برای آشنایی بیشتر.
 

saalek110

Well-Known Member
سالک:چقدر کد ساخته ، مبتدی باشه خوف می کنه!!

دقیقاً!
وقتی برای اولین بار خروجی CodeWizard رو می‌بینی، با اون همه خط کد آدم یه لحظه جا می‌خوره! مخصوصاً اگه مبتدی باشه، فکر می‌کنه با یه چیز خیلی عجیب روبه‌رو شده.

اما خبر خوب اینه که:

✅ ۹۰٪ اون کدها فقط تنظیمات هستند

کدویژن داره با دقت تمام امکانات میکروکنترلر رو تنظیم می‌کنه؛ مثل تایمرها، پورت‌ها، ارتباط سریال، وقفه‌ها و ...

✅ تو فقط باید با main() کار داشته باشی

مثلاً اگه بخوای LED روشن کنی، فقط کافیه در تابع main() یک خط ساده بنویسی:

PORTB.0 = 1; // روشن کردن LED متصل به پین B0

یا برای چشمک‌زن ساده:

while(1)
{
PORTB.0 = 1;
delay_ms(500);
PORTB.0 = 0;
delay_ms(500);
}

و تمام!


چطور نگاه کنیم که نترسیم؟

کافیه بدونی:

فایل‌های تولیدشده اتوماتیک هستند و لازم نیست همه‌شون رو بفهمی

فقط به همون main() و چند خط اولش نگاه کن

بقیه چیزا اون پشت هستن که کار رو راحت کنن، نه سخت!
 

saalek110

Well-Known Member
Chatgpt:
✨ نکته برای خوانندگان تازه‌کار:

اگر تازه با کدویژن (CodeVisionAVR) و ویزاردش آشنا شدید:

نگران نباشید از حجم زیاد کدها!

فقط روی تابع main() تمرکز کنید.

کدهای تولیدی کمک می‌کنن وقت شما برای نوشتن تنظیمات سخت تلف نشه.

با پروژه‌های ساده مثل چشمک‌زن (Blink) شروع کنید.


و یادتون باشه که همین ابزارهای حرفه‌ای مثل CodeWizard بعدها تو پروژه‌های بزرگ، حسابی به کارتون میان!
 

saalek110

Well-Known Member
سخنرانی chatgpt:

حتما! با کمال میل یک سخنرانی کوتاه و کاربردی درباره‌ی کدویژن برای خواننده‌ها آماده می‌کنم:

سخنرانی کوتاه درباره کدویژن (CodeVisionAVR)

سلام به همه دوستان و علاقه‌مندان به میکروکنترلرهای AVR،

امروز می‌خواهم درباره‌ی یک ابزار قدرتمند و در عین حال کاربرپسند برای برنامه‌نویسی میکروکنترلرهای AVR صحبت کنم: کدویژن یا CodeVisionAVR.


کدویژن چیست؟

کدویژن یک محیط توسعه یکپارچه (IDE) برای برنامه‌نویسی میکروکنترلرهای AVR است که به زبان C کار می‌کند. این نرم‌افزار امکانات زیادی در اختیار ما قرار می‌دهد که کار برنامه‌نویسی و توسعه پروژه‌های میکروکنترلری را آسان و سریع می‌کند.


چرا کدویژن؟

1. سادگی و سرعت یادگیری:
کدویژن به خصوص برای تازه‌کارها بسیار مناسب است چون رابط کاربری ساده‌ای دارد و با ابزار ویزارد (CodeWizard) خود می‌تواند به صورت گرافیکی بخش‌های مختلف میکروکنترلر مثل تایمرها، ورودی/خروجی‌ها، وقفه‌ها و ... را تنظیم کند و به طور خودکار کد استاندارد و قابل اجرا تولید کند.


2. کدویژن ویزارد (CodeWizard):
این بخش طلایی کدویژن است. با چند کلیک می‌توان تنظیمات پیچیده سخت‌افزاری را بدون نوشتن کد دستی انجام داد و کدی تمیز و استاندارد تولید کرد که راه را برای شروع پروژه‌های بزرگ هموار می‌کند.


3. کمک به مدیریت پروژه:
کدویژن امکاناتی برای مدیریت پروژه، اشکال‌زدایی (debugging) و شبیه‌سازی اولیه دارد که به برنامه‌نویس کمک می‌کند سریع‌تر خطاها را پیدا کند و پروژه را توسعه دهد.


4. کتابخانه‌های آماده:
این نرم‌افزار شامل کتابخانه‌های گسترده برای کار با LCD، ماژول‌های ارتباطی (UART, SPI, I2C) و دیگر قطعات جانبی است که برنامه‌نویسی را بسیار راحت‌تر می‌کند.


برای چه کسانی مناسب است؟

تازه‌کارها: بخاطر محیط کاربرپسند و ویزاردها، یادگیری اولیه و شروع پروژه بسیار ساده‌تر است.

حرفه‌ای‌ها: چون قابلیت کنترل کامل روی کد و سخت‌افزار را دارد، برای پروژه‌های پیچیده هم مناسب است.


نتیجه‌گیری

اگر می‌خواهید در زمینه برنامه‌نویسی میکروکنترلر AVR حرفه‌ای شوید یا به تازگی شروع کرده‌اید، کدویژن یک گزینه عالی برای شماست. این نرم‌افزار به شما کمک می‌کند سریع‌تر یاد بگیرید، اشتباهات را کمتر کنید و پروژه‌های خود را با کیفیت به سرانجام برسانید.
 

saalek110

Well-Known Member
مقایسه از chatgpt:

اتمل استودیو.........محیط توسعه پیشرفته و رایگان
کدویژن.........محیط توسعه پولی و قدیمی‌تر

اتمل استودیو.........پشتیبانی کامل از زبان C استاندارد و ++C
کدویژن.........پشتیبانی محدودتر از زبان C

اتمل استودیو.........کامپایلر GCC با بهینه‌سازی بالا
کدویژن.........کامپایلر مخصوص AVR و بهینه‌سازی متوسط

اتمل استودیو.........پشتیبانی از دیباگ سخت‌افزاری قوی
کدویژن.........دیباگ نرم‌افزاری و محدود

اتمل استودیو.........قابلیت استفاده از پلاگین‌ها و ابزارهای جانبی متنوع
کدویژن.........ابزارهای جانبی محدود

اتمل استودیو.........پشتیبانی از میکروکنترلرهای جدید و گسترده‌تر
کدویژن.........پشتیبانی بیشتر روی میکروکنترلرهای قدیمی AVR

اتمل استودیو.........رایگان و متن‌باز
کدویژن.........پولی و غیر رایگان

اتمل استودیو.........رابط کاربری مدرن و قابل سفارشی‌سازی
کدویژن.........رابط کاربری ساده و قدیمی

اتمل استودیو.........پشتیبانی بهتر از پروژه‌های بزرگ و پیچیده
کدویژن.........مناسب پروژه‌های کوچک و متوسط

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

saalek110

Well-Known Member
سالک: من قبلا هم با اتمل استودیو کار کردم و هم با کدویژن ، امسال می خوام با کدویژن کار کنم چون قصد تمرین دارم و نرم افزار کدویژن سبک تره. شاید برنامه هام را بعدا با اتمل استودیو بنویسم ولی فعلا تمریناتم را با کدویژن می کنم.
 

saalek110

Well-Known Member
سالک:خوب خوانندگان آموزش ، چی لازمه بدونند در مورد کدویژن . بعد از معرفی این نرم افزار. بگو باهاش چی میشه نوشت؟

کدویژن.........یک محیط توسعه (IDE) مخصوص برنامه‌نویسی میکروکنترلرهای AVR است که توسط شرکت Atmel (اکنون Microchip) ساخته شده است.

کدویژن.........محیطی ساده و کاربردی با کامپایلر C داخلی و ابزارهای لازم برای نوشتن، کامپایل و پروگرام کدهای میکروکنترلری.

کدویژن.........با این نرم‌افزار می‌توانید برنامه‌هایی برای میکروکنترلرهای AVR بنویسید، از جمله پروژه‌های کنترل سخت‌افزار، سیستم‌های تعبیه‌شده، رباتیک، اتوماسیون خانگی و صنعتی، و بسیاری کاربردهای دیگر.

کدویژن.........با زبان برنامه‌نویسی C کار می‌کند و کتابخانه‌هایی دارد که کار با پورت‌ها، تایمرها، وقفه‌ها، ADC و سایر سخت‌افزارهای میکروکنترلر را آسان می‌کند.

کدویژن.........مناسب کسانی است که می‌خواهند سریع و بدون دردسر برنامه‌های ساده تا متوسط روی AVR بنویسند و پروژه‌های خود را به سرعت اجرا کنند.

کدویژن.........اگر تازه وارد دنیای میکروکنترلرها هستید، کدویژن می‌تواند شروع خوبی برای یادگیری برنامه‌نویسی میکرو و کار با سخت‌افزار باشد.
 

saalek110

Well-Known Member
سالک: منظورم برای روشن و خاموش کردن led بود و کار با lcd و ساعت و از این جور کارها

فهمیدم! برای خوانندگان آموزش این رو هم بگیم:

کدویژن.........با کدویژن می‌توانید برنامه‌هایی برای روشن و خاموش کردن LED بنویسید، به‌راحتی پورت‌های میکروکنترلر را کنترل کنید.

کدویژن.........کار با LCDهای کاراکتری (مثل 16×2) بسیار ساده است و کتابخانه‌های آماده برای نمایش متن روی LCD دارد.

کدویژن.........می‌توانید پروژه‌هایی مثل ساعت دیجیتال بسازید، با تایمر و وقفه‌ها کار کنید و داده‌ها را با دقت زمانی پردازش کنید.

کدویژن.........با استفاده از کتابخانه‌ها و کدهای نمونه، کار با سنسورها، کلیدها، موتور و سایر قطعات جانبی را خیلی راحت انجام می‌دهد.

کدویژن.........بنابراین مناسب پروژه‌های ساده و متوسط در حوزه الکترونیک و رباتیک است که شامل کنترل سخت‌افزارهای پایه‌ای می‌شود.
 

saalek110

Well-Known Member
سالک: محیط برنامه چی داره

کدویژن.........محیط برنامه شامل ویرایشگر کد ساده و کاربرپسند است که نوشتن برنامه را راحت می‌کند.

کدویژن.........کامپایلر داخلی دارد که کدهای نوشته‌شده را به زبان ماشین میکروکنترلر تبدیل می‌کند.

کدویژن.........شبیه‌ساز (Simulator) برای تست و اجرای برنامه بدون نیاز به سخت‌افزار واقعی دارد.

کدویژن.........ابزار پروگرامر داخلی برای آپلود برنامه روی میکروکنترلر دارد.

کدویژن.........دارای کتابخانه‌های استاندارد برای دسترسی آسان به سخت‌افزار مثل پورت‌ها، تایمرها، وقفه‌ها و LCD است.

کدویژن.........پنل نمایش خطاها و هشدارها دارد که کمک می‌کند مشکلات کد را سریع پیدا و رفع کنید.

کدویژن.........امکان تنظیمات پروژه شامل نوع میکروکنترلر، فرکانس ساعت و تنظیمات کامپایلر را به‌راحتی فراهم می‌کند.
 

saalek110

Well-Known Member
سالک:کامپایل کنه به زبان ماشین میکروکنترلر را به زبان زیر دیپلم بگو ، ecu ملت سوخت
باشه، ساده و بدون پیچیدگی توضیح می‌دم:

کدویژن.........وقتی شما برنامه می‌نویسی، این برنامه به زبان‌هایی مثل C یا BASIC نوشته می‌شود که میکروکنترلر آن‌ها را نمی‌فهمد.

کدویژن.........وظیفه دارد این برنامه‌ها را تبدیل کند به یک زبان خیلی ساده که میکروکنترلر می‌فهمد، یعنی زبان ماشین (دستورات صفر و یک).

کدویژن.........مثل ECU ماشین است که اطلاعات خام را می‌گیرد و به فرمان‌هایی تبدیل می‌کند که موتور بفهمد و کار کند.

کدویژن.........این کار باعث می‌شود میکروکنترلر بتواند دقیقاً همان کاری را انجام دهد که شما برنامه‌ریزی کردید، مثلاً روشن کردن LED یا نمایش متن روی LCD.

کدویژن.........پس کامپایل یعنی تبدیل برنامه به زبانی که میکرو بفهمد و اجرا کند، دقیقاً مثل ECU که فرمان‌ها را به موتور می‌دهد.
 

saalek110

Well-Known Member
سالک: یعنی برویم داخل میکروکنترلر را بخونیم ، کدویژن چی ریخته داخلش

دقیقاً!
کدویژن.........وقتی برنامه‌ات را می‌نویسی و کامپایل می‌کنی، کدویژن یک فایل دودویی (باینری) درست می‌کند که شامل دستورهای زبان ماشین میکروکنترلر است.

کدویژن.........این فایل را می‌ریزی داخل حافظه داخلی میکروکنترلر (مثل فلش)، یعنی همان جایی که میکرو برنامه‌اش را از آنجا می‌خواند و اجرا می‌کند.

کدویژن.........پس وقتی می‌گوییم «کدویژن داخل میکرو ریخته»، یعنی برنامه‌ای که شما نوشته‌ای به زبان صفر و یک تبدیل شده و در حافظه میکرو ذخیره شده است.

کدویژن.........هر بار که میکرو روشن می‌شود، این کد داخل حافظه را می‌خواند و اجرا می‌کند تا مثلاً LED روشن شود یا اطلاعات روی LCD نمایش داده شود.

کدویژن.........این یعنی شما در واقع یک «نقشه فرمان» به میکرو می‌دهی که چطور رفتار کند، و این نقشه درون میکرو ذخیره می‌شود و همیشه در دسترس میکرو است.
 

saalek110

Well-Known Member
سالک: یعنی کلی صفر و یک داخل میکروکنترلر ریخته

دقیقاً همینطوره!
کدویژن.........وقتی برنامه‌ات رو کامپایل می‌کنی، کلی صفر و یک (بیت) درست میشه که بهش می‌گن کد ماشین یا کد باینری.

کدویژن.........این صفر و یک‌ها داخل حافظه فلش میکروکنترلر ریخته میشن، جایی که خود میکرو این داده‌ها رو می‌خونه و اجرا می‌کنه.

کدویژن.........پس میکرو هیچ چیزی به جز همین صفر و یک‌ها رو نمی‌فهمه، ولی این صفر و یک‌ها دستورهای برنامه‌ای هستن که تو نوشتی، مثلاً روشن و خاموش کردن LED یا خواندن سنسور.

کدویژن.........پس میشه گفت کل «برنامه» توی قالب صفر و یک داخل میکرو ذخیره میشه تا موقع اجرا سریع و دقیق عمل کنه.
 

saalek110

Well-Known Member
سالک:پس کدویژن یک فایل میسازه ، کی میریزه داخل میکروکنترلر ، نرم افزار و سخت افزارش را بگو

آفرین، سوال خیلی خوبیه!
کدویژن.........یک فایل باینری یا HEX می‌سازد که شامل کد ماشین برنامه‌ات است.

ریختن داخل میکروکنترلر.........کار یک نرم‌افزار پروگرامر (Programmer Software) و سخت‌افزار پروگرامر (Programmer Hardware) است.

نرم‌افزار پروگرامر.........مثلاً نرم‌افزاری مثل AVRDUDE، PonyProg، یا خود نرم‌افزار مخصوص پروگرامرهای Atmel (مثل AVR Studio) که فایل HEX ساخته‌شده توسط کدویژن را باز و به سخت‌افزار می‌دهد.

سخت‌افزار پروگرامر.........یک دستگاه کوچک است که به کامپیوتر وصل می‌شود (مثلاً با USB) و به میکروکنترلر متصل می‌شود (مثلاً از طریق پورت ISP یا JTAG).

نحوه کار.........شما فایل HEX را در نرم‌افزار پروگرامر باز می‌کنی و با دستور پروگرام، سخت‌افزار پروگرامر داده‌ها (صفر و یک‌های برنامه) را از کامپیوتر می‌گیرد و داخل حافظه فلش میکرو می‌ریزد.

پس به صورت خلاصه:
کدویژن.........فایل برنامه را می‌سازد
نرم‌افزار پروگرامر.........فایل را به سخت‌افزار پروگرامر می‌دهد
سخت‌افزار پروگرامر.........برنامه را داخل میکرو می‌ریزد

بدون این مراحل، میکروکنترلر نمی‌تواند برنامه‌ات را اجرا کند.
 

جدیدترین ارسال ها

بالا