
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Hallo, > > ich habe mich in letzter Zeit mit elektronischen Vorschaltgeräten und deren Dimmbarkeit beschäftigt > und möchte nun mit der C-Control und EVG's für Leuchtstofflampen eine Steuerung für die Aquarium- > beleuchtung realisieren. Um die EVG's (von Osram) dimmen zu können, benötigen die ein > Potentiometer von 100 KOhm an den Steueranschlüssen. Kann man nun mit der C-Control bzw. mit > einem Zusatzmodul eine elektronisches Potentiometer programmieren und den Widerstand verändern, > um somit die EVG's zu steuern ? Ich habe bis jetzt noch keine Erfahrung mit der C-Control gesammelt, > da ich noch auf der Suche bin nach einer geeigneten Steuerung. > Danke schonmal. > > Gruß Jens > Hallo, Habe das mit dem Poti schon probiert. Klappt auch prima soweit. Habe selbst das DS 1803-050 genommen. Den I2C-Bus bilden bei mir Port[1] und Port[2]. Man könnte auch den I2C-Bus der C-Control nehmen. Dabei muss man aber aufpassen was man macht. EEProm abmelden, anmelden und so Sachen. Habe auch eine Assemblerlösung dafür (nicht von mir geschrieben, nur kopiert). '************************************************************************************************** ' ' C-Control/BASIC I2C-Poti.BAS ' ' Autor: ' Holger Tyrahn ' Datum: ' 05.06.2002 ' Aufgabe: ' steuert ein über den I2C-Bus angeschlossenes Potentiometer DS 1803-050 '************************************************************************************************** '************************************************************************************************** define SCL port[1] define SDA port[2] define Adress_byte byte define Command_byte byte define Data_byte byte define i byte define wert byte define zahl byte #zufall for Data_byte = 0 to 255 step 1 gosub Poti_1a gosub Poti_schreiben return next '************************************************************************************************** #Poti_1a Adress_byte = 88 'Adresse des jeweiligen Poti Command_byte = 169 'schreiben Poti XX a 'Command_byte = 170 'schreiben Poti XX b 'Command_byte = 175 'schreiben Poti XX a und b mit demselben Wert 'Data_byte = 128 'Werte von 0 bis 255 return #Poti_1b Adress_byte = 86 'Adresse des jeweiligen Poti 'Command_byte = 169 'schreiben Poti XX a Command_byte = 170 'schreiben Poti XX b 'Command_byte = 175 'schreiben Poti XX a und b mit demselben Wert Data_byte = 128 'Werte von 0 bis 255 return #Poti_2a Adress_byte = 88 'Adresse des jeweiligen Poti Command_byte = 169 'schreiben Poti XX a 'Command_byte = 170 'schreiben Poti XX b 'Command_byte = 175 'schreiben Poti XX a und b mit demselben Wert Data_byte = 128 'Werte von 0 bis 255 return #Poti_2b Adress_byte = 88 'Adresse des jeweiligen Poti 'Command_byte = 169 'schreiben Poti XX a Command_byte = 170 'schreiben Poti XX b 'Command_byte = 175 'schreiben Poti XX a und b mit demselben Wert Data_byte = 128 'Werte von 0 bis 255 return '******************** Poti-Subroutinen ************************************************************ #Poti_lesen gosub start wert = Adress_byte + 1 gosub putbyte gosub getack gosub getbyte gosub giveack gosub stop 'print "gelesen : ";zahl 'stand vorher hinter getbyte return #Poti_schreiben gosub start wert = Adress_byte gosub putbyte gosub getack wert = Command_byte gosub putbyte gosub getack wert = Data_byte gosub putbyte gosub getack gosub stop print "schreibe Wert: ";wert return '******************* Anfangsbedingung für den I2C - Bus ******************************************* #I2C_Bus_start SDA = 1 : SCL = 0 : SDA = 0 for i = 0 to 3 gosub stop next '******************** I2C-Subroutinen ************************************************************* #start SCL = 1 SDA = 1 SDA = 0 SCL = 0 SDA = 1 return #stop SDA = 0 SCL = 1 SDA = 1 return #getbyte zahl = 0 for i=7 to 0 step -1 SCL = 1 if SDA <> 0 then zahl = zahl + 1 shl i 'print " empfangenes Bit: " ; SDA ; " Byte: ";zahl SCL = 0 next SDA = 1 return #putbyte for i=7 to 0 step -1 if (wert and 1 shl i) = 0 then SDA = 0 else SDA = 1 SCL = 1 : SCL = 0 'print" geschicktes Bit: ";SDA next i SDA = 1 return #getack SDA = 1 deact SDA SCL = 1 'wait not SDA 'unter Basic auskommentieren, da Simulation hier stockt SCL = 0 return #giveack SDA = 0 : SCL = 1 : SCL = 0 : SDA = 1 return '************************************************************************************************** |
| Antwort schreiben |