![]() |
LMDLights ansteuern mit Binär Werte
Hallo,
Bin grad a bisschen Ratlos. Habe 8 LEDs auf meiner Form. Ich bekomme einen Binär Wert zb 255 dann sollen alle LEDs an sein.8 LED 1 - LED 8 ) Bei 128 dann nur die 7. LED an usw. Wie ist das realiesierbar? Danke. |
Re: LMDLights ansteuern mit Binär Werte
Die JCL
![]()
Delphi-Quellcode:
var
I: Integer; Bools: TBooleanArray; B: Byte; begin B := 255; // Beispiel BitsToBooleans(B, Bools, True); // True bewirkt das alle 8 Bits in Bools eingetragen werden for I := Low(Bools) to High(Bools) do // nun Bools[I] benutzen |
Re: LMDLights ansteuern mit Binär Werte
Es geht auch so:
Delphi-Quellcode:
mfg,
var
b,h,i:byte; bools:array[1..8] of boolean; begin b:=255; //Wert der ausgewertet wird h:=1; for i:=1 to 8 do begin bools[i]:=false; IF (h and b) >0 THEN bools[i]:=true; h:= (h*2) mod 255; //sonst würde es bei 8 b:=256 heißen --> Überlauf end; //LEDs an/aus end; Ratte //Edit: kleine optimierung |
Re: LMDLights ansteuern mit Binär Werte
hmm .. das Thema hatten wir doch schonmal .. (muss ich wissen war von mir ^^)
![]() z.B. so:
Delphi-Quellcode:
type TBitArray = array[0..15] of boolean;
... function WordToBit(eingang:Word): TBitArray; var m,i : integer; begin for i := 15 downto 0 do begin m:= 1 shl i; if eingang >= m then begin result[i] := true; eingang := eingang-m; end else result[i] := false; end end; |
Re: LMDLights ansteuern mit Binär Werte
Hi,
danke für die vielen Lösungen. Werde ich mal durchtesten welche am besten ist. Habe mittlerweile auch was hinbekommen. Habe ein Array of TLMDLights gemacht mit 8 LmdLights und dann eine Function
Delphi-Quellcode:
Diese habe ich nochmals umgeschrieben damit ich immer 8 Bits rausbekomme.
function DezInBinVorkomma(n: integer):string;
begin result:=''; repeat if n mod 2 =0 then result:='0'+result else result:='1'+result; n:=n div 2; until n=0; end;
Delphi-Quellcode:
Ist zwar nur schnell entstanden aber geht.
function DezInBinVorkomma(n: integer):string;
var i:integer; binkorr:string; begin result:=''; repeat if n mod 2 =0 then result:='0'+result else result:='1'+result; n:=n div 2; until n=0; if length(result) < 8 then begin for i:=1 to 8-length(result)do begin binkorr:=binkorr+'0' end; end; result:=binkorr+result; Danke |
Re: LMDLights ansteuern mit Binär Werte
@Ratte:
Ein beliebter Fehler: statt "mod 255" muß es "mod 256" heißen :warn: @renekr: Hier noch eine kürzere Variante Deiner letzten Version (ohne DIV, MOD und Stringverkettung):
Delphi-Quellcode:
Gruß Hawkeye
function ByteToBinStr (aValue: Byte): string;
var ii : Integer; begin // Ergebnis initialisieren Result := '00000000'; // 8 Bits testen for ii := 0 to 7 do // Bit Nummer i prüfen if Odd(aValue shr ii) then // Falls Bit gesetzt ist, Ergebnis anpassen Inc (Result[8 - ii]); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz