Shield slouží k zobrazení dat pomocí trojmístného sedmisegmentového displeje, LED diod či bargrafu, RGB diod nebo pomocí volitelně připojitelného digitálně řízeného LED pásku s čipy WS2812.
Hardware
Zapojení X konektoru
X01
X03
X05
X07
X09
X11
X13
X15
USR
VBUS
SDA
> 6V
X00
X02
X04
X06
X08
X10
X12
X14
3V3
GND
BTN
SCL
DAT
3.3 V
GND
SCL a SDA - komunikace po I2C sběrnici s expandery pro řízení LED diod, displeje a RGB displeje
DAT - datový vodič pro LED pásky
BTN - tlačítko
Konfigurace a zapojení
X3 - svorkovnice pro připojení LED pásku (5 V, GND a datový vodič) s řadičem WS2812; datový vodič chráněn rezistorem, proudová pojistka pro 5 V (1 A)
LED2 - LED11 - LED diody pro zobrazení bargrafu
LED1 - trojmístný sedmisegmentový displej
D1, D2 - RGB LED diody
3V - detekce napětí 3,3 V
5V - detekce 5 V napájení
SJ1, SJ2 - volba napájení pro LED pásek
Schema
Software
#include"byzance.h"#include"TripleSevenSeg.h"#include"TLC59116.h"#defineBYZANCE_OVER_USB0#ifBYZANCE_OVER_USBUSBSerialusb(0x1f00,0x2012,0x0001,false);#elseSerialpc(SERIAL_TX,SERIAL_RX); // tx, rx#endif// Common variablesuint32_t tmp32 =0;InterruptInbtnUsr(USER_BUTTON);volatilebool button_usr_clicked=0;uint32_t i =0;// Object for LED segment display and LED bargraphTripleSevenSeg * seven_segment;TLC59116 * pwm_driver;/* * Prototyp, který bude vybírat, kam se konzole vypisuje */voidto_computer(constchar* format, ...);voidbutton_usr_fall_callback(){ button_usr_clicked =1;}voidinit(){#ifBYZANCE_OVER_USB ByzanceLogger::init(&usb);#else ByzanceLogger::init(&pc);pc.baud(115200);#endif // Attach callback for user buttonbtnUsr.fall(&button_usr_fall_callback); // sSven_segment seven_segment =newTripleSevenSeg();seven_segment->is_initialized(); Thread::wait(100); // PWM driver init pwm_driver =newTLC59116();pwm_driver->initialize(X07, X06); // I2C SDA, I2C SCL}voidloop(){ // Change global PWM dimmingif(button_usr_clicked){ button_usr_clicked=0;to_computer("Button pressed.\n");pwm_driver->set_global_pwm(((i %2) ==0) ?2:0xFF); // Choose 2 or 255 global PWM value. } // Display generated numbers from negativ to positive values with maximally two decimal digits.seven_segment->display_number(-120+ ((float)i++)/1+0.12,2); // PWM dimming of the LED bargraphuint8_tpole[16];for (uint8_t j =0; j <16; j++) {pole[j] = i*5; }pwm_driver->set_all_channels(pole); // Wait some time Thread::wait(50);}voidto_computer(constchar* format, ...){charbuffer[256]; va_list arg;va_start (arg, format);vsnprintf(buffer,256, format, arg);va_end (arg);#ifBYZANCE_OVER_USBusb.printf(buffer); #elsepc.printf(buffer); #endif}