Hallo zusammen.
Mein RGB LED Fader ist soweit fertig.
Hard und Software stehen. Allerdings habe ich noch ein lästiges
Problem mit meinem LCD Display 20x4.
Da ich den Fadingwert eines jeden Farbkanals angezeigt bekomme, möchte ich auch,
das nur dieser aktualisiert wir. Das passiert alle 100ms.
Nachteil ist das der Befehl "CLS" das gesamte Display löscht, und dadurch
ein unangenehmes Flackern erzeugt.
Ist es möglich nur Teilbereiche aktualisieren zu lassen,
oder gibt es da eine andere Möglichkeit?
Ich schicke den Quellcode noch mit und hoffe Ihr könnt mir weiter helfen
Grüße Flo
Code:$regfile = "m16def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 16 $framesize = 32 Ddrb = &HFF Ddrd = &HFF Ddrc = &HFF Ddra = &H00 Porta.3 = 1 Porta.4 = 1 Porta.5 = 1 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.0 , Rs = Portc.1 Config Lcd = 20 * 4 Enable Interrupts Dim Adc_rot As Word Dim Adc_grün As Word Dim Adc_blau As Word Dim Pwm_rot As Word Dim Pwm_grün As Word Dim Pwm_blau As Word Dim Status As Bit Status = 0 Dim Zähler_rot As Integer Dim Zähler_grün As Integer Dim Zähler_blau As Integer Zähler_rot = 0 Zähler_grün = 0 Zähler_blau = 0 Dim Plusminus_rot As Integer Plusminus_rot = 1 Dim Plusminus_grün As Integer Plusminus_grün = 1 Dim Plusminus_blau As Integer Plusminus_blau = 1 Config Timer0 = Pwm , Compare Pwm = Clear Down , Prescale = 256 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 Config Adc = Single , Prescaler = Auto , Reference = Avcc Do Debounce Pina.5 , 0 , Taster3 , Sub Debounce Pina.4 , 0 , Taster2 , Sub Debounce Pina.3 , 0 , Taster1 , Sub If Status = 0 Then Cls Locate 1 , 1 Lcd "Motion Control @ RAU" Locate 2 , 1 Lcd "<ROT> " Locate 2 , 14 Lcd " Fading" Locate 3 , 1 Lcd "<GRUEN> " Locate 3 , 14 Lcd " Fading" Locate 4 , 1 Lcd "<BLAU> " Locate 4 , 14 Lcd " Fading" Adc_rot = Getadc(2) Adc_grün = Getadc(1) Adc_blau = Getadc(0) Locate 2 , 9 Pwm_rot = Adc_rot / 4 Lcd Pwm_rot Locate 3 , 9 Pwm_grün = Adc_grün / 4 Lcd Pwm_grün Locate 4 , 9 Pwm_blau = Adc_blau / 4 Lcd Pwm_blau Ocr0 = Pwm_rot Ocr1a = Pwm_grün Ocr1b = Pwm_blau If Adc_rot < 25 Then Adc_rot = 0 End If If Adc_grün < 25 Then Adc_grün = 0 End If If Adc_blau < 25 Then Adc_blau = 0 End If Else Zähler_rot = Zähler_rot + Plusminus_rot If Zähler_rot = 85 Then Plusminus_rot = -1 If Zähler_rot = 1 Then Plusminus_rot = 1 Zähler_blau = Zähler_blau + Plusminus_blau If Zähler_blau = 170 Then Plusminus_blau = -1 If Zähler_blau = 1 Then Plusminus_blau = 1 Zähler_grün = Zähler_grün + Plusminus_grün If Zähler_grün = 255 Then Plusminus_grün = -1 If Zähler_grün = 1 Then Plusminus_grün = 1 Ocr0 = Zähler_rot Ocr1a = Zähler_grün Ocr1b = Zähler_blau End If Waitms 100 Loop End Taster3: If Status = 0 Then Status = 1 Else Status = 0 End If Return Taster2: Return Taster1: Return







Zitieren

Lesezeichen