Bitte geben Sie einen Grund für die Verwarnung an
Der Grund erscheint unter dem Beitrag.Bei einer weiteren Verwarnung wird das Mitglied automatisch gesperrt.
[BEK10] Lookup-Tabelle
Hallo,
dieses Thema paßt gerade recht schön rein. Wir haben ja im Kursteil 9 per PWM eine LED auf- und abgedimmt.
Wer ganz genau hinschaut, sieht daß die Helligkeitszunahme der LED nicht linear erscheint. Das liegt daran, daß unser Auge Helligkeitsunterschiede nicht linear empfindet. Wer es genau nachlesen möchte:
http://www.mikrocontroller.net/articles/LED-Fading
In dem Artikel ist auch recht schön die Lösung beschrieben. Es wird in Excel eine Tabelle angelegt, in der mit einer Exponentialfunktion neue Werte berechnet werden. Diese Werteliste kann nun in Bascom importiert werden.
Was uns noch fehlt, ist eine Nachschlagefunktion in Bascom. Der Befehl hierzu heißt "Lookup", ein Beispiel:
2
3
4
neuer_Wert = Lookup (5, dta)
dta:
Data 10 , 20 , 30 , 40 , 50 , 60 , 70
Ich beschreib mal die Befehlssyntax von hinten:
- dta: wir müssen Bascom sagen, wo es die Werteliste findet. Dazu muß der Name einer Sprungmarke angegeben werden. Ich hab sie "dta" genannt.
- 5: hier sagen wir, welcher Eintrag gesucht werden muß. Wir suchen den fünften in der Liste.
- neuer_Wert: hierrein wird die Antwort der Funktion übergeben, in unserem Bsp. die 50
Ich hab das Beispiel aus BEK09 genommen und um die Lookup-Funktion erweitert.
Ihr werdet sehen, daß es den Speicherplatz Wert ist. Die LED fadet viel schöner.
Gruß
Gerhard
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
$regfile = "m8def.dat" 'Mikrocontroller ist Atmega 8
$crystal = 8000000 'Arbeitsfrequenz 8 MHz
$hwstack = 40 'Hardware-Stack
$swstack = 32 'Software-Stack
$framesize = 60 'Frame
$baud = 19200 'serielle Übertragungsgeschwindigkeit
'*** Ein/Ausgänge deklarieren **************************************************
Config Portb.0 = Output 'PortB als Ausgang
Led1_pin Alias Portb.0 'Ausgang PortB.0 heitßt ab jetzt "Led1"
'*** Variablen definieren ******************************************************
Dim Zaehler As Byte
Dim Led1 As Byte 'Auflösung 0 - 49
Dim Timerzaehler As Byte 'Maximalwerte wie LED1
Dim Lookup_wert As Byte
'*** Timer konfigurieren *******************************************************
Config Timer0 = Timer , Prescale = 64 'Timer konfigurieren
On Timer0 Timerroutine 'Timerinterrupt Subroutine zuweisen
Enable Timer0 'Timer aktivieren
Start Timer0 'Timer starten
Timer0 = 205 'Timer vorladen
Enable Interrupts 'Interrupt erlauben
'*** Hauptschleife *************************************************************
Do 'Beginn Hauptschleife
For Zaehler = 0 To 49 'in ca. 1sec aufdimmen
Lookup_wert = Lookup(zaehler , Dta)
Led1 = Lookup_wert 'hier wird der Schleifenwert der LED zugewiesen
Waitms 20
Next Zaehler
Wait 1 '1sec halten
For Zaehler = 49 To 0 Step -1 'in ca. 1sec abdimmen
Lookup_wert = Lookup(zaehler , Dta) 'aus Wertetabelle neuen Wert holen
Led1 = Lookup_wert 'hier wird der Schleifenwert der LED zugewiesen
Waitms 20
Next Zaehler
Wait 1
Loop 'Ende Hauptschleife
End
'*** Subs **********************************************************************
Timerroutine: 'Beginn Subroutine
Timer0 = 205
Incr Timerzaehler
If Timerzaehler = 50 Then Timerzaehler = 0 'Timerzaehler auf LED-Auflösung begrenzen
If Timerzaehler < Led1 Then Led1_pin = 0 Else Led1_pin = 1 'Vergleich Timerzähler mit LED-Wert -> LED Ein- od. Ausschalten
Return 'Ende Subroutine
Dta:
Data 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 3 , 3 , 3
Data 4 , 4 , 4 , 5 , 5 , 6 , 6 , 7 , 8 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15
Data 17 , 18 , 20 , 22 , 23 , 25 , 28 , 30 , 33 , 35 , 38 , 42 , 45 , 49,
hier mein aktueller TinyKatalog
- bek10.bas.txt
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
Hallo Diezel, (Gerhard)
ich habe mich hier im Forum angemeldet, weil viel über AVR Bascom berichtet wird.
Warum endet der Bascom Kurs hier, ich glaub da gäbe es noch viel zu schreiben.
Du beschreibst das wirklich gut und verständlich, würde mich freuen wenn du den Kurs
weiterführen würdest, auch wenn es schon 5 jahre her ist.
Ich bin zur Zeit Bascom am lernen, aber muss sagen, wenn man auf die 70 zugeht, fällt das nicht mehr so leicht.
Eine Kleinigkeit ist mir aufgefallen, beim Lookup-Befehl wird bei 0 angefangen zu zählen.
In deinem Beispiel würde 60 anstatt 50 eingelesen. Das aber nur am Rande.
Meine Schiffsmodelle sind alle größer und passen halt nicht zum Mikro-Bereich, aber die Elektronik
ist ja in vielen Themen gleich.
Viele Grüße Friedhelm
#3 RE: [BEK10] Lookup-Tabelle
- Rund um das Forum
- Mikromodellbau Magazin
- Nettiquette
- Änderungen im Forum
- Vorstellungen der Mitglieder
- Testbereich
- Einsteiger
- Grundlagen
- Probleme
- Tipps & Tricks für Einsteiger
- Fahrzeuge in 1:87 - 1:220
- Bike, Trike, Quad
- Baumaschinen
- Lieferwagen
- PKWs
- PKW Rennwagen
- LKWs
- Race Trucks
- Einsatzfahrzeuge
- sonstige Fahrzeuge
- Modellbahnen
- Schiffsmodelle
- Arbeitsschiffe
- Fähren
- Schlepper
- sonstige Schiffe
- U - Boote
- Eigenbauten
- Umbauten
- Tipps & Tricks
- Probleme
- Luftfahrt
- Flugzeuge
- Hubschrauber
- Luftschiffe
- Module
- Trial Module
- Straßenmodule
- Ortsfeste Funktionsmodelle ( Kräne, Silos u.a. )
- Tipps & Tricks zum Modulbau
- Modellbahn
- Zubehör
- Fernsteuerungen
- Ladegeräte
- Empfänger, Servos, Multiswitch
- Car System
- Eigenbauten & Umbauten
- Infracar
- DC Car
- Probleme
- Elektronik
- Bootloader System von Mikroantriebe
- Grundlagen
- Probleme
- Tipps & Tricks
- Deltang Empfänger DSM2 & DSMX
- Mechanik
- Eigenbauten
- Probleme
- Maschinen, Werkzeuge und Zubehör
- Tipps & Tricks
- Programmierung ( AVR, PIC ... )
- Harrys Modellbau Tinys
- Projekte
- Probleme
- Programme zum Download
- Bascom
- Bascom - Unser Einsteigerkurs
- 3D - Druck
- 3D Drucker
- Software zur Konstruktion, sowie zum Druck
- Projekte
- Kostenlose 3D Modelle zum Download
- Ätzen
- Ätztechnik
- Platinen Ätzen
- Bleche Ätzen
- Vorlagen Downloads
- Probleme
- Termine
- Ausstellungen
- Messen
- Treffen
- Online Stammtisch (Google Hangout)
- Suche
- Modelle
- Zubehör
- Sonstiges
- Biete
- Modelle und Bausätze
- Zubehör
- Sonstiges
- Dies & Das
- Lackierungen
- Alles was nichts mit Mikromodellbau zu tun hat
- Euer Arbeitsbereich
- Links
- Diverses
- Händler für Zubehör
- Private Homepages
Jetzt anmelden!
Jetzt registrieren!
Forenspende
|
Wir hoffen, dass dir unser Forum gefällt und du dich hier genauso wohlfühlst wie wir. Wenn du uns bei der Erhaltung des Forums unterstützen möchtest, kannst du mit Hilfe einer kleinen Spende dazu beitragen, den weiteren Betrieb zu finanzieren. Deine Spende hilft! Spendenziel: 346€
101%
|
