Lire aussi!
Accueil / Outils / Arduino / Capteur de couleur avec lentille de TCS3200D pour Arduino

Capteur de couleur avec lentille de TCS3200D pour Arduino

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.

570feb7116d85_IMG_20160414_160510

A 4 LEDs montée à bord.

570feb730cecc_IMG_20160414_160516

Les connecteurs sont: S0, S1, S2, S3, GND, SCR, OUT et LED.

570feb751d7d3_IMG_20160414_160524

Il y a une housse pour protéger la lentille.

570feb771e264_IMG_20160414_160536

Voir comment était le lien avec l'Arduino.

570feb653fa95_IMG_20160414_160107

J'ai utilisé la tension V 3.3 de l'Arduino pour brancher les leds. Il a été très bonne luminosité.

570feb66707a2_IMG_20160414_160139

Sur cette photo je suis en train de lire le bleu de mon agrafeuse.

570feb67a23fd_IMG_20160414_160153

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.

570feb6879495_IMG_20160414_160203

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.

570feb6f21b80_IMG_20160414_160356

Un écran rouge. Vérifiez que le capteur est plus sensible à cette couleur que tout autre.

570feb6a1b811_IMG_20160414_160226

Un écran vert:

570feb6d3fb12_IMG_20160414_160318

Et enfin bleu.

570feb6bbce1c_IMG_20160414_160245

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

À propos Adriano

Professeur, Ingénieur et acheteur de produits fou Chine.

Un commentaire

  1. 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"?

Laisser une réponse

Votre adresse email ne sera pas publiéeLes champs requis sont surlignés *

*