BASIC4MCU | 질문게시판 | 답변 : Atmega128 RGB LED관련해서 질문 있습니다!
페이지 정보
작성자 master 작성일2019-06-12 19:57 조회4,518회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=9353
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2019-06-12 오후 7:51:49// by Ok-Hyun Park제가 실험에서 사용하는 LED는 RGB LED라서 일반 LED만을 이용하는 기존의 코드를 수정했는데 되지않아 도움 요청합니다..RGB LEDR|Vcc|G|BRGB LED는 포트 D를 이용하려고 합니다.////<휴대용 음주 측정기>//#define F_CPU 16000000UL#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>#include <stdio.h>//char RX0_char(){ while(!(UCSR0A&0x80)); return UDR0; }void TX0_char(char c){ while(!(UCSR0A&0x20)); UDR0=c; }void TX0_STR(char *s){ while(*s)TX0_char(*s++); }//void tone(int t){ OCR1A=t; TCCR1B=9; }void noTone(){ OCR1A=0xFFFF; TCCR1B=0; }//int main(){int i; char str[50];//DDRA=0x07; // LED R,Y,G // R(PA2),Y(PA1),G(PA0)DDRB=0x20; // 포트 B.5 펄스출력DDRD=0x07; // 포트 D-RGB LED사용(새롭게 추가한 부분)TCCR1A=0x40; TCCR1C=0x80; OCR1A=0;ADMUX=0x40; ADCSRA=0xE7; // MQ3(PF0)UCSR0B=0x18; UBRR0L=103; // 9600while(1){_delay_ms(500);i=ADC; // i=ADCW; 에러나면 ADC대신 ADCW로 변경(AVRstudio 버전에 따라서 다름)sprintf(str,"%d\r\n",i);TX0_STR(str); // MQ-3 센서 출력값을 시리얼 모니터로 출력//if (i>=300){ tone( 2701); PORTD=0xFB; } // 300~1023 // 3000Hz // 빨간색 LEDelse if(i>=200){ tone(27240); PORTD=0xFD; } // 200~ 300 // 300Hz // 파랑색 LEDelse { noTone(); PORTD=0xFE; } // 0~ 200 // OFF // 초록색 LED}}
포트D의 출력을 확인하세요
if (i>=300){ tone( 2701); PORTD=0xFB; } // 300~1023 // 3000Hz // 빨간색 LEDelse if(i>=200){ tone(27240); PORTD=0xFD; } // 200~ 300 // 300Hz // 파랑색 LEDelse { noTone(); PORTD=0xFE; } // 0~ 200 // OFF // 초록색 LED
댓글 0
조회수 4,518등록된 댓글이 없습니다.