Forum: Mikrocontroller und Digitale Elektronik Suche Hilfe bei BASCOM, Unterprogramm und Poti Ansteuerung


von Patrick N. (patrick_487)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich beschäftige mich seid kurzer Zeit mit der Programmierung in BASCOM 
und bin gerade dabei mit ein Programm für ein Modellauto (Maßstab 1/24) 
was beleuchtet werden soll zu schreiben.

Habe jedoch leider ein paar Probleme wo ich nicht weiter komme.

1. Ich habe in meinem Hauptprogramm ein Unterprogramm drinnen, es 
funktioniert auf auf meinem AVR Board. Jedoch nicht so wie ich es mir 
vorstelle, denn es sollen die Led´s im Hauptprgramm und aus dem 
Unterprogramm gleichzeitig leuchten. Es lauft aber nach der Reihe ab.

2. Desweiteren würde ich gerne die Blinkgeschwindigkeit über einen Poti 
steuern, quasi die geschwindigkeit vom Lauflicht. Aeber so richig habe 
ich dazu noch nix gefunden im Netz.

Vielleicht kann mir ja hier einer von euch weiter helfen.

ich danke für eure Antwort.

es grüßt Patrick

Im Anhang ist das Programm mit dem Unterprogramm aus BASCOM

: Verschoben durch User
von Hannes L. (hannes)


Lesenswert?

So wird das nix.

Nimm für das Tempo einen Wert, mit dem beide Objekte (Blitzer und 
Rundumdingens) durch weitere Teiler klarkommen. Und bitte als Konstante, 
Waitms mag keine Variablen. Z. B. Waitms 1.

Dann führst Du in der Mainloop separate Zähler für Blitzer und 
Rundumdingens, die Du bei jedem Schritt der Mainloop hochzählst.

Hat der Zähler des Blitzers (Byte reicht) den Zählerstand 105 erreicht, 
so setzt Du den Zähler auf 0 und schaltest die LEDs ein. Bei Zählerstand 
5 schaltest Du die LEDs wieder aus, setzt aber den Zähler nicht zurück.

Hat der Zähler des Rundumdingens (Long empfohlen) den Zählerstand 400, 
so schaltest Du LED 1 an (und alle anderen aus) und löscht den Zähler. 
Bei 100 schaltest Du LED 2 an, bei 200 LED 3 und bei 400 LED 4. Und 
natürlich immer alle anderen LEDs der Rundumattrappe aus. Wenn Du später 
etwas sicherer bist, ersetzt Du die Einzelbitschalterei durch 
Portzugriffe mit Werten aus einem Array.

Wenn das funktioniert, guckst Du mal, wie Du einen Doppelblitzer 
hinbekommst.

Und dann baust Du eine zweite Rundumleuchte ein, die mit geringfügig 
anderer "Drehzahl" läuft, so wie bei der echten Feuerwehr auch. Und wenn 
Du das alles durch hast, informierst Du Dich mal betreffs 
Timer-Interrupt und machst das dann so, wie es sich gehört. Zu Beginn 
der Lernkurve sei ja Waitms noch erlaubt, aber ernsthafte Programme 
bekommt man damit nicht so richtig gebacken. Da brauchst Du schon 
Multitasking.

...

von Draki (Gast)


Lesenswert?

... und das Poti (z.B. 10k Ohm)legst du an + 5 V und Minus und den 
Schleifer auf einen
ADC - Eingang. Der ADC liefert dann einen Wert von 0 - 1024 für den 
vollen Drehbereich, den Du mit Wait(Poti) in die Blinkzeit umsetzen 
kannst.

von Patrick N. (patrick_487)


Lesenswert?

Hallo Hannes,

ich danke dir für deine Erklärung und ich habe mich auch schon ein wenig 
belesen im Bezug darauf wie der Timer eingesetzt wird. Werde das ganze 
gleich mal testen.

@ Draki,

könntest du mir vielleicht anhand von einem kleinen Beispiel das kurz 
erklären wie du das genau meinst?
Würde auch ein 50k Ohm Poti gehen? Diese habe ich noch mehrfach da, da 
es die "Rundumlicht - Schaltung" schon ich sag es mal so analoger 
Ausführung gibt, also diese läuft über einen NE 555 und einem IC 4017.

ich danke für eure Antworten.

es grüßt Patrick

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.