| Autor |
Geschwindigkeit von LED Lauflicht mit Poti regeln in Bascom Suche nach: led (32778) |
|
|
|
|
BID = 465397
Drecksack Gesprächig
  
Beiträge: 154
|
|
Hallöchen
Nun habe ich also mein erstes Programm geschrieben. ein led lauflicht.
ich habe ja jetzt einen festen wert zum pausieren zwischen den led´s eingegeben. Was muß ich machen, damit ich mit einem poti am avr die geschwindigkeit des Lauflichts regle? oder wie gehe ich vor?
Danke für eure hilfe
Der Drecksack |
|
BID = 465403
Her Masters Voice Inventar
     
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 5312 Wohnort: irgendwo südlich von Berlin
|
|
einfach den festen Wert durch einen Variablen ersetzen und gut. Wenn man den variablen Wert aus dem Messergebnis eines AD-Wandlers gewinnt, kann man auch ein Poti auswerten und zur Geschwindigkeitseinstellung nutzen.
_________________
Tschüüüüüüüs
Her Masters Voice
aka
Frank
***********************************
Der optimale Arbeitspunkt stellt sich bei minimaler Rauchentwicklung ein...
*********************************** |
|
BID = 465404
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Edit: Schlechten Beitrag entfernt, da ich telefonierte, während ich schrieb
Im Prinzip reicht es, ein Poti als var. Spannungsteiler zu beschalten und den Schleifer an einen ADC-Eingang anschließen. Du kannst dann z.b. xmal den Wert mit einem Timer digitalisieren und dann als Verzögerungswert benutzen.
[ Diese Nachricht wurde geändert von: DonComi am 20 Okt 2007 15:45 ]
|
BID = 465405
Drecksack Gesprächig
  
Beiträge: 154
|
eine Variable setzt ich mit DIM...oder? und wie geht es dann weiter? Ich wäre um hilfe dankbar, das steht in meinem Lehrbuch nämlich nicht drin...
|
BID = 465406
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
O Weia.
Ich würde mich vorerst mit der Syntax und den Grundlagen über Basic informieren. So ist das zum Scheitern verurteilt.
Dim Variable As Datentyp ist die allgemeine Syntax.
_________________
|
BID = 465407
Drecksack Gesprächig
  
Beiträge: 154
|
Mache ich parallel hierzu. i weiß, ich sollte ganz vorne anfangen, tu ich auch. aber ich schau halt schon in die zukunft....Naja, mehr oder minder
Der Drecksack
|
BID = 465409
Drecksack Gesprächig
  
