DMX protocol…
# 1:break + 1:start + 512:channel
python:
import serial
class DMX512:
def __init__(self, port):
self.serial = serial.Serial(
port=port,
baudrate=250000,
bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_TWO,
timeout=0
)
self.data=[0]*513 # 513 bytes = 1:start + 512:channel
def setChannel(self, chan, intensity):
self.data[chan] = intensity
def setAll(self,col):
for i in range(1, 513):
self.data[i] = col
def update(self):
# break use or serial.send_break or serial.break_condition
self.serial.send_break(0.0001) # 100us but not precise on different OSs
# 513 bytes = 1:start + 512:channel
self.serial.write(bytes(self.data))
dmx = DMX512( 'COM3' )
dmx.setAll(255)
dmx.update()
stm8s:
====BREAK====:
UART3_Init(
(u32)45500,
UART3_WORDLENGTH_9D,
UART3_STOPBITS_1,
UART3_PARITY_NO,
UART3_MODE_TXRX_ENABLE
);
UART3_SendData9( 0x0100 | 0x00 );
====TX/RX====:
UART3_Init(
(u32)250000,
UART3_WORDLENGTH_9D,
UART3_STOPBITS_1,
UART3_PARITY_NO,
UART3_MODE_TXRX_ENABLE
);
UART3_SendData9( 0x0100 | data ); /// 513 BYTES
====rx====:
u8 dmx_buffer[513];
u16 dmx_buffer_idx;
BOOL DMX_FLAG = FALSE;
BOOL SC_FLAG = FALSE;
void UART3_RX_IRQHandler( void )
{
BOOL BREAK_FLAG = FALSE;
u8 rx = 0;
/// DMX512 = 1:break + 1:start + 512:data
if(UART3_GetITStatus(UART3_IT_RXNE )!= RESET)
{
BREAK_FLAG = UART3_ReceiveData9()>>8;
rx = UART3_ReceiveData8();
if(BREAK_FLAG == FALSE) /// 1:break
{
if(rx == 0x00)
{
SC_FLAG = TRUE;
return ;
}
}
if((BREAK_FLAG == TRUE)&&(SC_FLAG == TRUE)) /// 1:start
{
SC_FLAG = FALSE;
if(rx == 0x00)
{
DMX_FLAG = TRUE;
dmx_buffer_idx = 1; /// fill buff start from idx=1
return;
}
}
if((BREAK_FLAG == TRUE)&&(DMX_FLAG == TRUE)) /// 512:data
{
if( dmx_buffer_idx < sizeof(dmx_buffer) )
{
dmx_buffer[dmx_buffer_idx] = rx;
dmx_buffer_idx++;
}
}
}
}
2020年2月17日 星期一
2019年7月18日 星期四
Bluepy Scanner disconnects exist connections
解決 blueby 每次 scan 就會中斷先前連線的問題
困擾了很久
試過各種寫法 thread / lock / wait / pause / sleep 都無效
結果很簡單,只要 scan 時增加 passive=True 就好了
scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(1.0, passive=True)
困擾了很久
試過各種寫法 thread / lock / wait / pause / sleep 都無效
結果很簡單,只要 scan 時增加 passive=True 就好了
scanner = Scanner().withDelegate(ScanDelegate())
devices = scanner.scan(1.0, passive=True)
2019年7月16日 星期二
Raspberry pi 同時使用 藍牙及 UART
sudo raspi-config
Interface > Serial > No
sudo nano /boot/config.txt
新增底下三行
core_freq=250
dtoverlay=pi3-miniuart-bt
enable_uart=1
注意此時 uart 是使用系統時脈產生 baud rate,不能太快
Interface > Serial > No
sudo nano /boot/config.txt
新增底下三行
core_freq=250
dtoverlay=pi3-miniuart-bt
enable_uart=1
注意此時 uart 是使用系統時脈產生 baud rate,不能太快
2019年7月15日 星期一
RPI Hash-sum mismatch on apt-get
apt-get update 出現問題
嚐試使用低下方式解決…
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
嚐試使用低下方式解決…
sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update
2019年7月9日 星期二
NXP S9KEAZN64 Disable NMI
陷阱題:
KE 系列 MCU,PTB4 腳在 reset 後預設會使用 NMI 功能
導致無法當一般 GPIO 使用
因此要 Disable 掉
不然會 d 到天荒地老
在 system_SKEAZN642.c 中 void SystemInit (void) 函式 增加一行…
SIM->SOPT &= ~SIM_SOPT_NMIE_MASK; //禁用NMI
2019年7月8日 星期一
2019年4月10日 星期三
Flutter/Dart神奇的語法
習慣傳統程式語言,這種的初看像謎之符號,細看覺得神奇!!
Future <bool> ShowYesNoDialog(
BuildContext context,
doYes,
doNo
) async
{
return showDialog(
context: context,
builder: (context) => AlertDialog(
actions: <Widget>[
RaisedButton(
onPressed: ((){doYes();}),
),
RaisedButton(
onPressed: ((){doNo();}),
),
],
),
) ??
false;
}
await ShowYesNoDialog(
context, 'SayYesNo', 'Yes or No?',
((){print('yes');}),
((){print('no')}),
);
訂閱:
文章 (Atom)
VirtualBox 空間減肥
@windows vm sdelete64 -z c: @macos VBoxManage modifymedium disk "/Users/fellow/VirtualBox VMs/Win10/Win10.vdi" --compact *.vdi...
-
ARis... ARis 是日本一間公司出品的產品,應用了 ARToolKit 技術。 展示影片在這… http://www.youtube.com/watch?v=yCCx7zANsGE YouTube上可以找到更多類似的影片。 這邊是我用 FLARToolK...
-
install… sudo apt-get install bluez sudo hciconfig hci0 up scan… sudo hcitool lescan or scan if no response... sudo bluetoothctl ...
-
由於ASSEMBLA即將開始收費,因此要把所有的SVN進行大搬家,連帶的一些教學文件也跟著搬家了,看來還是GOOGLE的窩最舒適(重點是免費) FPPA實驗平台教學教材-使用C語言 FPPA實驗平台簡介 實驗(一) 8位元LED輸出單元 與 模組設計總論 實驗(二) 按鍵開關輸入...
