Diese kleinen sensor Objektiv-TCS3200D ist in der Lage wahrzunehmen Farben und senden Sie sie an den Arduino. Obwohl nicht sehr zuverlässig, Es schien sehr cool. Es hat auch eine Version ohne Objektiv.
Hat 4 LED montiert an Bord.
Die Anschlüsse sind: S0, S1, S2, S3, GND, VCC, OUT und LED.
Es ist ein Cover, das Objektiv zu schützen.
Sehen Sie, wie die Verbindung mit dem Arduino war.
Ich habe die 3,3 V Spannung der Arduino verbinden die leds. Es war eine sehr gute Helligkeit.
In diesem Bild bin ich versucht, das Blau des mein Hefter lesen.
Die Ergebnisse für blau sind nicht sehr gut, aber ich kann sehen, dass das blau etwas größer ist.
Apropos, Ich lasse hier das Programm für diejenigen, die zu verwendenden:
Int s2Pin = 7; Int s3Pin = 8; Int outPin = 4; privatevoid einrichten() { pinMode(s2Pin, AUSGABE); pinMode(s3Pin, AUSGABE); pinMode(outPin, EINGABE); Beginnen Sie serielle.(9600); } Int readOutputPulse(Int-polig) { Int Anzahl = 0; Weile ((digitalRead(POLIG) == 1) & (Graf < 32640)) { Graf ; } If (Graf == 32640) Count 2 zurück; Graf = 0; Weile ((digitalRead(POLIG) == 0) & (Graf < 32640)) { Graf ; } Rückgabe Anzahl; } Int readRed() { Int PulseWidth = 0; Int ColorStrength = 0; digitalWrite(s2Pin, LOW); digitalWrite(s3Pin, LOW); Verzögerung(100); Pulsewidth = ReadOutputPulse(outPin); ColorStrength = (Pulsewidth/128); ColorStrength = (255 - colorStrength); zurück colorStrength; } Int readGreen() { Int PulseWidth = 0; Int ColorStrength = 0; digitalWrite(s2Pin, HOCH); digitalWrite(s3Pin, HOCH); Verzögerung(100); Pulsewidth = ReadOutputPulse(outPin); ColorStrength = (Pulsewidth/128); ColorStrength = (255 - colorStrength); zurück colorStrength; } Int readBlue() { Int PulseWidth = 0; Int ColorStrength = 0; digitalWrite(s2Pin, LOW); digitalWrite(s3Pin, HOCH); Verzögerung(100); Pulsewidth = ReadOutputPulse(outPin); ColorStrength = (Pulsewidth/128); ColorStrength = (256 - colorStrength); zurück colorStrength; } privatevoid Schleife() { Serielle .print("R:"); System.out.println serielle(readRed()); Serielle .print("G:"); System.out.println serielle(readGreen()); Serielle .print("(B):"); System.out.println serielle(readBlue()); System.out.println serielle(""); Verzögerung(500); }
Jetzt lese ich einen weißen Bildschirm auf dem computer.
Ein Roter Bildschirm. Überprüfen Sie, ob der Sensor empfindlicher auf diese Farbe als alle anderen.
Ein green-screen:
Und blauen.
Obwohl empfindlicher auf rot als blau oder grün, die Sensor-Werke. Vielleicht ist einigen Kalibrierung notwendig, besser arbeiten. Ich lasse unten Link für Versionen mit Objektiv (EBay) und ohne Objektiv (DX):
Mit Linsen – http://www.ebay.com/sch/i.html?_nkw=tcs3200d+lens&_sacat=0
Ohne Objektiv – http://www.DX.com/p/Gy-31-tcs230-tcs3200-Color-Sensor-Recognition-Module-Blue-Black-216, 448
Hallo Adriano,
Vielen Dank für Sie hilfreich Artikel.
Über den Code. Es scheint einige Zeichen zu fehlen?
Während ((digitalRead(STIFT) == 1) & (Graf < 32640)) {
Graf ;
Should this be "count++;"?
Und was ist mit diesem Stück: Ob (Graf == 32640) Rückgabe Anzahl 2;
What's between "count" and "2"?