Het resultaat kan worden gebruikt in een soort van half-duplex Morse codetoepassing of zelfs als een relais of isolator. Als getest, de LED voltage voeren wanneer het zintuigen licht met dezelfde of lagere golflengte dan het was ontworpen voor. De verschillende merken of structuren voor LEDs verschilt echter haar vermogens. Ik bedoelde de broncode voor Arduino referentie.
/ * Demonstreert met behulp van LED als een sensor en de zender.
Wanneer de LED A1 of A2 input zintuigen, zal de andere uitzenden
lichte volgens de knipperende volgorde gedetecteerd * /
#include "pitches.h"
Const int led1 = A0;
Const int led2 = a1 worden verkregen;
Const int Haltetijd = 3000; in ms
Const int spreker = 8;
int waarde1; waarde2;
int threshold1 = 250;
int threshold2 = 250;
int numNotes = 4;
time-out van Boole = vals;
lange tijd = 0;
int melodie [] {} =
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 {}
waarde1 = analogRead(A0);
waarde2 = analogRead(A1);
Als (waarde1 > = threshold1) {}
Serial.Print ("waarde 1:");
Serial.println(Value1);
tijd = millis();
out(LED1,LED2,threshold1);
pinMode(led2,INPUT);
timeout = false;
}
anders als (waarde2 > = threshold2) {}
Serial.Print ("waarde 2:");
Serial.println(Value2);
tijd = millis();
out(LED2,LED1,threshold2);
pinMode(led1,INPUT);
timeout = false;
}
}
leegte uit (int, int b, int drempel) {}
pinMode(b,OUTPUT);
vertraging(20);
terwijl (time-out! = true) {}
int-waarde = analogRead(a);
Als (waarde > = drempel) {}
analogWrite(b,value);
tijd = millis();
}
else {}
analogWrite(b,0);
}
if(Millis() - tijd > = Haltetijd) {}
timeout = true;
playTone();
}
}
}
ongeldig playTone() {}
voor (int thisNote = 0; thisNote < numNotes; thisNote ++) {}
int noteDuration = 1000/noteDurations [thisNote];
Toon (8, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(8);
}
}
___________________________________________________________________
Zoals u van de video zien kunt, de rode LED niet reageren (zenden) snel genoeg om het ontvangen signaal.
Dit suggereren dat de rode LED heeft capacitieve eigenschappen maar afwijken als gevolg van het tijdstip van het bedrijf en geen kwijting van verschillende LED. Wanneer de witte LED verzendt, zijn heel duidelijk dat met elke snelle interval signalen, het witte licht kon dienovereenkomstig en met minimale vertraging te verzenden.
In termen van de gevoeligheid, zou de rode LED wint handen naar beneden. Wit licht bestaat uit breed spectrum stralen en de golflengte is niet detecteerbaar door de rode LED, tenzij het wordt zeer nauwlettend. Met de rode LED zou de afstand tussen de zender en ontvanger voor succesvolle sensing groter. Echter, moeten we rekening dat het lawaai ontvangen uit de atmosfeer ongetwijfeld een groot nadeel was als het experiment werd gedaan onder tl-verlichting. Dit probleem werd gedeeltelijk opgelost door het kalibreren van mogelijke ontvangen waarden voor het schrijven van de drempelwaarden van beide sensoren. Zijn zeer eenvoudig. De piëzo spreker functies aan het einde van de transmissie- en de Arduino te geven zal beginnen beide ingangen weer sensing.
De gebruikte testen code wordt hieronder weergegeven:
VOID Setup {}
Serial.begin(9600);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
}
void loop {}
int waarde1 = analogRead(A0);
int waarde2 = analogRead(A1);
Serial.Print ("waarde 1 =");
Serial.Print(Value1);
Serial.Print ("\tValue 2 =");
Serial.println(Value2);
delay(300);
}
Ook het bestand van de pitches.h verkregen uit de Arduino- pagina opnemen.
De circuit tekeningen werden uitgevoerd op Fritzing . Het is open-source zoals de Arduino.