LED blinken lassen und gleichzeitig mit Fotodiode auslesen

Gast #4984174
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 :)
Gast #4984203
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
Gast #4984216
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
Gast #4984226
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?
Gast #4984242
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
Gast #4984263
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren