Forum: Mikrocontroller und Digitale Elektronik [Bascom] Elegantere Lösung gesucht


von Thomas Kiss (Gast)


Lesenswert?

Hallo Jungs, wie kann ich sowas "eleganter" lösen ?

Auszug aus meinem funktionierenden RGB Fader

Select Case Adc0
Case 0 To 60 :                                              '1
R = 0
G = 0
B = 255
Case 61 To 120 :                                            '2
R = 125
G = 0
B = 125
Case 121 To 180 :                                           '3
R = 255
G = 0
B = 0
Case 181 To 240 :                                           '4
R = 125
G = 125
B = 0
Case 241 To 300 :                                           '5
R = 0
G = 255
B = 0
Case 301 To 361 :                                           '6
R = 0
G = 125
B = 125
Case 362 To 420:                                            '7
R = 0
G = 0
B = 255
Case 421 To 480 :                                           '8
R = 125
G = 0
B = 125
Case 481 To 540 :                                           '9
R = 255
G = 0
B = 0
Case 541 To 620:                                            '10
R = 125
G = 125
B = 0
Case 621 To 680:                                            '11
R = 0
G = 255
B = 0
Case 681 To 740:                                            '12
R = 0
G = 0
B = 255
Case 741 To 820:                                            '13
R = 125
G = 0
B = 125
Case 821 To 940:                                            '14
R = 255
G = 0
B = 0
Case 941 To 1000:                                           '15
R = 125
G = 125
B = 0
Case 1001 To 1023:                                          '16
R = 0
G = 255
B = 0
End Select
Return

von Falk B. (falk)


Lesenswert?

@  Thomas Kiss (thomaskiss)

>Hallo Jungs, wie kann ich sowas "eleganter" lösen ?

Etwa so.

ADC0= ADC0 / 60
R=R_data[ADC0]
G=G_data[ADC0]
B=B_data[ADC0]

MFG
Falk

von Thomas Kiss (Gast)


Lesenswert?

Falk..smile...ist doch nur andere Schreibweise oder ?

Ich dachte an eine Tabelle, 2 Dimensional Array geht in Bascom nicht..

von Falk B. (falk)


Lesenswert?

@  Thomas Kiss (thomaskiss)

>Falk..smile...ist doch nur andere Schreibweise oder ?

Bitte? Vier Zeilen gegen eine Seite?

>Ich dachte an eine Tabelle, 2 Dimensional Array geht in Bascom nicht..

Das SIND drei Tabellen, eine für R, eine für G, eine für B. Muss man 
natürlich noch hinschreiben.

MFG
Falk

von Thomas Kiss (Gast)


Lesenswert?

Ups..sorry...

Nun mein Problem ist, ich habe nicht mal einen Ansatz wie die 3 Tabellen 
anlegen soll ..

von Falk B. (falk)


Lesenswert?

Typisch BASCOM-Programmierer. Handbuch ist ein Fremdwort . . .

von Thomas Kiss (Gast)


Lesenswert?

danke..

von Samuel C. (dragonsam)


Lesenswert?

Schau mal nach dem LOOKUP-Befehl.

von Thomas Kiss (Gast)


Lesenswert?

Samuel hat geholfen !! Danke

von Thomas T. (knibbel)


Lesenswert?

Thomas Kiss schrieb:
> Hallo Jungs, wie kann ich sowas "eleganter" lösen ?
>
> Auszug aus meinem funktionierenden RGB Fader

Eigentlich hast du mit deinem Code auch keinen Fader, sondern eher einen 
"Stepper".

Wenn du die Übergänge weicher haben möchtest, solltest du dir für jeden 
Farbkanal die "Kurven" aufzeichnen und dann diese Werte direkt aus den 
ADC0-Werten berechnen. Das sollten dann pro Kanal nur zwei bis drei 
Zeilen Code sein ... (Stichworte: 16Bit-Addition, Bitschieben nach 
rechts (Division durch 2 hoch n))

Dann solltest du aber auch die Abstände gleich machen: Deine 
"60"-Schrittweite ist ja nur zuerst vorhanden, bei größeren Werten 
weichst du davon ab...

Gruß,
Thomas

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.