Ce petit capteur Objectif TCS3200D est capable de percevoir les couleurs et les envoyer à l'Arduino. Bien que pas très fiable, Il semblait très cool. Il a également une version sans objectif.
A 4 LEDs montée à bord.
Les connecteurs sont: S0, S1, S2, S3, GND, SCR, OUT et LED.
Il y a une housse pour protéger la lentille.
Voir comment était le lien avec l'Arduino.
J'ai utilisé la tension V 3.3 de l'Arduino pour brancher les leds. Il a été très bonne luminosité.
Sur cette photo je suis en train de lire le bleu de mon agrafeuse.
Les résultats pour le bleu ne sont pas très bons, mais je vois que le niveau de bleu est légèrement plus grand.
En parlant de cela, Je vais laisser le programme ici pour ceux qui veulent utiliser:
int s2Pin = 7; int s3Pin = 8; int outPin = 4; programme d'installation de Sub() { pinMode(s2Pin, SORTIE); pinMode(s3Pin, SORTIE); pinMode(outPin, ENTRÉE); Commencer la série.(9600); } int readOutputPulse(broche int) { int count = 0; Certain temps ((digitalRead(BROCHE) == 1) & (comte < 32640)) { Count ; } If (comte == 32640) comte de retour 2; comte = 0; Certain temps ((digitalRead(BROCHE) == 0) & (comte < 32640)) { Count ; } comte de retour; } int readRed() { int pulseWidth = 0; int colorStrength = 0; digitalWrite(s2Pin, FAIBLE); digitalWrite(s3Pin, FAIBLE); Delay(100); pulsewidth = readOutputPulse(outPin); colorStrength = (pulsewidth/128); colorStrength = (255 - colorStrength); retour colorStrength; } int readGreen() { int pulseWidth = 0; int colorStrength = 0; digitalWrite(s2Pin, HAUTE); digitalWrite(s3Pin, HAUTE); Delay(100); pulsewidth = readOutputPulse(outPin); colorStrength = (pulsewidth/128); colorStrength = (255 - colorStrength); retour colorStrength; } int readBlue() { int pulseWidth = 0; int colorStrength = 0; digitalWrite(s2Pin, FAIBLE); digitalWrite(s3Pin, HAUTE); Delay(100); pulsewidth = readOutputPulse(outPin); colorStrength = (pulsewidth/128); colorStrength = (256 - colorStrength); retour colorStrength; } boucle de Sub() { .Print Serial("R:"); Out.println serial(readRed()); .Print Serial("G:"); Out.println serial(readGreen()); .Print Serial("(B):"); Out.println serial(readBlue()); Out.println serial(""); Delay(500); }
Je suis en train de lire un écran blanc sur l'ordinateur.
Un écran rouge. Vérifiez que le capteur est plus sensible à cette couleur que tout autre.
Un écran vert:
Et enfin bleu.
Bien que plus sensibles au rouge que bleu ou vert, les œuvres de capteur. Peut-être certains d'étalonnage est nécessaire de travailler mieux. Je laisse ci-dessous le lien pour les versions avec lentille (EBay) et sans objectif (DX):
Avec des lentilles – http://www.ebay.com/sch/i.html?_nkw=tcs3200d+lens&_sacat=0
Sans objectif – http://www.DX.com/p/GY-31-tcs230-tcs3200-Color-Sensor-Recognition-module-Blue-black-216, 448
Bonjour Adriano,
Merci pour votre article utile.
A propos du code. Il semble manquer quelques caractères?
Tandis que ((digitalRead(ÉPINGLE) == 1) & (comte < 32640)) {
comte ;
Should this be "count++;"?
Qu'en est-il cette pièce: Si (comte == 32640) comte de retour 2;
What's between "count" and "2"?