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

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

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

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

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

BASIC4MCU > 질문게시판

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

페이지 정보

작성자 27315co 작성일18-06-02 15:31 조회8,100회 댓글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,100

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
질문 아두이노 센서 쉴드 v5.0 과 음성인식 모듈(V2)통… 첨부파일AutoSun 새글 22-07-05
질문 초음파 센서를 사용한 dc모터 제어에 관해 질문 있습니… 첨부파일뉴비에오 새글 22-07-04
답변 답변 : 초음파 센서를 사용한 dc모터 제어에 관해 질… 댓글[2] master 새글 22-07-05
질문 아두이노 Sensor Shield 5.0 시리얼 통신 … 댓글[2] AutoSun 새글 22-07-04
질문 Atmega 코드 좀 봐주세요. 댓글[1] 첨부파일chelsea 새글 22-07-04
질문 아두이노 while문 탈출 질문 yhj2644  22-07-01
답변 답변 : 아두이노 while문 탈출 질문 댓글[8] master  22-07-01
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의… 댓글[3] cansad  22-06-30
질문 ESP32-C3 리튬폴리머 ADC 전압 체크 관련 문의 댓글[3] cansad  22-06-30
질문 빵판없이 디스플레이 넣을 수 있을까요? 댓글[2] 첨부파일오소로롯  22-06-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum  22-06-26
질문 음전압 ADC 댓글[2] 412904  22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전