El resultado podría ser utilizado en una aplicación de código de Morse de half-duplex o incluso como un relé o un aislador. Como prueba, el LED realiza tensión cuando detecta luz de longitud de onda igual o inferior que se diseñó para. Sin embargo, las marcas o diferentes estructuras de LEDs difiere sus capacidades. I proporciona el código fuente para Arduino para referencia.
/ * Muestra el uso de LED como un sensor y emisor.
Cuando LED A1 o A2 detecta entrada, la otra emitirá
luz según la secuencia parpadea detectada * /
#include "pitches.h"
const int led1 = A0;
const int led2 = A1;
const int recreo = 3000; en la EM
const int altavoz = 8;
int valor1, valor2;
int threshold1 = 250;
int threshold2 = 250;
int numNotes = 4;
tiempo de espera de tipo boolean = false;
tiempo = 0;
melodía de int [] = {}
NOTE_A4, NOTE_E4, NOTE_G4, NOTE_A4};
int noteDurations [] = {}
4, 4, 4, 4};
void setup() {}
Serial.Begin(9600);
pinMode(led1,INPUT);
pinMode(led2,INPUT);
pinMode(speaker,OUTPUT);
}
void loop() {}
valor1 = analogRead(A0);
valor2 = analogRead(A1);
Si (valor1 > = threshold1) {}
Serial.Print ("valor 1:");
Serial.println(value1);
tiempo = millis();
out(LED1,LED2,threshold1);
pinMode(led2,INPUT);
tiempo de espera = false;
}
else if (valor2 > = threshold2) {}
Serial.Print ("valor 2:");
Serial.println(value2);
tiempo = millis();
out(LED2,LED1,threshold2);
pinMode(led1,INPUT);
tiempo de espera = false;
}
}
void a (int a, int b, int umbral) {}
pinMode(b,OUTPUT);
Delay(20);
mientras que (tiempo de espera! = true) {}
int valor = analogRead(a);
Si (valor > = umbral) {}
analogWrite(b,value);
tiempo = millis();
}
Else {}
analogWrite(b,0);
}
if(Millis() - tiempo > = recreo) {}
tiempo de espera = true;
playTone();
}
}
}
{} void playTone()
para (int thisNote = 0; thisNote < numNotes; thisNote ++) {}
int noteDuration = 1000/noteDurations [thisNote];
tono (8, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
Delay(pauseBetweenNotes);
noTone(8);
}
}
___________________________________________________________________
Como se puede ver en el vídeo, el LED rojo no puede responder (transmitir) lo suficientemente rápido a la señal recibida.
Esto sugiere que el LED rojo tiene propiedades capacitivas, pero puede variar debido al tiempo de retención y descarga de diferentes LED. Cuando el LED blanco transmite, su muy claras señales de que con cada intervalo rápido, la luz blanca era capaz de transmitir en consecuencia y con mínima demora.
En cuanto a la sensibilidad, el LED rojo iba a ganar manos hacia abajo. Blanca luz consiste en rayos de amplio espectro y la longitud de onda es indetectable por el LED rojo a menos que se pone muy muy de cerca. Con el LED rojo, la distancia entre el transmisor y el receptor para la detección exitosa puede ser mayor. Sin embargo, debemos poner en cuenta que el ruido proveniente de la atmósfera era sin duda una gran desventaja ya que el experimento se realizó con luz fluorescente. Este problema fue resuelto parcialmente por calibración posible valores recibidos antes de escribir los valores de umbral de ambos sensores. Su muy simple. Las funciones de altavoz piezoeléctrico para mostrar el final de la transmisión y el Arduino comenzará detección ambas entradas otra vez.
A continuación se muestra el código de prueba:
void setup() {}
Serial.Begin(9600);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
}
void loop() {}
int valor1 = analogRead(A0);
int valor2 = analogRead(A1);
Serial.Print ("valor 1 =");
Serial.Print(value1);
Serial.Print ("\tValue 2 =");
Serial.println(value2);
Delay(300);
}
También incluye el fichero pitches.h Obtenido de la Página de Arduino.
Se realizaron los dibujos de circuitos en Fritzing . Es de código abierto como Arduino.