Hier ein kleines Beispiel, wie man eine Gabellichtschrange betreibt.
Bauteile
- Gabellichtschranke (5/16 „Schlitz PCB Lichtschranke Sensor HY860H-A)
- 2x 220 Ohm Widerstand
- 1x 10k Ohm Widerstand
- 1x LED

Sketch:
int sensorPin = A0;
int sensorValue = 0;
int ledPin = 13;
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
if (sensorValue > 512) {
digitalWrite(ledPin, LOW);
}
else
{
digitalWrite(ledPin, HIGH);
}
delay(100);
}Code-Sprache: JavaScript (javascript)
Versuch mit Zählscheibe
Da ich die Schaltung schonmal stehen hatte, dachte ich mir „mach ich doch gleich mal ein Test mit Motor und Zählscheibe“ und das hat so ausgesehen.

und das ist der Sketch dazu:
int sensorPin = A0;
int sensorValue = 0;
int ledPin = 13;
static unsigned long timeStamp = 0L;
unsigned long countSlots = 0;
// erst wenn es einen hohen Wert und einen tiefen Wert gibt,
// erst dann ein "countSlots" mehr
bool sensorAn = false;
bool sensorAus = false;
void setup()
{
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
Serial.begin(9600);
}
void loop()
{
sensorValue = analogRead(sensorPin);
// Serial.println(sensorValue);
if (sensorValue > 100) {
digitalWrite(ledPin, LOW);
sensorAn = true;
}
else
{
digitalWrite(ledPin, HIGH);
sensorAus = true;
if(sensorAn && sensorAus){
countSlots++;
sensorAn = false;
sensorAus = false;
}
}
getSpins();
// kein delay()einbauen, sonst wird nicht alles gezählt
//delay(10);
}
void getSpins(){
if(millis() - timeStamp >= 60000L){
// gezählte Schlitze in einer Minute
Serial.print("countSpin: ");
Serial.println(countSlots);
// Umdrehungen pro Minute, es sind 23 Schlitze in der Zählscheibe
int rpm = countSlots / 23;
Serial.print("rpm: ");
Serial.println(rpm);
// reset Daten
timeStamp = millis();
countSlots = 0;
}
}Code-Sprache: JavaScript (javascript)