LED blinken lassen und gleichzeitig mit Fotodiode auslesen

Gast #4984174
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.