Lichtschranken Zähler

Hallo Forum,

ich habe folgende Idee:

einen Zähler der über eine Lichtschranke wenn die 10 mal etwas registriert eine bzw. zwei LEDs von Rot nach Grün Schaltet.

ich habe eine Fotodiode und eine Senderdiode ( ich bin mir nicht sicher wie diese LEDs heißen die Licht senden die das Auge nicht sehen kann). also ich habe einen Sender und Empfänger sagen wir es mal so.
Hat jemand eine Idee Für den Code das ich das überhaupt nicht hin bekomme. ich weiß nicht mal wie man die Fotodiode ansteuert...

wäre echt cool wenn mir jemand mit dem Code helfen könnte.

PS: mit noch Anfänger beim Arduino

Hallo,
Du hast also nichts?

Dann sage uns einmal, welchen "echten" Arduino Du nutzt, und-
einen Link zu den Datenblättern Deines Empfänger/Sender wäre auch nicht schlecht.
Gruß und Spaß
Andreas

onal13:
... ich bin mir nicht sicher wie diese LEDs heißen die Licht senden die das Auge nicht sehen kann ...

Wenn es eine Diode ist, die Infrarotlicht ausstrahlt, nennt man sie IR-LED.

onal13:
ich weiß nicht mal wie man die Fotodiode ansteuert...

Hier ein Schaltplan, wie ich eine BPW34 (IR-Fotodiode) überwache:

Am Analogeingang liegt dann eine Spannung an, deren Höhe davon abhängt, wieviel IR-Licht die Fotodiode empfängt. Wenn Du die Schaltung nicht vom Arduino mit Energie versorgst, musst Du die GND-Anschlüsse von Arduino und Energiequelle verbinden.

Was den Code angeht, empfehle ich Dir, einfach mal die Beispiele in der IDE durchzugehen. Wenn Du nicht gerade unterirdisch dämlich bist, solltest Du den Code dann locker hinbekommen.

Gruß

Gregor

onal13:
Hat jemand eine Idee Für den Code

Ja, ich hätte da eine Idee.

Zeig mir doch mal deine Idee, dann kann ich dir sagen, ob sie der meinen ähnelt.

guntherb:
Zeig mir doch mal deine Idee, dann kann ich dir sagen, ob sie der meinen ähnelt.

ich hab noch keinen richtigen Code. Also ich noch relativ am Anfang mit Arduino. Also die Grundlagen haben drauf aber wenns um schwierigere Codes geht bin ich bisschen überfordert.

onal13:
... aber wenns um schwierigere Codes geht bin ich bisschen überfordert.

Wobei Dein Vorhaben mit sehr einfachem Code realisiert werden kann.

Gruß

Gregor

Wenn du die Grundlagen schon drauf hast, um so besser. Dann ist es nicht mehr so schwierig.

Fang doch erst mal an und male/schreibe auf (z.B. in Form eines Struktogrammes), was der Arduino tun soll. Und das möglichst detailliert und Schritt für Schritt.

wenn du das hast, dann ist der Schritt zum Code nicht mehr weit.

Statt eines Struktogrammes kannst Du auch einen Programmablaufplan zeichnen. Wenn Du das hast, ist es zum fertigen Sketch wirklich nicht mehr weit.

Gruß

Gregor

guntherb:
Wenn du die Grundlagen schon drauf hast, um so besser. Dann ist es nicht mehr so schwierig.

Fang doch erst mal an und male/schreibe auf (z.B. in Form eines Struktogrammes), was der Arduino tun soll. Und das möglichst detailliert und Schritt für Schritt.

wenn du das hast, dann ist der Schritt zum Code nicht mehr weit.

also das Programm soll folgendes können:

die Lichtschranke Also die IR-Led und fotodiode soll 10 mal etwas registrieren.
wenn die 10 mal etwas registriert hat soll eine Led grün aufleuchten und eine andere rote Led die vor den 10 malen leuchtet ausgehen.
was auch noch cool wäre wenn ich mit einem externen Taster noch das Programm reseten kann, dass er von vorne 10 mal zählt statt auf dem arduino den reset button drücken zu müssen.

onal13:
... soll 10 mal etwas registrieren.

Das ist genau das, was Du exakt formulieren musst. Was genau heißt „registrieren“? Jede Unterbrechung des Lichtstrahls? Oder nur eine Unterbrechung, die eine bestimmte Zeit dauert (oder die mindestens eine bestimmte Zeit dauert)?
Und was ist, wenn zwei Dinge gleichzeitig durch den Lichtstrahl laufen? Kann das überhaupt vorkommen?

