Go Down

Topic: Question sur le détecteur de couleur TCS3200 (Read 329 times) previous topic - next topic

sungjung

Mar 16, 2018, 02:16 pm Last Edit: Mar 16, 2018, 02:24 pm by sungjung
Bonjour à tous,
nous sommes des lycées actuellement en train de travailler sur un projet,
et nous projetons d'utiliser le détecteur de couleurs TCS3200. Voici notre code actuel :
Code: [Select]
[code]
//définition des pins
#define S0 (mettre pin)
#define S1 (mettre pin)
#define S2 (mettre pin)
#define S3 (mettre pin)
#define sensorOut (mettre pin)

//initialisation de la variable fréquence
int frequence = 0;

void setup() {
  //définition des pins comme sorties ou entrées
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);

  //fréquence échelonnée à 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);

  Serial.begin(9600);
}

void loop() {
  // préparer les photodiodes "rouge"
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  //lire la frréquence de sortie
  frequence = pulseIn(sensorOut,LOW);
  //redéfinition de la fréquence sur le modèle RGB de 0 à 255
  frequence = map(frequence, //fréquence mini, //fréquence maxi,255,0);
  //afficher la valeur sur le moniteur série
  Serial.print("R=");
  Serial.print(frequence);
  Serial.print(" ");
  delay(100);

  //préparer les photodiodes "vert"
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  //lire la fréquence de sortie
  frequence = pulseIn(sensorOut, LOW);
  //redéfinition de la fréquence sur le modèle RGB de 0 à 255
  frequence = map(frequence, //fréquence mini, //fréquence maxi,255,0);
  //afficher la valeur sur le moniteur série
  Serial.print("G=");
  Serial.print(frequence);
  Serial.print(" ");
  delay(100);

  //préparer les photodiodes "rouge"
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  //lire la fréquence de sortie
  frequence = pulseIn(sensorOut, LOW);
  //redéfinition de la fréquence sur le modèle RGB de 0 à 255
  frequence = map(frequence, //fréquence mini, //fréquence maxi,255,0);
  //afficher la valeur sur le moniteur série
  Serial.print("B=");
  Serial.print(frequence);
  Serial.println(" ");
  delay(100);

}
[/Code]

Remarquez qu'il nous manque encore certaines valeurs, nous n'avons pas encore acheté le détecteur, et donc nous n'avons pu faire de tests.

Nous avons donc un code qui arrive à détecter la couleur et afficher les valeurs RGB dans le moniteur de série. C'est déjà bien, mais pour notre projet, nous aimerons récupérer ces valeurs, les comparer avec des valeurs de base (avec une certaine marge) pour ensuite faire différentes actions en fonction de la couleur détectée. J'espère avoir été assez clair...

Merci en avance de votre aide :)

PS : Est-ce vraiment nécessaire d'afficher les valeurs sur le moniteur de série, ou peut-on directement les exploiter, même si dans ce cas je suppose qu'il vaudrait mieux créer trois variables "frequence" différentes ?

Christian_R

Le moniteur série permet de visualiser les variables du programme, on peut bien sûr les utiliser directement dans le code.
Christian

Go Up