답변 : 아두이노 컬러센서 질문드립니다
페이지 정보
작성자 master 작성일18-12-03 01:12 조회3,814회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2018-12-03 오전 1:18:04
// by Ok-Hyun Park
//
#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 { lcd.print(" "); }
//
lcd.setCursor(1,0);
if(countG>110){ lcd.print("G"); }
else { lcd.print(" "); }
//
lcd.setCursor(2,0);
if(countB>115){ lcd.print("B"); }
else { lcd.print(" "); }
}
}
댓글 : 0
조회수 : 3,814
등록된 댓글이 없습니다.