ITIS “F.GIORDANI” Caserta
A.S. 2017/18
classe: 4D informatica
indirizzo di studio: Informatica e Telecomunicazione – articolazione Informatica
Materia: Informatica
Programmatore:Bonomo Alessandro
Sistema Operativo: Windows 10
Linguaggio: Arduino
Obiettivo didattico:
Programmare il sensore di colore come una classe.
Obiettivo dell’esercitazione:
Far riconoscere il colore al sensore.
Elenco attrezzature e materiali:
  1. Scheda arduino.
  2. Breadboard.
  3. Sensore di colore.
  4. Cavo usb per collegare Arduino.

 

Codice Arduino(vers. 2.0):
class sensoreColore
{
  private:
  int r,g,b; //colori
  int out = 7;  //Rileva il segnale in ingresso all'Arduino
  int s0 = 1;   //Rileva la Frequenza
  int s1 = 2;   //Rileva la Frequenza
  int s2 = 3;   //Rileva il Colore
  int s3 = 4;   //Rileva il Colore
  public:
  sensoreColore()
  {
    //configurazione di default
    out = 2;  
    s0 = 3;   
    s1 = 4;   
    s2 = 5;   
    s3 = 6;   
    pinMode(s0, OUTPUT);
    pinMode(s1, OUTPUT);
    pinMode(s2, OUTPUT);
    pinMode(s3, OUTPUT);
    pinMode(out, INPUT);
    //Frequenza al 100/100
    digitalWrite(s0, HIGH);
    digitalWrite(s1, HIGH);
  }
  sensoreColore(int out,int s0,int s1,int s2,int s3)
  {
    //configurazione con parametri
    this->out=out;  
    this->s0=s0;   
    this->s1=s1;   
    this->s2=s2;   
    this->s3=s3;  
    pinMode(s0, OUTPUT);
    pinMode(s1, OUTPUT);
    pinMode(s2, OUTPUT);
    pinMode(s3, OUTPUT);
    pinMode(out, INPUT);
    //Frequenza al 100/100
    digitalWrite(s0, HIGH);
    digitalWrite(s1, HIGH); 
  }
  int rilevaBlue()
  {
     int b;
     digitalWrite(s2, LOW);
     digitalWrite(s3, HIGH);
     b = pulseIn(out, digitalRead(out));
     return b;
  }
  
  int rilevaVerde()
  {
     int v;
     digitalWrite(s3, HIGH);
     digitalWrite(s2, HIGH);
     v = pulseIn(out, digitalRead(out));
     return v;
  }
  
  int rilevaRosso()
  {
     int r;
     digitalWrite(s2, LOW);
     digitalWrite(s3, LOW);
     r = pulseIn(out, digitalRead(out));
     return r;
  }

};


//Pin 
const int out = 7;  //Rileva il segnale in ingresso all'Arduino
const int s0 = 1;   //Rileva la Frequenza
const int s1 = 2;   //Rileva la Frequenza
const int s2 = 3;   //Rileva il Colore
const int s3 = 4;   //Rileva il Colore
int R,G,B; //colori
sensoreColore sensoreColoreObj=sensoreColore(out,s0,s1,s2,s3); 
//istanzio un oggetto della classe sensore di colore
void setup()
{
  Serial.begin(9600);
  
}

void loop()
{
  R=sensoreColoreObj.rilevaRosso();
  B=sensoreColoreObj.rilevaBlue();
  G=sensoreColoreObj.rilevaVerde();
  Serial.print(" Frequenza Rosso: ");
  Serial.print(R, DEC);
  Serial.print("  Frequenza Verde: ");
  Serial.print(G, DEC);
  Serial.print("  Frequenza Blu : ");
  Serial.print(B, DEC);
  // Se la Frequenza del rosso è minore del verde e del blu, prevale il colore Rosso
  if (R < B && R < G )
  {
    Serial.println("    Colore Rosso");
    delay (2000);
  }
  
   // Se la Frequenza del verde è minore del rosso e del blu, prevale il colore Verde
  if (G < R && G < B)
  {
    Serial.println("    Colore Verde");
    delay (2000);
  }
  
  // Se la Frequenza del blu è minore del verde e del rosso, prevale il colore Blu
  if (B<R && B < G )
  {
    Serial.println("    Colore Blu");  
    delay (2000);
  }
  
}

Descrizione top-down dei passi realizzativi:

  1. Realizzare il circuito
  2. Scrivere il codice arduino
  3. Collegare la scheda arduino al pc tramite il cavo usb
  4. Caricare il programma cliccando sul pulsante “carica” dell‘ambiente software arduino

Test finale:
Osservare il funzionamento del sensore di colore.