질문게시판 > Atmega128 ADC기능을 활용하여 가변저항에 걸린 전압을 FND에 표시하려고합니다.

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

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

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

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

BASIC4MCU > 질문게시판

Atmega128 ADC기능을 활용하여 가변저항에 걸린 전압을 FND에 표시하려고합니다.

페이지 정보

작성자 27315co 작성일18-06-02 15:31 조회8,652회 댓글2건

본문

전체 코드는 아래와 같고 이론대로라면 가변저항의값이 최소일때 FND 에 5000이 표시되야하지만 자꾸 5013 의 숫자가 표시됩니다. 아마 모듈러 연산부분에서 어떤 부분이 잘못된것같은데 어느부분이 잘못된지를 감을 못잡겠어서 질문드립니다.

 

 

#include <mega128.h>
#include <delay.h>

char fnd[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
char buf[4] = {0};

void fnd_on(void)
{
 PORTA = 0x01; PORTB = fnd[buf[0]]; delay_ms(1); PORTA=0x00;
 PORTA = 0x02; PORTB = fnd[buf[1]]; delay_ms(1); PORTA=0x00;
 PORTA = 0x04; PORTB = fnd[buf[2]]; delay_ms(1); PORTA=0x00;
 PORTA = 0x08; PORTB = fnd[buf[3]]; delay_ms(1); PORTA=0x00;
}

void adc_controll(void)
{
  int adc_value1 = 0;
  int adc_value2 = 0;
  int adc_value3 = 0;
  int adc_value4 = 0;
 
  adc_value1 = ((5*ADCW)/1023);
  adc_value2 = ((50*ADCW)/1023);
  adc_value3 = ((500*ADCW)/1023);
  adc_value4 = ((5000*ADCW)/1023);
 
  buf[0] = adc_value1;
  buf[1] =(adc_value2%10);
  buf[2] =(adc_value3%10);
  buf[3] =(adc_value4%10);
}

void main(void)
{
DDRA = 0xff;
DDRB = 0xff;
ADCSRA = 1<<ADEN | 1<<ADSC | 1<<ADFR | 1<<ADPS2 | 1<<ADPS1;

while (1)
    {
       fnd_on();
       adc_controll();
    }
}
 

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

댓글 : 2

조회수 : 8,652

master님의 댓글

master 작성일

int adc_value4 = 0;
부호있는 2바이트 형으로 선언했고
10비트의 ADC값을 넣는데에는 아무런 문제가 없겠죠?

adc_value4 = 5000*ADCW;
10비트 값에 5000을 곱하면 얼마가 될까요?
1023이 최대값이므로 5115000
이런 큰 수가 부호있는 2바이트 크기의 데이터에 저장이 될 수 있을지 생각해보세요
//
  adc_value1 = ((5*ADCW)/1023);
이 문장은 괜찮지만
  adc_value2 = ((50*ADCW)/1023);
  adc_value3 = ((500*ADCW)/1023);
  adc_value4 = ((5000*ADCW)/1023);
나머지는 모두 에러납니다.

master님의 댓글

master 작성일

adc_value1 = ((5*ADCW)/1023);
  adc_value2 = ((50L*(long)ADCW)/1023);
  adc_value3 = ((500L*(long)ADCW)/1023);
  adc_value4 = ((5000L*(long)ADCW)/1023);
반드시 정수연산으로 성공해보겠다고 생각한다면
long으로 형변환 한 후에 계산하면 되겠죠

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 포토다이오드와의 연결 질문합니다. 댓글[4] 첨부파일박윤모 새글 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
질문 아두이노 압력센서 연동 질문 댓글[4] dbice  22-07-23
질문 아두이노 버튼 누르기 문의 댓글[1] 김형근  22-07-23
질문 HM10 다중페어링 댓글[1] ㅎㅋㅎㅋㅎ  22-07-22
질문 모터드라이브 선정 댓글[6] 조숩인  22-07-22
질문 ad9850 sin파 2 댓글[6] 첨부파일opqr  22-07-21
질문 ad9850 sin파 합성 댓글[7] 첨부파일opqr  22-07-20
질문 특정값이 n초이상,n번 이상 연속될경우를 감지하는 함수… 댓글[4] 우수  22-07-17
질문 delay를 millis함수로 바꾸는데 질문있습니다. 댓글[12] 첨부파일뉴비에오  22-07-16
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전