Wenn Du das sagen kannst, ist der Rest nur noch ein bisschen Zählerei.

Gruß

Gregor

gregorss:
Das ist genau das, was Du exakt formulieren musst. Was genau heißt „registrieren“? Jede Unterbrechung des Lichtstrahls? Oder nur eine Unterbrechung, die eine bestimmte Zeit dauert (oder die mindestens eine bestimmte Zeit dauert)?
Und was ist, wenn zwei Dinge gleichzeitig durch den Lichtstrahl laufen? Kann das überhaupt vorkommen?

Gruß

Gregor

Also jede Unterbrechung. Ob es eine Fliege ist oder eine Hand. Also zwei Dinge gleichzeitig kann eigentlich nicht passieren aber jetzt wo du es sagst kann es passieren, dass z.B. wenn eine Hand registriert wird die sich dann bewegt dann nicht mehr die Schranke unterbricht aber dann wieder registriert wird und 2 mal gezählt wird obwohl es nur einmal ist. Wäre villeicht ganz gut wenn die Fotodiode paar sekunden wartet bevor sie wieder etwas registrieren kann.

Mit freundlichen Grüßen

gregorss:
Statt eines Struktogrammes kannst Du auch einen Programmablaufplan zeichnen.
Gruß

Gregor

Was ist ein Programmlaufplan?

mit freundlichen grüßen

onal13:
Was ist ein Programmlaufplan?

Was glaubst Du, weshalb ich den passenden Wikipedia-Artikel verlinkt habe?

Gruß

Gregor

Hallo,
einen Link zur Erklärung hast Du doch bekommen? Liest Du auch, was hier
geschrieben wird?

Im einfachen Grunde dokumentierst Du nur, vor- der Programmierung klitzeklein,
was genau Du mit dem µC (Arduino) vor hast.

Du schreibst z.B.
"Also die IR-Led und Fotodiode soll 10 mal etwas registrieren"

Hört sich ja toll an, ist hochwichtig- sagt aber nichts aus.
"Sicheres Auftreten bei völliger Ahnungslosigkeit" nennt man das.

Bis hier her…

Du merkst sicher schon, das sich dieser Thread totläuft. Mit allem was Du nicht
suchst oder brauchst.

Das liegt daran, das Du auf nichts eingehst.
Du hast einen Schaltplan bekommen- interessiert Dich nicht.
Es ist nach Datenblätter gefragt worden- interessiert Dich nicht.
Du hast einen Link zum Programmablaufplan bekommen- interessiert Dich nicht.
Du sagst, Du hast die Grundlagen drauf- wohl nicht!

Wenn Du nur quatschen willst, dann besorge Dir 50 Cent und stecke Sie in eine
Parkuhr. Vielleicht hört Die- Dir dann zu.
Gruß und Spaß
Andreas

SkobyMobil:
Hallo,
einen Link zur Erklärung hast Du doch bekommen? Liest Du auch, was hier
geschrieben wird?

Im einfachen Grunde dokumentierst Du nur, vor- der Programmierung klitzeklein,
was genau Du mit dem µC (Arduino) vor hast.

Du schreibst z.B.
"Also die IR-Led und Fotodiode soll 10 mal etwas registrieren"

Hört sich ja toll an, ist hochwichtig- sagt aber nichts aus.
"Sicheres Auftreten bei völliger Ahnungslosigkeit" nennt man das.

Bis hier her…

Du merkst sicher schon, das sich dieser Thread totläuft. Mit allem was Du nicht
suchst oder brauchst.

Das liegt daran, das Du auf nichts eingehst.
Du hast einen Schaltplan bekommen- interessiert Dich nicht.
Es ist nach Datenblätter gefragt worden- interessiert Dich nicht.
Du hast einen Link zum Programmablaufplan bekommen- interessiert Dich nicht.
Du sagst, Du hast die Grundlagen drauf- wohl nicht!

den Schaltplan hab ich nachgebaut jetzt habe ich eine Schaltung mit der ich nichts anfangen kann
den Artikel hab ich durchgelesen versteh ihn aber nicht
Datenblätter hab ich nicht weil ich die Bauteile bekommen habe

