Photo-Interrupter

Massenzana – Grassano

Nome componente: Photo-Interrupter.


Come funziona: Il photo-interrupter è un sensore con un emettitore e un ricevitore di luce.  Quando un oggetto passa in mezzo al sensore il fascio di luce si interrompe e il ricevitore rileva la presenza di un oggetto che ostruisce.

Foto componente:

 

Istruzioni di collegamento:

Collegare il pin VCC del sensore ai +5V della scheda Arduino, il pin GND con il pin GND di Arduino, e il pin SIG con uno qualunque dei pin digitali della scheda.

 

Codice di esempio:

const int photoPin = 7;

void setup()
{
 pinMode(photoPin,INPUT);
 Serial.begin(9600);
}

void loop()
{
 if(digitalRead(photoPin))
 Serial.println("Ostruito");
 else
 Serial.println("Libero");
 
 delay(1000);
}

Joystick

Nome componente: JOYSTICK

 

 

 

 

 

Sigla modello: B103 3810

Il componente è una levetta analogica come quella presente sui joystick ps2;
E’ in grado di fornire in output i valori di x e y da 0 a 1023, che rappresentano la posizione della levetta nello spazio. Grazie a questi due valori possiamo definire la direzione della levetta.
Il componente inoltre produce in output anche un booleano, che sarà 0 se la levetta è premuta e 1 in caso non lo fosse.

 ISTRUZIONI COLLEGAMENTO:

Il componente è predisposto di 5 pin:

  1. Y: fornisce alla scheda il valore di y sul joystick, va collegato su pin analogico e fornisce valori tra 0 e 1023;
  2. X: fornisce alla scheda il valore di x sul joystick, va collegato su pin analogico e fornisce valori tra 0 e 1023;
  3. Bt: fornisce alla scheda un booleano, in funzione della pressione esercitata sul joystick (“0” premuto, “1” non premuto);
  4. Vcc: il pin utilizzato per alimentare il componente e va collegato sul 5 Volt;
  5. GND: il pin utilizzato per la massa.

 

Per il codice che abbiamo scritto non è stato necessario utilizzare alcuna libreria esterna, abbiamo gestito noi le casistiche.
L’unica libreria che è stato necessario utilizzare era fornita dal cpp ed è la <string.h>, e ci è servita per poter comporre la stringa da stampare sulla seriale.

Codice di esempio :

#include <string.h>
const int xPin = A1;   //Dichiara il pin per la x (A1)
const int yPin = A0;   //Dichiara il pin per la y (A0)
const int swPin = 7;   //Dichiara il pin dello switch (7)

/* Funzione che ritorna sotto forma di stringa
   la posizione della levetta analogica         */

String direzione(){
 int x = analogRead(xPin);     //Legge il valore di x
 int y = analogRead(yPin);     //Legge il valore di y
 bool z = digitalRead(swPin);  //Legge il valore di z
 String dir = "";
 
/* In base ai valori di x e y definiamo 
      la posizione della leva             */

 if ( x >= 0 && x <= 20 && y > 500 && y < 520 )
 dir = "sinistra ";
 //Serial.print("Sinistra");

else if ( y >= 0 && y <= 20 && x > 475 && y < 495 )
 dir = "su ";
 //Serial.print("Su");

else if ( x >= 475 && x <= 495 && y > 1015 )
 dir = "giu ";
 //Serial.print("Giu");

else if ( x >= 1015 && y > 500 && y < 520 )
 dir = "destra ";
 //Serial.print("Destra");

else 
 dir = "centro ";

/* Aggiunge alla direzione, un booleano che 
   indica se la levetta sia premuta o meno */

 dir += z;

// Ritorna la stringa composta da direzione + pressione
 return dir;
 }

/* Dichiariamo il tipo di utilizzo del pin 
  e inizializziamo la seriale              */
void setup()
{
pinMode(swPin,INPUT);
digitalWrite(swPin, HIGH);
Serial.begin(9600);
}

void loop()
{
Serial.print(direzione());
Serial.print("\n");
delay(500);
}