Servo mit Lichtschranke

Hallo, Ich möchte einen Servo von 45 grad auf 90 grad steuern wenn eine Münze durch eine Gabellichtschranke fällt.Ich habe es schon ewig probiert, aber habe es einfach nicht hinbekommen >:( :( .

Freue mich auf Anwort, danke im Voraus. Grüße Aaron

Dann zeig uns doch mal deinen Versuch.

Danke für die schnelle Antwort, hier der Code:

int licht;
Servo servoblau;

void setup() {
 // put your setup code here, to run once:
Serial.begin(9600);
servoblau.attach(11);
}

void loop() {
 // put your main code here, to run repeatedly:
licht = analogRead(1);
Serial.print(licht);

if (licht < 1023) {
 servoblau.write(45);
delay(50);
servoblau.write(90);
}  
}

Ich denke bei deiner Abfrage Licht<1023 wird immer wahr sein also gibt er das Signal Servo auf 45° nach 50ms gibt er das Signal 90°.
Ich denke der Sketch macht das was er soll die frage ist was willst du denn genau?
Hast du auch einen Schaltplan?
Ist die Lichtschranke mit Analog Ausgang?

1023 bekommst du nur wenn der Analog Eingang mit exakt der Spannung gefüttert wird die am µC anliegt.
Gruß
DerDani

Du läßt Dir doch mittels Serial.print(licht); ständig den Meßwert ausgeben, da kannst Du sehen, welcher Wert bei Münze in der Lichtschranke und außerhalb angezeigt wird. Diese Werte gilt es zu unterscheiden.

Beispiel: Wert1 = 1023; Wert2 = 500 dann Licht<700.

Ob 50 ms für die Bewegung des Servos ausreichen, wäre noch zu prüfen. Diese Zeit würde ich zunächst vergrößern.

Zusätzlich ist die Anweisung "analogRead(1);" nicht richtig. Der Pin 1 ist ein digitaler Pin, du solltest einen von A0 bis A5 nehmen. Das aber auch nur, wenn sicher ist, dass der Sensor eine analoge Spannung ausgibt. Sonst soltest du es mit "digitalRead(2);" machen, auf keinen Fall mit 0 oder 1, die sind für den USB-Port reserviert.

HotSystems: Zusätzlich ist die Anweisung "analogRead(1);" nicht richtig. Der Pin 1 ist ein digitaler Pin, du solltest einen von A0 bis A5 nehmen. Das aber auch nur, wenn sicher ist, dass der Sensor eine analoge Spannung ausgibt.

Doppelter Einspruch!

analogRead erkennt das und korrigiert entsprechend. Dennoch ist A1 natürlich deutlicher.

Man kann durchaus digitale Signale analog lesen, ist nur langsamer und man muss es in den üblichen Grenzen interpretiern.

Whandall: Doppelter Einspruch!

analogRead erkennt das und korrigiert entsprechend. Dennoch ist A1 natürlich deutlicher.

Man kann durchaus digitale Signale analog lesen, ist nur langsamer und man muss es in den üblichen Grenzen interpretiern.

Ja, ok. Ich habe es vermutet, war aber nicht sicher, dass der Compiler so schlau ist. ;)

Aber warum "doppelter Einspruch" ?

Ich bin schon der Meinung, das man eine Erklärung eindeutig abgeben sollte. Gerade wenn es ein Anfänger ist.

  1. analogRead erkennt das und korrigiert entsprechend (es macht nicht der Compiler, sondern die Funktion analogRead)

  2. man kann digitale Signale durchaus analog lesen, siehe oben.

Das macht für mich zwei Punkte, deshalb doppelt.

Hallo, danke für die schnelle Antwort ich habe am seriellen Monitor den Wert abgelesen er ist 1023 und wenn etwas da zwischen kommt 1019-1018.

ich habe die LED der Schranke an 3,3v den Fotowiderstand an 5 genau so wie den Servo. Der Servo zuckt immer wenn das Arduino angeschlossen ist und wenn man den Sketch nimmt und eine LED herein Programmirt dann klappt es. Grüße Aaron

... und wenn man den Sketch nimmt und eine LED herein Programmirt dann klappt es.

Sorry, was heißt das bitte auf deutsch?

Und den Servo direkt am arduino anzuschließen ist meist auch keine gute Idee. Zu guter Letzt: eine Unterbrechung der Lichtschranke sollte DEUTLICH kleinere Werte am ADC ergeben. Hier passt sicher der (unbekannte) Aufbau nicht.

Ich habe bis jetzt nur einen Fotowiderstand gegenüber einer blauen LED.

Hallo Norakel,

Ein Foto wiederstand gegenüber einer blauen LED ist so ziemlich das ungünstigste um eine Lichtschranke zu bauen da Fotowiederstände sehr träge sind und auf die gesamte helligkeit reagieren der "reine" blauanteil LED macht noch ihr übriges. Suche mal nach "Gabellichtschranke Arduino" dann siehst du ein paar Aufbauten die dich auf jeden Fall weiter bringen sollten. Gruß DerDani

norakel: Hallo, danke für die schnelle Antwort ich habe am seriellen Monitor den Wert abgelesen er ist 1023 und wenn etwas da zwischen kommt 1019-1018.

Da ist auch der Widerstand des Spannungsteilers für den Fotowiderstand falsch bemessen. Welchen Widerstand verwendest Du? Grüße Uwe

Wäre die hier was http://www.segor.de/#Q=Lichtschranken-Modul&M=1? Könnte es ch aber erst morgen besorgen könntest du mir vielleicht mit dem Code weiterhelfen? Danke im Voraus.

Whandall: 2. man kann digitale Signale durchaus analog lesen, siehe oben.

Man kann.... ist also nicht verkehrt es anders zu machen.

Wie welcher widerstand?welcher Fotowiderstand?

Sorry,wenn ich doofe Fragen stelle aber ich bin nur 11jahre alt. Aber könnte mir vielleicht irgendjemand mit dem Code oder dem Schaltplan helfen? Hier nochmal genaue Beschreibung:wenn etwas (Münze) durch die Lichtschranke fällt dann soll der Servo von 90grad auf 180grad und wieder zurück gehen. Danke im Voraus.

http://popovic.info/html/arduino/arduinoUno_1.html#Analoge_Werte_erfassen

https://www.youtube.com/watch?v=OIWk-vZWloc

http://funduino.de/nr-6-fotowiderstand

Grüße Uwe