mal zu meiner Person ich Azubi
wir haben gerade erst mit arduino angefangen und ich dachte ich lass meine Ahnungslosigkeit lieber in einem Forum raus das denke ich auf sowas spezialisiert ist und mir helfen kann als ich in meinem betrieb.

Wozu ist denn so ein Forum deiner Meinung nach

onal13:
Wozu ist denn so ein Forum deiner Meinung nach

Jedenfalls nicht, um dir die Grundlagen beizubringen.
Die bestehen sicher nicht nur daraus, wie das Teil angeschlossen wird.

Grundlagen musst du dir selbst beibringen, dazu gibt es Bücher oder auch zahlreiche Beiträge im Web.
Und wenn du wie du schreibst, die Grundlagen schon kannst, warum stellst du uns nicht deinen ersten Sketch vor ?

HotSystems:
Grundlagen musst du dir selbst beibringen, dazu gibt es Bücher oder auch zahlreiche Beiträge im Web.
Und wenn du wie du schreibst, die Grundlagen schon kannst, warum stellst du uns nicht deinen ersten Sketch vor ?

int LED1 = 3; Schranke unterbrochen
int LED2 = 4;
int Fotodiode = A0;

void setup() {
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(A0,INPUT)

}

void loop() {

digitalWrite(4,HIGH);//normalzustand schranke nicht unterbrochen
digitalWrite(3,LOW);

}

das ist das was ich bis jetzt habe.
Nicht gerade viel

Ok, viel ist das in der Tat nicht.
Was soll denn der jetzige Sketch machen ?
Und eine Fotodiode sehe ich nur in der Initialisierung, danach nicht mehr. Genauso wie Led1 und Led2.
Warum verwendest du die nicht weiter ?

Und hier findest du weitere Informationen zu einer Fotodiode und deren Verwendung.

Edit:
Setze bitte zukünftig deinen Sketch in Code-Tags.

HotSystems:
Ok, viel ist das in der Tat nicht.
Was soll denn der jetzige Sketch machen ?
Und eine Fotodiode sehe ich nur in der Initialisierung, danach nicht mehr. Genauso wie Led1 und Led2.
Warum verwendest du die nicht weiter ?

Edit:
Setze bitte zukünftig deinen Sketch in Code-Tags.

Ich habe die Lichtschranke tatsächlich geschafft
hier der Code

int LEDInaktiv=5; //Led wenn Lichtschranke nicht durchbrochen 
int LEDAktiv=6; //Led wenn Lichtschranke durchbrochen
int LEDIr=7; //IR Led
int PD=A0; //Analoger Eingang der Photodiode
int val=0; //Messdaten int do_debug=1;
int do_debug=1;

void setup()
{
if (do_debug ==1) Serial.begin(9600); 
//benötigte Ports aktivieren 
pinMode(LEDAktiv, OUTPUT); 
pinMode(LEDInaktiv, OUTPUT); 
pinMode(LEDIr, OUTPUT); 
pinMode(PD, INPUT);
//IR Led einschalten
digitalWrite(LEDIr,HIGH); //einschalten der IR Diode 
}

void loop()
{
val=analogRead(PD); //Photodiode auslesen
if (val<60) //Wird der Lichtstrahl unterbrochen... 
{
digitalWrite(LEDAktiv, HIGH); 
digitalWrite(LEDInaktiv, LOW);
}
else
{
digitalWrite(LEDAktiv, LOW); 
digitalWrite(LEDInaktiv, HIGH);
}
if (do_debug ==1)
{ Serial.println(val); //Werte zum Serial Monitor senden
delay(1); }
}

jetzt fehlt nur noch der Zählmodus
das kriege ich aber nicht hin

was sind Code-tags?

mit freundlichen grüßen

Hallo,
einfacher Zähler geht recht einfach...

Du deklarierst

int Zähler;

dann setzt Du hier die Variable zum Zählen

if (val<60) //Wird der Lichtstrahl unterbrochen...
 {
 digitalWrite(LEDAktiv, HIGH);
 digitalWrite(LEDInaktiv, LOW);
Zähler++; // bei jeder Unterbrechung zählt der Zähler hoch
 }

und hier

 if (do_debug ==1)
 { Serial.println(val); //Werte zum Serial Monitor senden
 delay(1); 
Serial.println(Zähler); // Werte Zähler zum Serial Monitor senden
}

CodeTag´s findest Du im Editor oben links (</>)
Gruß und Spaß
Andreas