BASIC4MCU | 질문게시판 | atmega128 온도센서, 광센서, led2개, 스위치, 스피커 사용
페이지 정보
작성자 졸업만도아주세윰 작성일2022-12-14 02:14 조회1,166회 댓글1건본문
제목에 있는 센서들 사용해서 온도↑, 밝기↑ 점점 증가됨에 따라 led 각각 밝기, 스피커 소리↑↑ 점점 증가하고 RC모터도 돌아가는 프로그램을 짜고 싶은데
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
if(Tim0_cnt == 0)
{
PORTB &= 0b00001111;
PORTC = seg[Num / 1000];
PORTB.4 = 1;
}
else if(Tim0_cnt == 5)
{
PORTB &= 0b00001111;
PORTC = seg[Num % 1000 / 100];
PORTB.5 = 1;
}
else if(Tim0_cnt == 10)
{
PORTB &= 0b00001111;
PORTC = seg[Num % 100 / 10];
PORTB.6 = 1;
}
else if(Tim0_cnt == 15)
{
PORTB &= 0b00001111;
PORTC = seg[Num % 10];
PORTB.7 = 1;
}
if(++Tim0_cnt >= 20)
Tim0_cnt = 0;
TCNT0=0x83;
PMW_Cnt++;
if(PMW_Cnt >= 20)
{
PMW_Cnt = 0;
PORTG.4 = 1;
}
if (PMW_Cnt >= PWM_Val)
PORTG.4 = 0;
TCNT0=243;
PWM_Cnt++;
if(PWM_Cnt >=20)
{
PWM_Cnt=0;
PORTD.4=0;
}
if (PWM_Cnt >= PWM_Val)
PORTD.4=1;
}
#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
PORTB=0b11111111;
DDRB=0b11111111;
PORTC=0b11111111;
DDRC=0b11111111;
PORTE=0b00110000;
DDRE=0b00000000;
PORTD=0b00110000;
DDRD=0b00110000;
PORTG.4 = 0;
DDRG.4 = 1;
ASSR=0x00;
TCCR0=0x05;
TCNT0=0x83;
OCR0=0x00;
TIMSK=0x01;
ETIMSK=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
#asm("sei")
while (1)
{
{
ADC_Val = read_adc(0); // CH0 ADC
//ADC_Val = ADC_Val * 5 / 1023
Num = ADC_Val;
//if(Mode == 1)
{
lig = read_adc(0);
if(lig > 650)
PWM_Val = 20;
else if(lig > 550)
PWM_Val = 10;
else if(lig > 450)
PWM_Val = 5;
else if(lig > 400)
PWM_Val = 0;
}
{
ADC_Val = read_adc(1); // CH0 ADC
//ADC_Val = ADC_Val * 5 / 1023
Num = ADC_Val;
//if(Mode == 1)
{
lig = read_adc(1);
if(lig > 600)
PWM_Val = 20;
else if(lig > 550)
PWM_Val = 10;
else if(lig > 500)
PWM_Val = 5;
else if(lig > 400)
PWM_Val = 1;
}
};
}}
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
일단 광센서에서 그만,,,
센서 다 안 들어가도 괜찮으니 제발 도움 좀 주세요,,,ㅠㅠㅠㅠ훟헣ㅠㅠ
댓글 1
조회수 1,166master님의 댓글
master 작성일
스피커는 멜로디 주파수를 올릴건지, 주파수는 동일하고 단속주기를 짧게 할 것인지 모르겠지만
스위치 읽는 것 따로 만들고
온도센서 읽는 코드 따로 만들고
광센서 읽는 코드 따로 만들고
led2개 밝기 제어하는 것 따로 만들고
스피커 제어하는 것 따로 만들고
RC모터 제어하는 것 따로 만든 후
스위치와 온도와 밝기의 조건들을 어떻게 구분해서 LED, 스피커, RC모터를 구동 할 것인지를 정하고
알고리즘에 맞게 코드를 합쳐서 완성 시키면 됩니다.