- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 62

Thema: Drei Led´s mit einem Taster unabhängig von einander schalten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von p@ty Beitrag anzeigen
    weiterhin habe ich mit der Timerkonfiguration auch noch Probleme und benötige da eure Unterstützung.
    Zur Timerkonfiguration in Bascom nehme ich immer das Datenblatt und den Simulator zur Hilfe. Im Simulator kann man sehen, welche Register mit welchen Werten bei dem CONFIG TIMER Kommando belegt werden und dann mit dem Datenblatt vergleichen.

    COMPARE1A = 15624
    beschreibt OCR1A (OCR1AH, OCR1AL) mit 15624

    CONFIG TIMER1 = TIMER , PRESCALE = 1024 , CLEAR TIMER = 1
    Versetzt den Timer in den CTC Modus und startet ihn auch. Bei Erreichen von Timerstand 15624 wird der Timerstand wieder auf 0 gesetzt und zählt wieder hoch.

    Wenn der Timerstand 15624 erreicht, wird das COMPARE1A Flag gesetzt.

    Zitat Zitat von p@ty
    Code:
    'Pin- Portkonfiguration Inputs
    Config Pind.5 As Input
    Taster Alias Pind.5
    Taster = 1
    Damit möchtest du vermutlich den Pullup Widerstand einschalten?
    Da Taster aber den PIND.5 darstellt funktioniert das nicht. Für Einschalten des Pullup muß bei einem als Input konfigurierten Pin das Bit im PORT Register mit 1 beschrieben werden. Also: Statt "Taster = 1" muß es "PORTD.5 = 1" sein.
    (Daß das Config Pind.5 Kommando einen Syntaxerror hat, hat Sauerbruch schon drauf hingewiesen)

    Gruß
    Searcher
    Geändert von Searcher (11.03.2013 um 17:59 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #2
    Neuer Benutzer Öfters hier Avatar von Spitfire
    Registriert seit
    09.07.2012
    Ort
    Niederösterreich
    Beiträge
    28
    Hallo P@ty !!!

    In Sachen Bascom kann ich dir leider nicht viel helfen, aber vieleicht in der grundlegenden Herangehensweise.
    Zur Abfrage des Pin`s, wie lange er High, bzw. low ist würde ich eine Schleife Prgrammieren. Solange der Pin den gewünschten zustand hat, durchläft das Programm immer wieder die Schleife. Bei jedem Schleifendurchlauf wird ein Zähler um eins erhöht. Dadurch bekommst du in dem Zähler einen Wert der von der Dauer des Tastendrucks abhängig ist. Diesen Zählerstand kannst du dann Abfragen, und je nach Höhe, die jeweilige LED ein, oder ausschalten. Ich habe dieses Prinzip zur Abfrage eines PWM-Signales eines Empfängers für Modellflugzeuge angewannt. Funktioniert Tadellos. Was vieleicht noch zu beachten währe, ist, dass bei eienem Zeitraum von mehreren Sekunden ein Register als Zäler nicht ausreicht, weil mehr als 254 durchläufe stattfinden. Eventuell bei einem Überlauf des Zählers, ein zweites Register mitzählen lassen, wieviele Überläufe stattgefunden haben. Nur das mit dem Zweiten Zähler (Register) war bei der PWM Abfrage nicht notwendig, da das Signal nur ungefähr 20ms Sekunden lange ist. Es entstehen aber immer noch Werte von 8oo bis 1ooo bei einer Taktfrequenz von 4Mhz.

    Gruß
    Spitfire

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Mir fällt noch was ein: Zum Taster Abfragen eignet sich das DEBOUNCE Kommando gut.
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Benutzer Stammmitglied Avatar von p@ty
    Registriert seit
    05.06.2011
    Ort
    Bottrop
    Beiträge
    51
    Hallo zusammen!!
    Vielen Dank für eure schnellen Anworten und Infos!

    @ Sauerbruch: Waren ne´ ganze Menge Fehlermeldungen!
    Aber auch der Ansatz das ich mich mit der Grundlegenden Struktur zur Konfiguration von Timern ect mehr befassen sollte war richtig!!!
    Warum ich allerdings die Ports noch falsch konfigurierte ist mir ein Rätsel...
    Sicher weil ich den Code oben im Win Texteditor, heute auf der Arbeit aus´m Kopp eingehackt habe...
    Habe den Timer dann kurzerhand weg gelassen und es auf anderem Wege probiert.
    Das aber für jedes If ein End If kommen muss ist nicht ganz richtig...
    Wenn man die gesamte Befehlsfolge in eine Reihe schreibt tut´s trozdem!

    Habe mir auch schon etwas Lektüre angelesen und etliche Schaltungen aufgebaut und den passenden Code dazu abgetippt.
    -Aber halt nur abgetippt, was nicht immer viel Aufschluss über die Herangehensweise brachte...
    Denke da muss man wie so oft im Leben einfach ausdauernd am Ball bleiben und viel ausprobieren.

    Unten noch ein anderer Code der zum Erfolg geführt hat...(warum auch immer)
    Kann mir da manche Sachen einfach nicht erklären....zB das byval B... in der Unterprozedur nutze ich die Variable A....
    Wenn ich aber Declare Sub Lichtszenen(byval A As Byte) schreibe dann funzt es nicht mehr...
    Naja, muss ich noch en´ paar Versuche starten! Macht ja richtig Laune!!

    Vielen Dank nochmal an euch alle und auch an Kampi für seine tollen Tipps!
    Bin für Verbesserungen / Vereinfachungen und weitern Tipps sehr dankbar!
    Viele Grüße,
    P@ty


    Hier der Anfängercode der wohl für ein geübtes Auge schlimmer nicht sein könnte...

    $regfile = "M168def.dat"
    $crystal = 16000000
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 9600


    'Pin- Portkonfiguration Outputs
    Config Portc.0 = Output
    Led1 Alias Portc.0
    Portc.0 = 0

    Config Portc.1 = Output
    Led2 Alias Portc.1
    Portc.1 = 0

    Config Portb.1 = Output
    Led3 Alias Portb.1
    Portb.1 = 0

    'Pin- Portkonfiguration Inputs
    Config Pind.4 = Input
    Taster Alias Pind.4
    Portd.4 = 1

    Dim A As Byte
    Dim X As Word

    Declare Sub Lichtszenen(byval B As Byte)


    'Hauptprogramm
    Do


    If Taster = 0 Then 'Wenn Taster = 0 dann...
    Incr X 'X incrementieren...
    Print X 'sonst X = 0
    Else
    X = 0
    End If

    If X >= 200 Then 'Wenn X >= 200ms dann...
    Gosub Lichtszenen 'Sprung in Unterprozedur Lichtszene
    End If

    If A = 1 And Taster = 0 Then 'Wenn Variable A = 1 und Taster = 0 dann...
    Led1 = 1 'Led1 an
    Led2 = 0
    Led3 = 0
    Elseif Taster = 1 And A = 1 Then 'Led1 aus
    Led1 = 0
    Led2 = 0
    Led3 = 0
    End If

    If A = 2 And Taster = 0 Then 'Wenn Variable A = 2 und Taster = 0 dann...
    Led1 = 0 'Led2 an
    Led2 = 1
    Led3 = 0
    Elseif Taster = 1 And A = 2 Then 'Led2 aus
    Led1 = 0
    Led2 = 0
    Led3 = 0
    End If

    If A = 3 And Taster = 0 Then 'Wenn Variable A = 3 und Taster = 0 dann...
    Led1 = 0 'Led3 an
    Led2 = 0
    Led3 = 1
    Elseif Taster = 1 And A = 3 Then 'Led3 aus
    Led1 = 0
    Led2 = 0
    Led3 = 0
    End If

    Loop

    End

    'Unterprozedur
    Sub Lichtszenen

    If Taster = 0 Then Incr X 'Wenn Tatser = 0 dann Incrementiere X
    If X >= 200 Then A = 1 'Wenn X >= 200ms dann Variable A = 1
    If A = 1 Then 'Wenn A = 1 dann...
    Led1 = 1
    Led2 = 0
    Led3 = 0
    End If


    If X >= 750 Then A = 2
    If A = 2 Then 'Wenn X >= 750ms dann Variable A = 2
    Led1 = 0 'Wenn A = 2 dann...
    Led2 = 1
    Led3 = 0
    End If


    If X >= 1250 Then A = 3 'Wenn X >= 1250ms dann Variable A = 3
    If A = 3 Then 'Wenn A = 3 dann...
    Led1 = 0
    Led2 = 0
    Led3 = 1
    End If


    If Taster = 1 Then 'Wenn Taster losgelassen wird dann...
    Led1 = 0
    Led2 = 0
    Led3 = 0

    End Sub
    End If

Ähnliche Themen

  1. Roboter mit einem Taster an und aus schalten!?
    Von Bammel im Forum Elektronik
    Antworten: 56
    Letzter Beitrag: 10.02.2010, 19:53
  2. Antworten: 11
    Letzter Beitrag: 31.01.2010, 17:25
  3. Einfach nur mit Taster eine LED ein und aus schalten ?
    Von Ferdinand im Forum Assembler-Programmierung
    Antworten: 2
    Letzter Beitrag: 13.06.2008, 10:08
  4. LED mit Taster ein/aus schalten
    Von sampe im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 16.09.2006, 11:55
  5. Problem mit LED´s an Output Matrix und einem Taster
    Von MrQu im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 16.10.2005, 19:13

Berechtigungen

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

Solar Speicher und Akkus Tests