void RDMSubDeviceBwLcd::UpdateEvent(TRDMSubDeviceUpdateEvent tUpdateEvent) { if (tUpdateEvent == RDM_SUBDEVICE_UPDATE_EVENT_DMX_STARTADDRESS) { DisplayChannels(); for (unsigned i = 0; i < BW_LCD_MAX_CHARACTERS - 1; i++) { // Leave H, D, % at the end m_aText[i] = ' '; } bw_spi_lcd_text_line_2(&m_tDeviceInfo, m_aText, BW_LCD_MAX_CHARACTERS - 1); // Leave H, D, % at the end return; } else if (tUpdateEvent == RDM_SUBDEVICE_UPDATE_EVENT_PERSONALITY) { DisplayUpdatePersonality(); if (m_aText[2] != ' ') { switch (GetPersonalityCurrent()) { case 1: DataHex(m_Data, m_nLength); break; case 2: DataDec(m_Data, m_nLength); break; case 3: DataPct(m_Data, m_nLength); break; default: break; } } bw_spi_lcd_text_line_2(&m_tDeviceInfo, m_aText, BW_LCD_MAX_CHARACTERS); } }
void RDMSubDeviceBwLcd::Stop(void) { if(!m_IsStarted) { return; } m_IsStarted = false; bw_spi_lcd_text_line_2(&m_tDeviceInfo, s_aLine, BW_LCD_MAX_CHARACTERS - 1); // Leave H, D, % at the end }
void RDMSubDeviceBwLcd::Start(void) { if (m_IsStarted) { return; } m_IsStarted = true; DisplayChannels(); for (unsigned i = 0; i < BW_LCD_MAX_CHARACTERS; i++) { m_aText[i] = ' '; } DisplayUpdatePersonality(); bw_spi_lcd_text_line_2(&m_tDeviceInfo, m_aText, BW_LCD_MAX_CHARACTERS); }
bool RDMSubDeviceBwLcd::Initialize(void) { const bool IsConnected = bw_spi_lcd_start(&m_tDeviceInfo); if (IsConnected) { for (unsigned i = 0; i < BW_LCD_MAX_CHARACTERS; i++) { m_aText[i] = ' '; } bw_spi_lcd_text_line_1(&m_tDeviceInfo, m_aText, BW_LCD_MAX_CHARACTERS); bw_spi_lcd_text_line_2(&m_tDeviceInfo, m_aText, BW_LCD_MAX_CHARACTERS); } #ifndef NDEBUG printf("%s:%s IsConnected=%d\n", __FILE__, __FUNCTION__, (int) IsConnected); #endif return IsConnected; }
void RDMSubDeviceBwLcd::Data(const uint8_t* pData, uint16_t nLength) { const uint16_t nDmxStartAddress = GetDmxStartAddress(); bool IsDataChanged = false; nLength = MIN(nLength, DMX_FOOTPRINT); nLength = MIN(nLength, 513 - nDmxStartAddress); const uint8_t* p = &pData[nDmxStartAddress-1]; for (unsigned i = 0; (i < sizeof(m_Data)) && (i < nLength); i++) { if (m_Data[i] != p[i]) { IsDataChanged = true; } m_Data[i] = p[i]; } if (!IsDataChanged) { return; } m_nLength = nLength; switch (GetPersonalityCurrent()) { case 1: DataHex(p, nLength); break; case 2: DataDec(p, nLength); break; case 3: DataPct(p, nLength); break; default: break; } bw_spi_lcd_text_line_2(&m_tDeviceInfo, m_aText, BW_LCD_MAX_CHARACTERS - 1); }
int main(void) { device_info_t device_info; UART_BEGIN(); device_info.slave_address = BW_LCD_DEFAULT_SLAVE_ADDRESS; /** SPI **/ printf("bw_spi_lcd_start\n"); bw_spi_lcd_start(&device_info); printf("bw_spi_read_id\n"); bw_spi_read_id(&device_info); printf("bw_spi_lcd_reinit\n"); bw_spi_lcd_reinit(&device_info); uint8_t backlight; printf("bw_spi_lcd_get_backlight := "); bw_spi_lcd_get_backlight(&device_info, &backlight); printf("%d\n", backlight); uint8_t contrast; printf("bw_spi_lcd_get_contrast := "); bw_spi_lcd_get_contrast(&device_info,&contrast); printf("%d\n", contrast); printf("bw_spi_lcd_cls\n"); bw_spi_lcd_cls(&device_info); printf("bw_spi_lcd_text_line_1\n"); bw_spi_lcd_text_line_1(&device_info, "AVR Atmel", 9); printf("bw_spi_lcd_text_line_2\n"); bw_spi_lcd_text_line_2(&device_info, "Arduino Uno", 11); /** I2C **/ printf("bw_i2c_lcd_start\n"); bw_i2c_lcd_start(BW_LCD_DEFAULT_SLAVE_ADDRESS); printf("bw_i2c_read_id\n"); bw_i2c_read_id(&device_info); printf("bw_i2c_lcd_reinit\n"); bw_i2c_lcd_reinit(); printf("bw_i2c_lcd_cls\n"); bw_i2c_lcd_cls(); printf("bw_i2c_lcd_text_line_1\n"); bw_i2c_lcd_text_line_1("AVR Atmel", 9); /** RTC **/ struct rtc_time tm_rtc; printf("mcp7941x_start\n"); mcp7941x_start(0x00); printf("mcp7941x_get_date_time\n"); mcp7941x_get_date_time(&tm_rtc); printf("%.2d:%.2d:%.2d %.2d-%.2d-%.2d\n", tm_rtc.tm_hour, tm_rtc.tm_min, tm_rtc.tm_sec, tm_rtc.tm_mday, tm_rtc.tm_mon, tm_rtc.tm_year); device_info.slave_address = BW_DIO_DEFAULT_SLAVE_ADDRESS; printf("bw_i2c_dio_start\n"); bw_i2c_dio_start(&device_info); printf("bw_i2c_read_id\n"); bw_i2c_read_id(&device_info); printf("bw_i2c_dio_fsel_mask\n"); bw_i2c_dio_fsel_mask(&device_info, 0x7F); char buf[9]; while (1) { mcp7941x_get_date_time(&tm_rtc); sprintf(buf, "%.2d:%.2d:%.2d", tm_rtc.tm_hour, tm_rtc.tm_min, tm_rtc.tm_sec); bw_i2c_lcd_text_line_2(buf, 8); device_info.slave_address = BW_DIO_DEFAULT_SLAVE_ADDRESS; bw_i2c_dio_output(&device_info, BW_DIO_PIN_IO0 | BW_DIO_PIN_IO2 | BW_DIO_PIN_IO4 | BW_DIO_PIN_IO6); _delay_ms(500); bw_i2c_dio_output(&device_info, BW_DIO_PIN_IO1 | BW_DIO_PIN_IO3 | BW_DIO_PIN_IO5); _delay_ms(500); } }