BASIC4MCU | 질문게시판 | Atmega128 RGB LED관련해서 질문 있습니다!
페이지 정보
작성자 욱2 작성일2019-06-13 02:55 조회361회 댓글0건본문
안녕하십니까 마스터님.
얼마전 바꿔주신 코드가 많은 도움이 됐습니다. 감사합니다.
제가 실험에서 사용하는 LED는 RGB LED라서 일반 LED만을 이용하는 기존의 코드를 수정했는데 되지않아 도움 요청합니다..
RGB LED
R | Vcc | G | B
RGB 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 = 0xff; //포트 D - RGB LED사용 (새롭게 추가한 부분)
TCCR1A=0x40; TCCR1C=0x80; OCR1A=0;
ADMUX=0x40; ADCSRA=0xE7; // MQ3(PF0)
UCSR0B=0x18; UBRR0L=103; // 9600
while(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){ // 300~1023
tone(2701); // 3000Hz
PORTD = 0xdf; // 빨간색 LED
}
else if(i>=200){ // 200~300
tone(27240); // 300Hz
PORTD = 0xbf; // 파랑색 LED
}
else{ // 0~200
noTone(); // OFF
PORTD = 0x7f; // 초록색 LED
}
}
}
댓글 0
조회수 361등록된 댓글이 없습니다.