IR Lichtschranke gegen Taster tauschen

Hallo Leute

Ist es möglich eine IR Lichtschranke gegen einen Taster zu tauschen?

Hintergrund: Bekomme jetzt bald ein "ammo counter" der in NERF Gewehren zum Einsatz kommt. Möchte diesen in einem Paintball markierer einbauen und befürchte das die Lichtschranke zu langsam dafür ist.
Möchte daher die Lichtschranke tauschen um mechanisch zu zählen bei betätigen des Triggers.

Hier der link wo man die Hardware sieht:
Hardware

Hier der Link zum code:
Ammo counter code

Ist es möglich ohne viel am Code zu ändern?

Vielen Dank

Ob dein Vorhaben Sinn macht, kann ich nicht sagen, aber wenn du den entsprechenden Pin als digitale Auswertung definierst, solle das funktionieren.

OK.. Vielen Dank für deine Hilfe
Werde das probieren.

Gartenkralle:
OK.. Vielen Dank für deine Hilfe
Werde das probieren.

Wie schon geschrieben, kenne ich den Hintergrund nicht, allerdings kann es durchaus nötig sein, den Taster (Eingangspin) zu entprellen. Das kannst du per Hard- oder Software machen.

Habe jetzt mal etwas gegoogelt und gesehen das die IR Schranke auf A2 hängt. Das ist doch ein digitaler pin. Also brauche ich "nur" im Code folgendes ändern? :

Zeile 136
//read the analog in value
Int sensorValue = analogRead(irSensorPin);

Zu

//read the analog in value
Int sensorValue = digitalRead(irSensorPin);

Oder ist es doch nicht so einfach?

Und da danke das du auch das entprellen erwähnt hast. Werde das per software machen. Also eine Wartezeit einbauen da der Taster e nur alle paar Sekunden gedrückt wird.

Mit "A2" definierst du den analogen Pin.
Mit deinen Beispielen definierst du den als digitalen Eingang.
Also ist das richtig.
Und das "Entprellen" kannst du auch so machen.

Gartenkralle:
Habe jetzt mal etwas gegoogelt und gesehen das die IR Schranke auf A2 hängt. Das ist doch ein digitaler pin. Also brauche ich "nur" im Code folgendes ändern? :

Zeile 136
//read the analog in value
Int sensorValue = analogRead(irSensorPin);

Zu

//read the analog in value
Int sensorValue = digitalRead(irSensorPin);

Oder ist es doch nicht so einfach?

Und da danke das du auch das entprellen erwähnt hast. Werde das per software machen. Also eine Wartezeit einbauen da der Taster e nur alle paar Sekunden gedrückt wird.

Du musst auch noch die Auswertung anpassen. Der Analogread bringt dir einen Wert zwischen 0 und 1023, der Anschließend auf 0-100 gemappt wird. Digitalread gibt 0 oder 1. Die 1 überschreitet nicht die Auswerteschwelle. Weiter unten wird in der Loop nochmals der Analogwert (Test ob "Dart has cleared") benutzt.

131	void loop() {
132	  
133	  // Monitor IR Beam
134	  //----------------------------------------------------//
135	
136	  // Read the analog in value
137	  int sensorValue = analogRead(irSensorPin);
138	
139	  // Map it to the range of the analog output
140	  int outputValue = map(sensorValue, 0, 1023, 0, 100);
141	
142	  // Check to see if dart has fired
143	  if (outputValue > fireValue)
144	  {
           [...]}

174	  // Check to see if dart has cleared
175	  if (outputValue <= idleValue) {
176	    hasCleared = true;
177	  }

Theseus:
Du musst auch noch die Auswertung anpassen. Der Analogread bringt dir einen Wert zwischen 0 und 1023, der Anschließend auf 0-100 gemappt wird. Digitalread gibt 0 oder 1. Die 1 überschreitet nicht die Auswerteschwelle. Weiter unten wird in der Loop nochmals der Analogwert (Test ob "Dart has cleared") benutzt.

Habe es nun folgend geändert;

int outputValue = map(sensorValue, 0, 1023, 0, 100);

Zu

Int outputValue = digitalRead(inPin) ;

Und

/ Check to see if dart has cleared
if (outputValue <= idleValue) {
hasCleared = true;

Zu

/ Check to see if dart has cleared
if (outputValue <= true) {
hasCleared = true;

Sollte man in Zeile 60 auch

Int irSensorPin = A2

Ändern zu

InPin = A2

Hoffe das passt alles. Bin leider noch sehr am Anfang in diesen Sachen