Датчик цвета
- Войдите на сайт для отправки комментариев
Вс, 07/12/2014 - 02:05
Пришед датчик цвета tcs3200, сразу стал подключать и столкнулся с одной проблемой
Не могу заставить его выдавать цвет в RGB, вот код:
int s0 = 6, s1 = 7, s2 = 8, s3 = 9; int out = 5; int red = 0, blue = 0, green = 0; void setup() { pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); Serial.begin(9600); digitalWrite(s0, HIGH); digitalWrite(s1, HIGH); } void loop() { color(); Serial.print(red, DEC); Serial.print(" : "); Serial.print(green, DEC); Serial.print(" : "); Serial.println(blue, DEC); delay(2000); } void color() { // Rotina que le o valor das cores digitalWrite(s2, LOW); digitalWrite(s3, LOW); // RED red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); // BLUE blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); // GREEN green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); }
Терминал выдает что-то типо: 40 : 22 : 27 (это если подключены светодиоды для освещения)
Без светодиодов тот же цвет будет выглядеть так: 1883 : 3824 : 5554
Как можно это преобразовать в RGB формат?
Попробуйте другой пример, использования датчика.
Интересно то, что выход out как бы очень важен, его даже надо указывать в коде, но он там не используеться
И это решение не рабочее, я уже его пробовал х)
А еще интереснее то, что для ардуины out это вход. А то что он не используется это вам только кажется attachInterrupt(). Если у вас не Uno или Mega и вы 2-вывод меняете на тот, который вам удобно, естественно, что у вас ничего не работает.