0 Members and 1 Guest are viewing this topic.
Да штожеж это за такое то?
Как в переменоой типа byte изменить значение какого-либо бита?
{ **** UBPFD *********** by delphibase.endimus.com ****>> Установка определенного бита в словеВозвращает AWord с установленным битом номер ABit (c 0 по 15) в значение 1,если AState = TRUE или 0, если AState = FALSE.Стоит заметить, что в функцию передается именно номер бита, а не маска.Проверка на правильный номер не производится.Зависимости: SystemАвтор: Григорий Ситнин, gregor@gregor.ru, МоскваCopyright: Григорий Ситнин, 2003Дата: 8 июля 2003 г.***************************************************** }function SetBit(AWord: word; ABit: byte; AState: boolean = true): word;begin if AState then Result := AWord or (1 shl ABit) else Result := AWord and (not (1 shl ABit));end;Пример использования: {$APPTYPE CONSOLE}program test;uses Bits; // В модуле Bits описана функция SetBitvar z: word; i: integer; s: string;begin z := 0; z := setbit(z, 0); // 0000000000000001 z := setbit(z, 2); // 0000000000000101 z := setbit(z, 9); // 0000001000000101 z := setbit(z, 14); // 0100001000000101 z := setbit(z, 15); // 1100001000000101 s := ''; for i := 15 downto 0 do s := s + inttostr(Ord(CheckBit(z, i))); writeln('value: ', z, ' dec = 1100001000000101'); writeln('result: ', s); z := $FFFF; z := setbit(z, 0, false); // 1111111111111110 z := setbit(z, 2, false); // 1111111111111010 z := setbit(z, 9, false); // 1111110111111010 z := setbit(z, 14, false); // 1011110111111010 z := setbit(z, 15, false); // 0011110111111010 s := ''; for i := 15 downto 0 do s := s + inttostr(Ord(CheckBit(z, i))); writeln('value: ', z, ' dec = 0011110111111010'); writeln('result: ', s);end.
Вот девайс в работеhttp://www.youtube.com/watch?v=NC6thVzJ4QQ
Вопорс: Будет ли интересна тема про внешние устройства визуализации?Всякие там светомузыки под управлением AIMP
Вживую еще круче. Камера искажает цвет очень сильно. Плюс еще пережато всякими мпегами.
Вот только хорошего,годного плагина со свистелками и перделками я не написал.Делал то для себя, плюс дуб в Делфи и си++.Кодю для контороллеров, пока только на ассемблере.В окне визуализации простенький спектр зеленого цвета прологарифмированный и выровненный коэффициентами, сделанный на заготовке из СДК, не растягивается на весь экран(я не приследовал такой цели и даже хотел отключить такую возможность, но увы). Можно его просто в качестве примера приложить вместе со схемой и прошивкой (если кто-то рискнет повторить мою железяку), описать формирование и отправку буфера изображения, и проч.
...не все так круто как у тебя...
...uses Windows, AIMP_SDK,classes,sysutils; function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';...varvolchar: array[0..8] of byte=(0,1,3,7,15,31,63,127,255); // маска-столбик...procedure TAIMP2DemoVisual.DisplayRender(DC: HDC; AData: PAIMPVisualData); stdcall;var...data,olddata:byte;...data:=Trunc((AData^.LevelR+AData^.LevelL)/24); if data>9 then data:=9; //на всякий if olddata<=data then olddata:=data //плавный спад чтоб резко не прыгали else olddata:=olddata-1 ; Out32(888, volchar[olddata]);
да ничего крутого=)
я просто меняю яркость светодиодов... Это как? Горит-не горит или ШИМ?
костылёчки в виде логарифма и коэффициентов
ардино сам собирал или покупал?
Я начал с меги8. Она дешовая, шьётся по 5 проводкам(+5 резюков и 3 диода). Поставил Шпротеус, и если железку собирать влом, то симулирую в нём.
Может и я дорасту и наконец не буду фюзы забывать выставлять правильно