Датчик способен распознать три цвета - красный, зеленый, синий.
Порядок подключения выводов датчика:
GND - подключение к общему проводу Arduino.
VCC - подключение к выводу 5 Вольт Arduino.
S0 - подключение к выводу 3 Arduino.
S1 - подключение к выводу 4 Arduino.
S2 - подключение к выводу 5 Arduino.
S3 - подключение к выводу 6 Arduino.
OUT - подключение к выводу 2 Arduino.
LED - подключение к выводу 3,3 Вольт Arduino.
Примерный скетч для работы с датчиком цвета:
Если вы заметите, что датчик цвета некорректно определяет цвета, попробуйте изменить фокусное расстояние с помощью вращения объектива. Не забудьте снять защитный колпачок перед началом работы.
Ссылка на витрину магазина http://dvrobot.ru/238/399.html.
Порядок подключения выводов датчика:
GND - подключение к общему проводу Arduino.
VCC - подключение к выводу 5 Вольт Arduino.
S0 - подключение к выводу 3 Arduino.
S1 - подключение к выводу 4 Arduino.
S2 - подключение к выводу 5 Arduino.
S3 - подключение к выводу 6 Arduino.
OUT - подключение к выводу 2 Arduino.
LED - подключение к выводу 3,3 Вольт Arduino.
Примерный скетч для работы с датчиком цвета:
int s0=3,s1=4,s2=5,s3=6; int flag=0; int counter=0; int countR=0,countG=0,countB=0; void setup() { Serial.begin(115200); pinMode(s0,OUTPUT); pinMode(s1,OUTPUT); pinMode(s2,OUTPUT); pinMode(s3,OUTPUT); } void TCS() { digitalWrite(s1,HIGH); digitalWrite(s0,LOW); flag=0; attachInterrupt(0, ISR_INTO, CHANGE); timer2_init(); } void ISR_INTO() { counter++; } void timer2_init(void) { TCCR2A=0x00; TCCR2B=0x07; //the clock frequency source 1024 points TCNT2= 100; //10 ms overflow again TIMSK2 = 0x01; //allow interrupt } int i=0; ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function { TCNT2=100; flag++; if(flag==1) { counter=0; } else if(flag==2) { digitalWrite(s2,LOW); digitalWrite(s3,LOW); countR=counter/1.051; Serial.print("red="); Serial.println(countR,DEC); digitalWrite(s2,HIGH); digitalWrite(s3,HIGH); } else if(flag==3) { countG=counter/1.0157; Serial.print("green="); Serial.println(countG,DEC); digitalWrite(s2,LOW); digitalWrite(s3,HIGH); } else if(flag==4) { countB=counter/1.114; Serial.print("blue="); Serial.println(countB,DEC); digitalWrite(s2,LOW); digitalWrite(s3,LOW); } else { flag=0; TIMSK2 = 0x00; } counter=0; delay(2); } void loop() { delay(10); TCS(); if((countR>10)||(countG>10)||(countB>10)) { if((countR>countG)&&(countR>countB)) { Serial.print("red"); Serial.print("\n"); delay(1000); } else if((countG>=countR)&&(countG>countB)) { Serial.print("green"); Serial.print("\n"); delay(1000); } else if((countB>countG)&&(countB>countR)) { Serial.print("blue"); Serial.print("\n"); delay(1000); } } else { delay(1000); } }Второй вариант скетча:
int s0=3,s1=4,s2=5,s3=6; int out=2; int flag=0; byte counter=0; byte countR=0,countG=0,countB=0; void setup() { Serial.begin(115200); pinMode(s0,OUTPUT); pinMode(s1,OUTPUT); pinMode(s2,OUTPUT); pinMode(s3,OUTPUT); } void TCS() { flag=0; digitalWrite(s1,HIGH); digitalWrite(s0,HIGH); digitalWrite(s2,LOW); digitalWrite(s3,LOW); attachInterrupt(0, ISR_INTO, LOW); timer0_init(); } void ISR_INTO() { counter++; } void timer0_init(void) { TCCR2A=0x00; TCCR2B=0x07; //the clock frequency source 1024 points TCNT2= 100; //10 ms overflow again TIMSK2 = 0x01; //allow interrupt } int i=0; ISR(TIMER2_OVF_vect)//the timer 2, 10ms interrupt overflow again. Internal overflow interrupt executive function { TCNT2=100; flag++; if(flag==1) { countR=counter; Serial.print("red="); Serial.println(countR,DEC); digitalWrite(s2,HIGH); digitalWrite(s3,HIGH); } else if(flag==2) { countG=counter; Serial.print("green="); Serial.println(countG,DEC); digitalWrite(s2,LOW); digitalWrite(s3,HIGH); } else if(flag==3) { countB=counter; Serial.print("blue="); Serial.println(countB,DEC); Serial.println("\n"); digitalWrite(s2,LOW); digitalWrite(s3,LOW); } else if(flag==4) { flag=0; } counter=0; } void loop() { TCS(); while(1); }Записав скетч в Arduino и включив монитор порта, мы можем видеть цифровые значения каждого из цветов, определенных датчиком. Попробуйте направить датчик предметы различного цвета и увидите изменения цифровых значений в мониторе порта.
Если вы заметите, что датчик цвета некорректно определяет цвета, попробуйте изменить фокусное расстояние с помощью вращения объектива. Не забудьте снять защитный колпачок перед началом работы.
Ссылка на витрину магазина http://dvrobot.ru/238/399.html.