Pages: [1]   Go Down
Author Topic: Benötige Hilfe bei LED-Ansteuerung  (Read 641 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Community,
ich möchte mit dem Arduino Uno Daten über das sichtbare Licht übertragen. Funktioniert auch alles (~200Byte/s), aber nur über wenn ich die zu sendenden Daten über den SerialMonitor sende(Anhang "VLC_Serial"). Aus dem Programm selbst bekomm ich die LED nicht angesteuert (Anhang "VLC_Stream) und ich komme einfach nicht drauf. Ich denke, es fehlt nicht viel, aber meine c-Künste sind etwas amateurhaft... anscheinend. Für Hilfe/Tipps wäre ich sehr dankbar.
Grüße
der Fred

* VLC_Serial.ino (6 KB - downloaded 16 times.)
* VLC_Stream.ino (5.8 KB - downloaded 13 times.)
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20295
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eigentlich müßte ein LED mit Vorwiderstand an der TX-Kanal einer seriellen Schnittstelle ( Hardware oder Software emuiert ) und ein Fototransistor mit eienm Pulldown-Widerstand an RX genügen um eine optiche Schnittstelle zu bauen. Dieser Aufbau ist aber empfindlich gegenüber Umgebungslicht. Da ist es besser ein Moduliertes Signal zu verwenden; zB als Empfänger ein TSOP und als Sender eine LED die mit einem UND-Gatter die Wechselspannung aufmoduliert bekommt.

Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe, erstmal Danke für deine Antwort. Die bisherige Signal-Modulation genügt mir und die Ergebnisse sind auch ausreichend. Mein Problem besteht eigentlich nur darin, dass ich nicht verstehe, wieso die LED in der Datei "VLC_Stream" nicht genauso leuchtet bei High-Pegel "1" wie in der anderen Datei. Meine einzige Änderung besteht darin, dass ich die zu sendenden Bytes nicht über SerialRead() sondern direkt von einem char array einlese und senden will. Das Problem muss irgendwo in der Schnittstelle von gelesenem Byte und LED-Ansteuerung liegen, aber ich stehe im Wald  smiley-confuse
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe einen Ansatz gefunden, worin das Problem liegen könnte. Die Daten die von Serial.Read() kommen haben doch 8-N-1-Format! Könnte das der Grund sein?
Denn wenn ich ein "A" in den SerialMonitor eingebe bei
char in = Serial.read();
wird die LED angesteuert.
Wenn ich hingegen
char in = 65;
Serial.write(in);

schreibe, wird die LED nicht mehr angesteuert.

Könnte da der Fehler liegen?
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20295
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Denn wenn ich ein "A" in den SerialMonitor eingebe bei
char in = Serial.read();
wird die LED angesteuert.
Welche LED wird beim Empfangen angesteuert?
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Uwe,
nicht beim Empfangen. Die LED ist der Sender! Sonst gar nichts! smiley ...definiert an PIN 12.
Was ich mittlerweile herausgefunden habe: Von Serial.Read() wird das ASCII-Zeichen PLUS(!) '1101' gesendet (werden wohl Parität und Stopbit sein).
Bei Eingabe 'A' in den SerialMonitor gibt der Code
      in = Serial.read();
      Serial.println(in,BIN);
      Serial.write(in);
folgendes aus:
      1000001
      A1101
'1101' (Dezimal '13')  werden erst im nächsten Zyklus in die Var. "in" geschrieben. Wie kann ich das ohne Serial.Read()-Funktion nachbauen bzw. wo wird das 1101 im Code benötigt?
« Last Edit: February 11, 2013, 09:32:51 am by Fredstar » Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 236
Posts: 20295
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eine LED als Empfänger ist nicht sehr effizient bzw sensibel bessere ein Fototransistor.
grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich glaube ich drücke mich nicht deutlich aus  smiley-roll-sweat
Die LED sendet, die Photodiode empfängt. Das Problem liegt einzig und allein im Code, denn über die serielle Eingabe sendet die LED und die Photodiode empfängt. Wenn ich versuche, die zu übertragenden Zeichen in den Code direkt zu implementieren, sendet die LED nicht (also kann die PD auch nichts empfangen)...
Danke für die Geduld & Hilfe im Voraus!
Logged

Pages: [1]   Go Up
Jump to: