fotocellule e arduino

o provato a costruire delle fotocellule tipo cancello utilizzando un emettitore e ricevitore ad infrarossi 950nm il problema e che il sensore risente dellla luce ambientale del sole creando interferenze come fanno i cancelli elettrici ad non avere questi problemi?

Ciao, innanzi tutto il vetrino rossoscuro che tutti i sensori possiedono sono dei filtri i quali tagliano una buona parte della luce infrarossa di disturbo, poi l'elettronica preleva un campo di frequenze da X a Y

ciao

Usa un TSOPxx38 (ricevitore telecomando a infrarossi) e un emettitore IR a 38Khz. Circuito: come http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Il pin di uscita segnale 38kHz é il pin 11 e non puó essere modificato a causa uso del rispettivo timer.

#define RXB 14
#define TX 11 
boolean transmitting_IR; //transmission flag

void turn_off_IR () //spegne segnale 38kHz su pin 11.
{
  TCCR2A = 0; // Disconnect PWM
  TCCR2B = 0; // Stops the timer
  OCR2A = 0;  // No timer top
  digitalWrite(11, LOW);                // Ensure output is off  
  transmitting_IR = false;
}

void turn_on_IR ()  // accende segnale 38kHz su pin 11.
{
  //   Set up Timer2 (which can be connected to pins 3 and 11)
  //   For full details, see:
  //   arduino.cc/en/Tutorial/SecretsOfArduinoPWM
  //   The syntax here has me baffled, but the patterns of usage
  //   are clear if you look at the ATMega328 diagrams.
  //   _BV appears to stand for 'bit value'
  //   Different bits need to be set to control each timer
  //   Refer to diagrams for clarity

  TCCR2A = _BV(WGM21) | _BV(COM2A0); // This mode toggles output once per timer cycle
  TCCR2B = _BV(CS20);  // Do not scale the clock down - use 16 MHz timer rate.
  OCR2A = 210; // Divide sys. clock by 210, 1/2 cycle = 76 khz, 1 cycle = 38 khz
  transmitting_IR = true;
}


void detectIR()
{
    digitalwrite(13, digitalRead(RXB));  
    // il LED su Pin 13 si accende quando il fascio luminoso della fotocellula non é interotta
}


void setup(){  
  pinMode(TX, OUTPUT);
  pinMode(RXB, INPUT);
  pinMode(13,OUTPUT);
  turn_on_IR();
  delay(100);
}

void loop(){
  detectIR(); // search for IR
  delay(50);  
}

Ciao Uwe

molte grazie, il tsop2238 non sapevo neanche d'averlo, sarà la fortuna.