BASIC4MCU | 질문게시판 | 다시 한번 질문드립니다.
페이지 정보
작성자 아두이놐 작성일2018-12-03 13:21 조회3,354회 댓글0건본문
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
//
int s0=3,s1=4,s2=5,s3=6;
int out=2;
int led_r=9,led_g=10,led_b=11;
int flag=0;
int s8=8;
byte counter=0;
byte countR=0,countG=0,countB=0;
char okflag=0;
//
void TCS(){
flag=0;
digitalWrite(s1,HIGH); digitalWrite(s0,HIGH);
digitalWrite(s2,LOW); digitalWrite(s3,LOW);
digitalWrite(s8,HIGH);
attachInterrupt(0,ISR_INTO,CHANGE);
timer0_init();
}
//
void ISR_INTO(){ counter++; }
//
void timer0_init(void){
TCCR2A=0x00;
TCCR2B=0x07;
TCNT2=100;
TIMSK2=0x01;
}
//
ISR(TIMER2_OVF_vect){ // 10ms
TCNT2=100;
flag++;
if(flag==1){
countR=counter;
if(countR>120){ digitalWrite(led_r,HIGH); }
else{ digitalWrite(led_r,LOW); }
digitalWrite(s2,HIGH); digitalWrite(s3,HIGH);
}
else if(flag==2){
countG=counter;
if(countG>110){ digitalWrite(led_g,HIGH); }
else{ digitalWrite(led_g,LOW); }
digitalWrite(s2,LOW); digitalWrite(s3,HIGH);
}
else if(flag==3){
countB=counter;
if(countB>115){ digitalWrite(led_b,HIGH); }
else{ digitalWrite(led_b,LOW); }
digitalWrite(s2,LOW); digitalWrite(s3,LOW);
flag=0; okflag=1;
}
counter=0;
}
//
void setup(){
pinMode(s0,OUTPUT); pinMode(s1,OUTPUT);
pinMode(s2,OUTPUT); pinMode(s3,OUTPUT);
pinMode(led_r,OUTPUT); pinMode(led_g,OUTPUT); pinMode(led_b,OUTPUT);
lcd.init();
lcd.backlight();
TCS();
}
//
void loop(){
if(okflag){ okflag=0;
lcd.setCursor(0,0);
if (countR>120){ lcd.print("R"); }
else if(countG>110){ lcd.print("G"); }
else if(countB>115){ lcd.print("B"); }
else { lcd.print(" "); }
}
}
보내주신 코드 이용해서 RGB 3개 의 값이 잘 출력이 됩니다.그런데 이 코드 전에 했던 코드는 합성색(노란색,보라색,남색) 의 값이 잘 나왔었는데 수정해주신 코드는 RGB값만 나오고 합성된 색의 값 중 하나의 색만 출력됩니다.
예를 들어 컬러센서가 노란색을 인식하면 빨간색,초록색 LED가 켜집니다.
그러나 LCD에는 R(빨강)만 출력됩니다.
죄송합니다. 너무 급해서 질문을 너무 많이 드리게 되었습니다.
댓글 0
조회수 3,354등록된 댓글이 없습니다.