Forum: Mikrocontroller und Digitale Elektronik LED blinken lassen und gleichzeitig mit Fotodiode auslesen


von Hasiman (Gast)


Lesenswert?

Hallo,

ich möchte gerne am Arduino LEDs blinken lasseb und aber gleichzeitig 
will ich die von der Fotodiode aufgenommenen Werte auslesen:
1
int ledROT = 3;
2
int ledIR = 4;
3
int analogPin = A3;
4
int val = 0;
5
void setup() {
6
  // put your setup code here, to run once:
7
8
 pinMode(ledROT, OUTPUT);
9
 pinMode(ledIR, OUTPUT);
10
 Serial.begin(9600);
11
  Serial.println();
12
}
13
14
void loop() {
15
  // put your main code here, to run repeatedly:
16
 int pinRead0 = analogRead(analogPin);
17
 float pVolt0 = pinRead0 / 1024.0 * 5.0;
18
    Serial.print(pVolt0);
19
    Serial.println();
20
    delay(100);
21
 
22
/*digitalWrite(ledROT, HIGH);   
23
delayMicroseconds(25);   
24
digitalWrite(ledROT, LOW);
25
delayMicroseconds(25);
26
*/
27
28
29
}

Hab hier gerade so ein Code geschrieben, die Fotodiode bekommt Werte, da 
ist kein Problem...
Aber ich weiß nicht wie ich den Teil mit der LED implementieren soll, 
sodass beides sogut wie gleichzeitig abläuft :/

Ich hoffe ihr könnt mir da helfen :)

von Martin K. (maart)


Lesenswert?

Dann fange doch erst mal langsam an und lasse zuerst mal nur die LED 
blinken. Wenn das klappt, kannst du weiter überlegen.

von Hasiman (Gast)


Lesenswert?

Die blinken schon, das ist garkein Problem.

Das Problem ist, dass die Fotodiode während dem Blinken die Werte 
aufnehmen soll. Bzw. wenn die LED auf HIGH ist...

von Martin K. (maart)


Lesenswert?

Na dann frag den analogen Pin in der Zeit ab, während die LED an ist.
Mit dem oben gezeigten Code blinkt aber nichts.
Warum wird der IR-Pin als AUSGANG definiert?

von Wolfgang (Gast)


Lesenswert?

Hasiman schrieb:
> Das Problem ist, dass die Fotodiode während dem Blinken die Werte
> aufnehmen soll. Bzw. wenn die LED auf HIGH ist...

Verplempere die Zeit Zeit nicht nur mit delay(), sondern messe die 
Helligkeit zwischendurch. Wenn du unabhängig von der Rechenzeit werden 
willst, benutze die Systemuhr des Arduino und frage sie mit millis() ab.
https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

von Hasiman (Gast)


Lesenswert?

1
int ledROT = 3;
2
int ledIR = 4;
3
int analogPin = A3;
4
int val = 0;
5
void setup() {
6
  // put your setup code here, to run once:
7
8
 pinMode(ledROT, OUTPUT);
9
 pinMode(ledIR, OUTPUT);
10
 Serial.begin(9600);
11
  Serial.println();
12
}
13
14
void loop() {
15
  // put your main code here, to run repeatedly:
16
 int pinRead0 = analogRead(analogPin);
17
 float pVolt0 = pinRead0 / 1024.0 * 5.0;
18
   
19
    digitalWrite(ledROT, HIGH);   
20
    delayMicroseconds(25);
21
   
22
    Serial.print(pVolt0);
23
    Serial.println();
24
    
25
    digitalWrite(ledROT, LOW);
26
    delayMicroseconds(25);

So hab des jetzt mal so gemacht und es klappt x'D ich versteh nicht 
wieso ich nicht von selbst draufgekommen bin.

Ich muss halt jetzt noch eine IR-LED implementieren ... hmm

von Martin K. (maart)


Lesenswert?

Du misst aber jetzt, wenn die LED aus ist.
(Oder wie hast du die LED angeschlossen? Kurzes Bein am Arduino?)

von Hasiman (Gast)


Lesenswert?

Ahja, wie kann ich die ausgegebenen Werte (leider sehr sehr sehr viele 
Werte) in eine Tabelle (Excel) speichern, damit ich dann einen Graphen 
plotten kann. Oder kann man das in C irgendwie direkt machen?

von Hasiman (Gast)


Lesenswert?

Martin K. schrieb:
> Du misst aber jetzt, wenn die LED aus ist.
> (Oder wie hast du die LED angeschlossen? Kurzes Bein am Arduino?)

So misst er irgendwie richtig, wenn ich HIGH und LOW vertausche kommen 
komische Werte raus, die nicht nachvollziehbar sind... @.@

von Martin K. (maart)


Lesenswert?

Hasiman schrieb:
> (leider sehr sehr sehr viele
> Werte)

Du würdest alle 50 MIKROsekunden einen Wert bekommen, wenn die serielle 
Schnittstelle so schnell wäre.....

von Martin K. (maart)


Lesenswert?

Hasiman schrieb:
> So misst er irgendwie richtig, wenn ich HIGH und LOW vertausche kommen
> komische Werte raus, die nicht nachvollziehbar sind... @.@

Frage nicht beantwortet....

von Hasiman (Gast)


Angehängte Dateien:

Lesenswert?

Martin K. schrieb:
> Hasiman schrieb:
>> So misst er irgendwie richtig, wenn ich HIGH und LOW vertausche kommen
>> komische Werte raus, die nicht nachvollziehbar sind... @.@
>
> Frage nicht beantwortet....

Die Schaltung der LEDs

von Hasiman (Gast)


Lesenswert?

Ich schalte gerade nur die Rote...und beachte die Werte der Widerstände 
etc. nicht..Basiswiderstand beispielsweise ist bei mir gerade ne 
andere...
mir geht es gerade nur rein um die Programmierung

von Martin K. (maart)


Lesenswert?

Dann ist ok.

von Wolfgang (Gast)


Lesenswert?

Hasiman schrieb:
> Die Schaltung der LEDs

Die Schaltung ist sehr gefährlich. Wenn du aus Versehen das Poti auf 0 
drehst, hast du einen Kurzschluss. Schalte besser (zusätzlich) einen 
Festwiderstand in Serie.

Das Poti kannst du dir in seiner Wirkung auch ganz sparen, wenn du nur 
den Festwiderstand verwendest und das Verhältnis von den beiden 
Verzögerungszeiten veränderst.

von Hasiman (Gast)


Lesenswert?

Festwiderstand ist dran, danke.
Poti brauch ich, da ich mit der Lichtintensität rumspiele :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.