질문게시판 > atmega128a 광센서

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

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

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

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

BASIC4MCU > 질문게시판

atmega128a 광센서

페이지 정보

작성자 동스타 작성일19-05-25 13:05 조회5,630회 댓글1건

첨부파일

본문

부저가 끝남과 동시에 cds센서를 이용해 LED포트가 출력이 되야합니다.

코드를 보시면 while(tone!=EOS)에서 부저가 끝남과 동시에 밑에 value=read_adc(); show_adc(value); 이런 코드가 있어 cds센서가 작동해야 한다고 저는 봅니다.

그러나 동영상을 보시면 그렇지 않았습니다. 여기까지 공부를 하다가 도저히 안되어 master님께 질문해봅니다.

 

#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 16000000UL
#include <util/delay.h>
//
#define DO   0
#define RE   1
#define MI   2
#define FA   3
#define SOL  4
#define RA   5
#define SI   6
#define DDO  7
#define EOS  -1
//
#define STOP 0
#define GO   1
//
#define CDS_VALUE 871
unsigned char digit[10] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67};
char          f_table[8]={17,43,66,77,97,114,117,137};
int           song[]    ={SOL,MI,MI,SOL,MI,DO,RE,MI,RE,DO,MI,SOL,DDO,SOL,DDO,SOL,DDO,SOL,MI,SOL,RE,FA,MI,RE,DO,EOS};
//
volatile int tone,run=STOP;
//
ISR(INT4_vect)
{
   if(run==STOP)
   run=GO;
}

//
ISR(TIMER0_OVF_vect)
{
   if(run==STOP)
   {
      PORTB=0x00;
      run=GO;
   }
   else
   {
      PORTB=0x10;
      run=STOP;
   }
   TCNT0=f_table[tone];
}
//
void display_fnd(int i)
{
   PORTC=digit[i/1000%10];
   PORTG=1;
   _delay_us(2500);
   PORTC=digit[i/100 %10];
   PORTG=2;
   _delay_us(2500);
   PORTC=digit[i/10  %10];
   PORTG=4;
   _delay_us(2500);
   PORTC=digit[i     %10];
   PORTG=8;
   _delay_us(2500);
}
//
void init_adc()
{
   ADMUX=0x00;
   ADCSRA=0x87;
}
//
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 show_adc(unsigned short value)
{
   if(value < CDS_VALUE)
   {
      PORTA=0xff;
   }
   else
   {
      PORTA=0x00;
   }
}
//
int main()
{
   int i=0;
   unsigned short value;
   init_adc();
   DDRA=0xff;
   PORTC=digit[0];
   PORTG=0x0f;
   DDRB=0x10;
   DDRC=0xff;
   DDRE=0xcf;
   DDRG=0x0f;
   //
   for(i=500; i>=0; i--)
   {
      display_fnd(i);
      value=read_adc();
      show_adc(value);
   }

   //
   TCNT0=f_table[song[i]];
   TCCR0=0x03;
   TIMSK=0x01;
   EICRB=0xAA;
   EIMSK=0x0;
   sei();
   //
   while(1)
   {
      if(run)
      {
         while(tone !=EOS)
         {
            tone=song[i++];
            if(tone==EOS)
            {
               i=0;
               run=STOP;
            }
            _delay_ms(500);
            value=read_adc();
            show_adc(value);
         }
         value=read_adc();
         show_adc(value);
      }
   }

}
 

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

댓글 : 1

조회수 : 5,630

master님의 댓글

master 작성일

//EIMSK=0x0;
EIMSK=0x10;
INT4가 동작하기 위해서는 EIMSK가 올바르게 설정되어야합니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 아두이노 코딩 결합 댓글[1] hohoje 새글 22-08-18
질문 UART통신 스위치 사용 댓글[4] 픽공부 새글 22-08-18
질문 아두이노코딩 질문사항 댓글[1] kai5439  22-08-16
질문 해석좀 해주세요 댓글[2] bubu  22-08-14
질문 lcd 1602에 특수문자를 출력하는 방법을 알고싶습니… 댓글[3] dndktn  22-08-12
질문 stm32 wifi 파일전송 댓글[3] 하리  22-08-11
질문 회로 구성 수정 댓글[2] 첨부파일픽공부  22-08-11
질문 아두이노 와이파이통신 질문 있습니다 댓글[1] 학생  22-08-11
질문 포토다이오드와의 연결 질문합니다. 댓글[7] 첨부파일박윤모  22-08-10
질문 회로 구성 댓글[4] 픽공부  22-08-10
질문 아두이노 센서, 와이파이, 블루투스 연결 댓글[1] pattern  22-08-10
질문 PIC 블루투스 연결 댓글[19] 픽공부  22-08-09
질문 PIC18F452 블루투스 연결 댓글[4] 마이컴  22-08-08
질문 아두이노 코드 해석을 못하겠습니다... 댓글[2] 김가헌  22-08-08
질문 아두이노 코드를 avr로 변환해 주세요 ...ㅠ 댓글[3] 옹냥냥  22-08-08
질문 아두이노 녹음-스피커모듈 관련 질문있습니다 ㅠㅠ 댓글[2] 방귀뿡뿡  22-08-08
질문 Serial EEPROM 실수값 저장.. 댓글[2] 첨부파일광이  22-08-07
질문 STM32 Live Expression 값들이 깜빡이는… 댓글[3] 둠둠  22-08-05
질문 아두이노 ESP32 wifi module 댓글[1] Yoon  22-08-03
질문 atmega128과 dht11, lcd를 연결했는데 0… 댓글[1] 고양이33  22-08-02
질문 ATMEGA 128 코드를 합치려고 하는데 어렵네요 댓글[2] 고양이33  22-08-02
질문 서보모터 제어에 대해 질문있습니다. 댓글[2] 첨부파일뉴비에오  22-07-30
질문 적외선 통신 알려주실분있나요 ㅠㅠ 댓글[1] hkjsj10  22-07-30
질문 아두이노 관련 궁금합니다. 댓글[1] 뱝뱝  22-07-28
질문 아두이노 우노 MCP4725 댓글[3] opqr  22-07-27
질문 레오나르도 인체감지센서 알림 안옴 면지지  22-07-24
답변 답변 : 레오나르도 인체감지센서 알림 안옴 master  22-07-25
질문 Uno에서 엔코더값 놓치는 이유가 뭘까요... 댓글[3] MAKTUB  22-07-24
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전