-         
+ Antworten
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: IR-Schaltung geht nicht

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585

    IR-Schaltung geht nicht

    Hallo!
    Ich benutze den ATmega8, und habe eine korrekt angesteuerte IR Sende Diode und einen TSOP1376 IR Empfänger, der auch korrekt angesteuert ist.
    Dann habe ich einen 12MHz Quarz, der zwei AVR's versorgt. (Das geht doch, oder?)

    Nun hier den SENDECODE:
    Code:
    $regfile = "m8def.dat"
    $crystal = 12000000
    Const Startbyte = 00000001
    Dim Zusenden as byte
    Ddrb.1 = 0
    
    Senden:
    Zusenden = Startbyte
    Portb.1 = Zusenden
    Goto senden
    Hier der EMPFÄNGERCODE:
    Code:
    $regfile = "m8def.dat"
    $crystal = 12000000
    Dim gelesen as byte
    Ddrd.2 = 0
    
    Do
    Gelesen = Portb.2
    if gelesen = 00000001 then portb.5 = 1 else portb.5 = 0
    loop
    Warum funktioniert das nicht?
    Die LED an portb.5 flackert nur manchmal, aber das auch, wenn die IR-Strecke unterbrochen ist!
    @Gottfreak: Dein Code funktioniert auch irgendwie nicht.
    Ich bin total am verzweifeln, es geht garnichts.

    MfG,
    ShadowPhoenix[/code]

  2. #2
    Gast
    Hallo

    Was willst du denn erreichen ??

    Bei der Sende Routine solltest du denn Port auch auf Ausgang schalten.

    Beim Empfangen solltest du anstatt PORTB.2 mal PINB.2 versuchen.

    Ist dir klar, was das Programm macht, wenn es dann läuft ?

    Mfg

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    @Gast

    Sorry, ich kenne mich eben noch nicht so gut aus.
    Ja, das Programm sendet dann ständig das Byte "00000001" an den
    Empfänger. Dieser lässt dann die LED leuchten.
    Wie siehst du das?

    MfG,
    ShadowPhoenix

  4. #4
    Gast
    Wie kommst du denn darauf ??

    "Ja, das Programm sendet dann ständig das Byte "00000001" an den "

    Beim senden wird dein dein Port aus 1 gesetzt und das wars.

    Modulierst du die LED denn mit 36 KHz ? Sonst empfängt der TSOP 1736 eh nichts.

    "Gelesen" kann doch nur 0 oder 1 werden

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    Ich dachte, es wird dann 10000000 gesendet!
    Wie kann man denn Bytes senden?

    MfG,
    ShadowPhoenix

  6. #6
    Gast
    Wieso soll er das denn senden ? Weil die Variable zusenden heißt ?

    So einfach geht das mit Bascom aber auch nicht.

    Du mußt deine Variable, die du senden willst, Bit für Bit abfragen, ob 1 oder 0 und dann entsprechend reagieren.

    Beim Empfang genau so, da hast du aber noch andere Probleme. Finden des Starts, Timming, Fehler und so.

    Versuche erstmal, nur zu senden. So langsam, das du an einer normalen LED sehen kannst ob es klappt.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    Hmm, eigentlich habe ich vor, den ADDLink zu benutzen, und dann bytes zu übertragen.
    So hätte ich eine Fernsteuerung mit vielen Kanälen.
    Weisst du wie das realisierbar ist?

    MfG,
    ShadowPhoenix

  8. #8
    Gast
    Habe mit ADD Link noch nicht gearbeitet, ist mir auch zu teuer.

    Du kannst auch mit der LED soviele Kanäle steuern wie du willst.

    Aber ein paar Grundlagen, mußt du dir schon erabeiten. Dazu gehört halt auch, wie man ein Byte seriell sendet und empfängt. Brauchst du eh immer wieder. Und so schwer ist das nicht. Es hilft dir nichts, wenn das eine nicht klappt, das nächste auszu probieren.

    Bleib an der seriellen Übertragung dran. Verbinde doch erstmal die beiden PINs mit einem Draht und versuche, ein Byte zu übertragen.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    31.01.2004
    Beiträge
    585
    Problem ist: WIE sende ich ein byte und empfange es richtig?

    MfG,
    ShadowPhoenix

  10. #10
    Gast
    Ganz grob als Anregung

    Du willst ein Bytes senden, hat ja 8 Bits. Du kannst immer nur ein Bit nach dem sende. Also prüfst du, ob BIT 0 deiner Variablen 1 oder 0 ist.

    Wenn1 dann sendest du eine 1, wenn nicht eine 0.

    Danach schiebst du die Variable um eine Stelle nach rechts. Damit steht jetzt BIT1 an Stelle BIT0 und du kannst wieder abfragen ob 1 oder 0.

    Nach 8 mal schiebben bist du mit deinem Byte durch.

    daten = 23
    for a = 1 to 8
    if daten.0 = 1 then
    sende 1
    else
    sende 0
    end if
    shift daten , right ,1

    next a

    So sollte es ganz grob abgehen. Nicht getestet, so aus dem Kopf

+ Antworten
Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •