질문게시판 > ATMEGA 광센서 부저

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

ATMEGA 광센서 부저

페이지 정보

작성자 코딩 작성일23-05-23 14:44 조회572회 댓글2건

본문

ATMEGA J-KIT 128 이 코드를 실행하면 빛의 광량에 따라 자동차 후방 감지 시스템 처럼 부저가 울리도록 코드를 짰는데 부저가 울리지 않아서 어떤 부분을 수정을 해야 빛의 광량에 따라 부저가 울릴까여??

 

#include <avr/io.h>

#include <avr/interrupt.h>

#define F_CPU 16000000UL

#define __DELAY_BACKWARD_COMPATIBLE__

#include <util/delay.h>

 

#define CDS_VALUE1 600 // 광량 최저

#define CDS_VALUE2 871 // 광량 중간

#define CDS_VALUE3 1024 // 광량 최대

 

unsigned short read_adc();

void buzzer(int ms);

void danger(unsigned short value);

 

int main()

{

unsigned short value;

DDRB = 0xFF;

ADMUX = 0x00;

ADCSRA = 0x87;

sei(); // interrupt enable;

TCCR0 = 0x03; // prescaler 32분주

TIMSK = 0x01;

while(1)

{

value = read_adc();

danger(value);

}

}

 

unsigned short read_adc()

{

unsigned char adc_low, adc_high;

unsigned short value;

ADCSRA |= 0x40;

while((ADCSRA & 0x10) != 0x10);

adc_low = ADCL;

adc_high = ADCH;

value = (adc_high << 8) | adc_low;

return value;

}

 

void buzzer(int ms)

{

PORTB = 0x10;

_delay_ms(ms);

PORTB = 0x00;

_delay_ms(ms);

}

 

void danger(unsigned short value)

{

if(value < CDS_VALUE1)

{

buzzer(0);

}

else if((value >= CDS_VALUE1) && (value <= CDS_VALUE2))

{

buzzer(500);

}

else if(value > CDS_VALUE3)

{

buzzer(1000);

}

}

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오톡으로 보내기

댓글 : 2

조회수 : 572

master님의 댓글

master 작성일

부저는 두 종류가 있습니다.
1. 발진회로가 내장된 부저로서 전원만 연결하면 고정된 주파수의 소리가 납니다.
2. 발진회로가 없는 부저로서 포트에 펄스를 출력해서 부저를 구동해야 합니다. 멜로디 연주 할 때 이 부저를 사용합니다.

코드를보면 1번(능동부저,액티브부저) 부저를 구입해야 하는데 2번 부저를 구입한 것이 아닌가 생각됩니다.
//
코드에도 문제가 있군요
TIMSK = 0x01;
인터럽트 이네이블 시켰으면 인터럽트 함수가 있어야합니다.
함수없이 이네이블 시키면 오동작하거나 먹통됩니다.

master님의 댓글

master 작성일

#include <avr/io.h>
#define F_CPU 16000000UL
#define __DELAY_BACKWARD_COMPATIBLE__
#include <util/delay.h>
//
int main(){
  int i;
  DDRB=0x10;
  while(1){
    for(i=0;i<2000;i++){ PORTB^=0x10; _delay_us(500); } // 1KHz 1초동안
    for(i=0;i<4000;i++){ PORTB^=0x10; _delay_us(250); } // 2KHz 1초동안
    for(i=0;i<6000;i++){ PORTB^=0x10; _delay_us(166); } // 3KHz 1초동안
  }
}
발진회로가 없는 부저 테스트용 코드입니다.

#include <avr/io.h>
#define F_CPU 16000000UL
#define __DELAY_BACKWARD_COMPATIBLE__
#include <util/delay.h>
//
int main(){
  DDRB=0x10;
  while(1){
    PORTB^=0x10; _delay_ms(1000); // 1초 ON, 1초 OFF
  }
}
발진회로가 있는 부저 테스트용 코드입니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[29] master  17-10-29
질문 타이머 인터럽트를 이용한 LCD제어 질문입니다. Tell 새글 23-09-27
질문 아두이노 무한루프 코드 질문... 댓글[1] vnpaz 새글 23-09-27
질문 질문있습니다ㅠㅠ 부탁드려요 댓글[1] keldeo 새글 23-09-27
질문 0 ~ 99 이중 for문으로 작성하는법! 댓글[2] 상어 새글 23-09-26
질문 리튬배터리로 화면 출력 질문드립니다 ! 댓글[1] 멘탈나간다 새글 23-09-26
질문 lcd,바코드,서보모터, 아두이노 질문 드립니다. ㅠㅠ 댓글[1] 아두이노개발자 새글 23-09-26
질문 stm32에서 변수 값을 유지하는 방법 댓글[1] 라칸 새글 23-09-26
질문 안녕하세요 스위치로 led 제어 관련 질문이 있습니다 댓글[1] 노형빈  23-09-25
질문 16X16 도트 매트릭스 구동방법 질문입니다. 댓글[1] 첨부파일맹균  23-09-25
질문 stm32에서 RTC 시간 함수 쓰는데 의문점 댓글[1] 라칸  23-09-25
질문 GPS 모듈 관련 질문입니다. 댓글[3] 지구과학  23-09-22
질문 아두이노 블루투스와 초음파센서를 이용한 장애물 정지 댓글[2] 둘둘이  23-09-22
답변 답변 : 아두이노 블루투스와 초음파센서를 이용한 장애물… 댓글[1] master  23-09-25
질문 stm32 보드에서 시간설정과 불러오기를 하는데 댓글[5] 라칸  23-09-22
질문 아두이노 인터럽트 질문입니다. 댓글[2] Tell  23-09-21
답변 답변 : 아두이노 인터럽트 질문입니다. 댓글[1] master  23-09-22
질문 아두이노와 거리 감지 센서의 전류 관련 댓글[1] hmkim  23-09-21
질문 아두이노 코딩 질문있습니다. 도와주세요.... 댓글[1] 첨부파일vnpaz  23-09-20
질문 아두이노를 사용한 dc모터 위치제어 댓글[2] 모터위치  23-09-20
질문 stm32 디버깅이나 rst버튼 없이 하는 방법좀 댓글[1] 라칸  23-09-20
질문 LCD에 숫자 표기법을 바꾸고 싶습니 댓글[2] Bs드리프터  23-09-19
질문 알코올 측정기(MQ-3) 관련 질문 소오금  23-09-18
답변 답변 : 알코올 측정기(MQ-3) 관련 질문 master  23-09-19
질문 스텝모터 제어하는 소스파일 수정방법 질문드립니다. Bs드리프터  23-09-15
답변 답변 : 스텝모터 제어하는 소스파일 수정방법 질문드립니… 댓글[1] master  23-09-15
질문 atmega 128을 이용한 악기 튜너기 댓글[1] 아두이노짱  23-09-15
질문 stm32 보드 ip주소 찾는법 댓글[1] 라칸  23-09-13
질문 마이컴 종류 질문 댓글[2] stevie8  23-09-12
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전