gada888 发表于 2018-11-25 22:19:25

arduino颜色识别

本帖最后由 gada888 于 2018-11-25 22:22 编辑

做一个简单的颜色识别,不用那么多的连线,对着arduno直插,当颜色模块对着一个物体的时候,串口就会读出相应的颜色用到的硬件只有TCS3200.和arduino UNO。



TCS3200的电源输入电压是2.5v-5.5V
S0和S1是选频率的。两个都选HIGH

连线是
• S0 ------ D3 Arduino
• S1 ------ D4 Arduino
• S2 ------ D5 Arduino
• S3 ------ D6 Arduino
• OUT ---- D7 Arduino
Vdd----VCC arduino
GND---GND arduino

// gada888

int pulsePin = 7;
int prescale0Pin = 3;
int prescale1Pin = 4;
int colorSelect0pin = 5;
int colorSelect1pin = 6;


void setup()
{
pinMode(prescale0Pin, OUTPUT);
pinMode(prescale1Pin, OUTPUT);
// set maximum prescale
digitalWrite(prescale0Pin, HIGH);
digitalWrite(prescale1Pin, HIGH);
pinMode(colorSelect0pin, OUTPUT);
pinMode(colorSelect1pin, OUTPUT);
pinMode(pulsePin, INPUT);
Serial.begin(9600);
Serial.println("Color Reader");
}

void loop()
{
long red = readRed();
long green = readGreen();
long blue = readBlue();
if (red < green && red < blue)
{
    Serial.println("RED");
}
if (green < red && green < blue)
{
    Serial.println("GREEN");
}
if (blue < green && blue < red)
{
    Serial.println("BLUE");
}
delay(500);
}

long readRed()
{
return (readColor(LOW, LOW));
}

long readGreen()
{
return (readColor(HIGH, HIGH));
}

long readBlue()
{
return (readColor(LOW, HIGH));
}

long readWhite()
{
return (readColor(HIGH, LOW));
}

long readColor(int bit0, int bit1)
{
digitalWrite(colorSelect0pin, bit0);
digitalWrite(colorSelect1pin, bit1);
long start = millis();
for (int i=0; i< 1000; i++)
{
    pulseIn(pulsePin, HIGH);
}
return (millis() - start);
}

void printRGB()
{
Serial.print(readRed()); Serial.print("\t");
Serial.print(readGreen()); Serial.print("\t");
Serial.print(readBlue()); Serial.print("\t");
Serial.println(readWhite());
}



gada888 发表于 2018-11-25 22:24:01

因出差,不方便放视频。

hnyzcj 发表于 2018-11-26 06:54:29

:lol
页: [1]
查看完整版本: arduino颜色识别