Beiträge: 154
|
Wie füge ich eigentlich einen Code ein? Einfach so wie ich das mache oder wie geht es sonst noch?
Ich habe bei meinem Lauflich folgendes Problem.
Das lauflicht läuft, wie es soll.
Dann drücke ich den Taster, und alle leds sollen leuchten. tun sie auch. aber nur wenn ich den taster lange drücke.
Sehe ich das richtig, das mich diese wait angaben speziell mein Hauptprogramm bremsen? wie würdet ihr das machen.Was ich mir gerade überlegt habe, den Tastendruck als externen interrupt auszuführen.
Oder wie meint ihr das
Hier der Bascom code
$regfile = "m8def.dat"
$crystal = 3686400
Declare Sub Tastendruck 'Sub deklarieren
Ddrd = &B11100000 'PD5, 6, 7 Als Ausgang definieren
Portd.4 = 1 'Pullup von PD4 einschalten
'---------------------------------------------------------------
Do
Debounce Pind.4 , 0 , Tastendruck , Sub 'entprellt PD4
Portd.7 = 1 'setzt PD7 auf high
Waitms 900 'wartet
Portd.7 = 0 'setzt PD7 auf low
Portd.6 = 1 'setzt PD6 auf high
Waitms 900 'wartet
Portd.6 = 0 'setzt PD6 auf low
Portd.5 = 1 'setzt PD5 auf high
Waitms 900 'wartet
Portd.5 = 0 'setzt PD5 auf low
Loop
'----------------------------
Sub Tastendruck
Portd.7 = 1 'schaltet led ein
Portd.6 = 1 'schaltet led ein
Portd.5 = 1 'schaltet led ein
Wait 2 'wartet 2 sek
End Sub
End
|
BID = 465410
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Find ich gut, nicht das du mich falsch verstehst.
Aber ich würde erstmal wirklich die Grundlagen von Basic lernen. Denn um den ADC zu benutzen benötigst du mehr als nur eine Variable. (OK, in Bascom gibts bestimmt auch dazu vorgefertigte Funktionen, sodass du vermutlich nichtmal irgendwelche ADC-Register beschreiben musst), aber früher oder später wirst du auch mehr Hardwarenähe bekommen und dann wirds schwer.
_________________
|
BID = 465413
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Ich würde sowas so realisieren:
Den Timer initialisieren, mit vorberechneten Inhalten für die Zählregister. Zum Beispiel so berechnet, dass er alle x ms überläuft oder den Timer im Compare-Modus laufen lassen.
Jedenfalls wird dann periodisch ein Interrupt ausgeführt, in dem ich dann z.b. ein Bit immer weiterschiebe. So ist die CPU nicht damit beschäftig, Zeit totzuschalgen sondern kann 99% andere Aufgaben erfüllen und nur für extrem kurze Zeit das Lauflicht bedienen.
Taster etc. würd ich auch an einen ext. INT anschließen, solange ich den nicht anderweitig benutze. Sonst kann man sowas auch wieder in einen Timerinterrup auslagen, z.b. 100 mal pro Sekunde den Tasterwert abfragen.
(Bascom ist diesbezüglich grot... Debounce und Waitms sind einigermaßen resourcenfressend und sinnlos und im µC-Bereich nicht wirklich sinnvoll...)
_________________
|
BID = 465414
Drecksack Gesprächig
  
Beiträge: 154
|
|
BID = 465545
PhyMaLehrer Schriftsteller
    
Beiträge: 911 Wohnort: Leipzig
|
Zum "Lauflicht mit Timer-Interrupt" lies mal ab Seite 81 in deinem Lehrbuch. Dort geht es bei Timer 0 zwar darum, daß der "Piepser" zum Tönen gebracht wird. Wenn du die Sache mit dem Timer aber verstanden hast, wirst du es sicher fertigbringen, die Schaltvorgänge in so großen Abständen ausführen zu lassen, daß eine statt des Piepsers angeschlossene LED sichtbar blinkt.
Wenn es so weit ist, sehen wir weiter.
Und hier mal noch eine Erklärung, warum du den Taster so lange drücken mußt, bis alle LEDs leuchten:
Der Befehl Debounce steht als erster in einer Schleife. Danach werden die drei LEDs der Reihe nach für jeweils 0,9 s geschaltet. Dann kommt wieder der Befehl Debounce usw.
Wenn du nun irgendwann die Taste kurz drückst, kann es sein, daß gar nichts passiert, denn der µC ist gerade mit den LEDs beschäftigt. Wenn du lange genug drückst, wird der Schaltvorgang dann ausgelöst, wenn die Abfrage der Taste mit Debounce wieder an der Reihe ist. Das kann im ungünstigsten Fall eben 2,7 s dauern, denn erst müssen die drei LED-Schaltungen abgearbeitet werden.
Richtig, ein externer Interrupt wäre eine wesentliche Verbesserung. Er würde den µC anweisen, alles stehen und liegen zu lassen und sofort alle LEDs für die gewünschte Zeit anzuschalten.
Aber nun erst einmal zum Timer-Interrupt-Blinken... Viel Erfolg dabei!
|
BID = 465657
Drecksack Gesprächig
  
Beiträge: 154
|
Hallo
Danke für die Erklärung. Habe mir schon fast sowas in der art gedacht, daß mit den 2,7 sec warten.....
Ich sehe auch, daß ich da nicht groß weiter komme. Ich mache ertmal kleine schritte.
Als erstes projekt nehme ich mir dann vor, einen Timer mit lcd für mein belichtungsgerät zu bauen. Habe schon eine komplette doku dazu gefunden, nur ist die nicht in bascom geschrieben und wenn ich es übernehme dann lern ich auch nix dabei.
Also.
Bis demnächst und dankeschön.
|