Le résultat pourrait servir en quelque sorte de semi-duplex Morse code application ou même comme un relais ou un isolateur. Qu’il est testé, la LED procède tension quand il sent la lumière de longueur d’onde identique ou moindre qu’il a été conçu pour. Toutefois, les différentes marques ou structures de LEDs diffère de ses capacités. J’ai fourni le code source pour Arduino pour référence.
/ * Illustre l’utilisation de LED comme un capteur et l’émetteur.
Quand LED A1 ou A2 sent d’entrée, l’autre émet
léger selon la séquence de clignotement détectée * /
#include « pitches.h »
const int led1 = A0 ;
const int led2 = A1 ;
const int breakTime = 3000 ; dans la SP
const int haut-parleur = 8 ;
int valeur1, valeur2 ;
déclaration1 int = 250 ;
Seuil2 int = 250 ;
int numNotes = 4 ;
timeout booléen = false ;
long temps = 0 ;
la mélodie d’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() {}
valeur1 = analogRead(A0) ;
value2 = analogRead(A1) ;
Si (value1 > = déclaration1) {}
Serial.Print ("valeur 1:") ;
Serial.println(value1) ;
temps = millis() ;
out(LED1,LED2,threshold1) ;
pinMode(led2,INPUT) ;
Timeout = false ;
}
ElseIf (value2 > = Seuil2) {}
Serial.Print ("valeur 2:") ;
Serial.println(value2) ;
temps = millis() ;
out(LED2,LED1,threshold2) ;
pinMode(led1,INPUT) ;
Timeout = false ;
}
}
Sub out (int a, int b, int seuil) {}
pinMode(b,OUTPUT) ;
Delay(20) ;
tandis que (timeout! = true) {}
int valeur = analogRead(a) ;
Si (valeur > = seuil) {}
analogWrite(b,value) ;
temps = millis() ;
}
else {}
analogWrite(b,0) ;
}
if(Millis() - temps > = la récréation) {}
Timeout = true ;
playTone() ;
}
}
}
void playTone() {}
pour (int thisNote = 0; thisNote < numNotes ; thisNote ++) {}
int noteDuration = 1000/noteDurations [thisNote] ;
ton (8, melody[thisNote],noteDuration) ;
int pauseBetweenNotes = noteDuration * 1.30 ;
Delay(pauseBetweenNotes) ;
noTone(8) ;
}
}
___________________________________________________________________
Comme vous pouvez le voir sur la vidéo, la LED rouge ne peut pas répondre (transmettre) assez rapide pour le signal reçu.
Ceci suggère que la LED rouge possède des propriétés capacitives mais peut-être différer en raison de l’heure tenue et décharge de LED différent. Quand la LED blanche transmet, son très clair qu’avec chaque intervalle rapide des signaux, la lumière blanche était capable de transmettre en conséquence et avec un délai minimal.
En termes de sensibilité, la LED rouge gagnerait haut la main. Lumière blanche se compose de rayons de large spectre et la longueur d’onde est indétectable par la LED rouge sauf s’il est mis très très près. Avec la LED rouge, la distance entre l’émetteur et le récepteur pour détecter les succès pourrait être plus grande. Cependant, nous devons mettre en compte que le bruit provenant de l’atmosphère était sans doute un gros inconvénient, car l’expérience a été faite sous un éclairage fluorescent. Ce problème a été partiellement résolu par étalonnage possibles valeurs reçues avant d’écrire les valeurs de seuil de deux capteurs. Son très simple. Les fonctions de haut-parleur piezo pour montrer la fin de la transmission et l’Arduino vont commencer les deux entrées de détection à nouveau.
Le code de test utilisé est le suivant :
void setup() {}
Serial.Begin(9600) ;
pinMode(A0,INPUT) ;
pinMode(A1,INPUT) ;
}
void loop() {}
int valeur1 = analogRead(A0) ;
int value2 = analogRead(A1) ;
Serial.Print ("valeur 1 =") ;
Serial.Print(value1) ;
Serial.Print ("\tValue 2 =") ;
Serial.println(value2) ;
Delay(300) ;
}
Également inclure le fichier pitches.h obtenu à partir de la page d’Arduino.
Les dessins de circuit ont été effectuées sur Fritzing . Il est open-source comme l’Arduino.