چراغ راهنمایی
پروژه:کنترل چراغ راهنمایی رانندگی با دو سون سگمنت و ATmega32
در این پروژه، با استفاده از میکروکنترلر ATmega32، دو سون سگمنت و شش LED (دو سبز، دو قرمز و دو زرد)، یک سیستم چراغ راهنمایی رانندگی طراحی و پیادهسازی خواهیم کرد.
هدف این پروژه نمایش زمانبندی تغییر وضعیت چراغها روی سون سگمنتها و کنترل ترتیب روشن و خاموش شدن چراغهای راهنمایی (سبز، زرد، و قرمز) است. چراغها به ترتیب زیر عمل میکنند:
– LED قرمز: نشاندهنده توقف است.
– LED سبز:نشاندهنده مجاز بودن حرکت است.
– LED زرد: هشدار تغییر وضعیت بین حرکت و توقف را نمایش میدهد.
موارد مورد نیاز:
– میکروکنترلر ATmega32
– 2 سون سگمنت
– 2 LED سبز
– 2 LED قرمز
– 2 LED زرد
– مقاومتها (برای محدود کردن جریان LEDها)
– برد بورد و سیمهای اتصال
این پروژه برای آشنایی با کنترل ورودیها و خروجیها در ATmega32، کنترل نمایشگرها و مدیریت ترتیب روشن و خاموش شدن LEDهادر یک پروژه دیجیتال کاربردی، بسیار مناسب است.
#include
#include
int seg[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int j ;
void main(void){
DDRA = 0XFF;
DDRB = 0XFF;
DDRC = 0XFF;
DDRD = 0XFF;
PORTA = 255;
while (1)
{
for (j = 9 ; j >= 0 ; j -- ){
PORTD = seg[j];
PORTC = seg[j];
delay_ms(50);
if(j>=3){PORTB = 0X01;PORTA = 0X04;}
if(j<3){PORTB = 0X01;PORTA = 0X02;}}
for (j = 9 ; j >= 0 ; j -- ){
PORTD = seg[j];
PORTC = seg[j];
delay_ms(50);
if(j>=3){PORTA = 0X01;PORTB = 0X04;}
if(j<3){PORTA = 0X01;PORTB = 0X02;}}
}
}
این کد مربوط به شبیهسازی یک چراغ راهنمایی رانندگی با دو سون سگمنت و چهار LED است. در کد، از آرایه `seg` برای ذخیره الگوی نمایش اعداد 0 تا 9 در سون سگمنتها استفاده شده است. پورتهای PORTD و PORTC به دو سون سگمنت متصل هستند و به صورت معکوس از 9 تا 0 شمارش میکنند. چراغهای راهنمایی با استفاده از پورتهای PORTA و PORTB کنترل میشوند. در هر چرخه شمارش:
– PORTA و PORTB وضعیت چراغهای قرمز، زرد و سبز را شبیهسازی میکنند.
– برای اعداد بزرگتر یا مساوی 3، چراغهای سبز و زرد فعال میشوند و برای اعداد کمتر از 3، چراغ قرمز روشن میشود.
– تأخیرها (`delay_ms`) برای ایجاد زمانبندی مناسب بین تغییرات استفاده شدهاند.
این کد دو چرخه شمارش معکوس مستقل را برای دو حالت مختلف چراغ راهنمایی اجرا میکند.