Académique Documents
Professionnel Documents
Culture Documents
h>
#include "ucg.h"
ucg_t ucg;
uint8_t ucg_spi_cs_pin = 10; /* more flexible: Ucglib uses independet chip select */
uint8_t ucg_spi_reset_pin = 8;
switch(msg)
case UCG_COM_MSG_POWER_UP:
/* setup pins */
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
pinMode(ucg_spi_reset_pin, OUTPUT);
pinMode(ucg_spi_cd_pin, OUTPUT);
pinMode(ucg_spi_cs_pin, OUTPUT);
/* setup Arduino SPI */
SPI.begin();
//SPI.setClockDivider( SPI_CLOCK_DIV2 );
SPI.setDataMode( SPI_MODE0 );
SPI.setBitOrder(MSBFIRST);
break;
case UCG_COM_MSG_POWER_DOWN:
SPI.end();
break;
case UCG_COM_MSG_DELAY:
delayMicroseconds(arg);
break;
case UCG_COM_MSG_CHANGE_RESET_LINE:
digitalWrite(ucg_spi_reset_pin, arg);
break;
case UCG_COM_MSG_CHANGE_CS_LINE:
digitalWrite(ucg_spi_cs_pin, arg);
break;
case UCG_COM_MSG_CHANGE_CD_LINE:
digitalWrite(ucg_spi_cd_pin, arg);
break;
case UCG_COM_MSG_SEND_BYTE:
SPI.transfer(arg);
break;
case UCG_COM_MSG_REPEAT_1_BYTE:
SPI.transfer(data[0]);
arg--;
}
break;
case UCG_COM_MSG_REPEAT_2_BYTES:
SPI.transfer(data[0]);
SPI.transfer(data[1]);
arg--;
break;
case UCG_COM_MSG_REPEAT_3_BYTES:
SPI.transfer(data[0]);
SPI.transfer(data[1]);
SPI.transfer(data[2]);
arg--;
break;
case UCG_COM_MSG_SEND_STR:
SPI.transfer(*data++);
arg--;
break;
return 1;
PORTD = data;
digitalWrite(ucg_port_d_wr_pin, 0);
digitalWrite(ucg_port_d_wr_pin, 1);
switch(msg)
case UCG_COM_MSG_POWER_UP:
/* setup pins */
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
pinMode(ucg_port_d_cd_pin, OUTPUT);
pinMode(ucg_port_d_wr_pin, OUTPUT);
pinMode(ucg_port_d_cs_pin, OUTPUT);
pinMode(ucg_port_d_reset_pin, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(ucg_port_d_cd_pin, 1);
digitalWrite(ucg_port_d_wr_pin, 1);
digitalWrite(ucg_port_d_cs_pin, 1);
digitalWrite(ucg_port_d_reset_pin, 1);
break;
case UCG_COM_MSG_POWER_DOWN:
break;
case UCG_COM_MSG_DELAY:
delayMicroseconds(arg);
break;
case UCG_COM_MSG_CHANGE_RESET_LINE:
digitalWrite(ucg_port_d_reset_pin, arg);
break;
case UCG_COM_MSG_CHANGE_CS_LINE:
digitalWrite(ucg_port_d_cs_pin, arg);
break;
case UCG_COM_MSG_CHANGE_CD_LINE:
digitalWrite(ucg_port_d_cd_pin, arg);
break;
case UCG_COM_MSG_SEND_BYTE:
ucg_com_arduino_port_d_send(arg);
break;
case UCG_COM_MSG_REPEAT_1_BYTE:
ucg_com_arduino_port_d_send(data[0]);
arg--;
break;
case UCG_COM_MSG_REPEAT_2_BYTES:
ucg_com_arduino_port_d_send(data[0]);
ucg_com_arduino_port_d_send(data[1]);
arg--;
break;
case UCG_COM_MSG_REPEAT_3_BYTES:
ucg_com_arduino_port_d_send(data[0]);
ucg_com_arduino_port_d_send(data[1]);
ucg_com_arduino_port_d_send(data[2]);
arg--;
break;
case UCG_COM_MSG_SEND_STR:
ucg_com_arduino_port_d_send(*data++);
arg--;
break;
return 1;
}
void xsetup(void)
void setup(void)
delay(1000);
delay(50);
uint8_t r,g,b;
void loop(void)
ucg_DrawHLine(&ucg, 0, 0, 20);
ucg_DrawHLine(&ucg, 0, 1, 20);
ucg_DrawHLine(&ucg, 0, 2, 20);
ucg_DrawHLine(&ucg, 0, 3, 20);
ucg_DrawHLine(&ucg, 0, 4, 20);
ucg_DrawHLine(&ucg, 0, 5, 20);
ucg_DrawHLine(&ucg, 0, 6, 20);
ucg_DrawHLine(&ucg, 0, 7, 20);
ucg_SetColor(&ucg, 0, 255, g, 0);
r +=3;
g+=7;
b += 11;
if ( (r&1) == 0 )
ucg_SetColor(&ucg, 0, 0, 0, 0);
else
ucg_SetColor(&ucg, 0, r,g,b);
ucg.arg.pixel.rgb.color[0] = ucg.arg.rgb[0].color[0];
ucg.arg.pixel.rgb.color[1] = ucg.arg.rgb[0].color[1];
ucg.arg.pixel.rgb.color[2] = ucg.arg.rgb[0].color[2];
ucg.arg.pixel.pos.x = 60;
ucg.arg.pixel.pos.y = 90;
ucg.arg.len = 30;
ucg.arg.dir = 0;
ucg_DrawL90FXWithArg(&ucg);
ucg.arg.pixel.rgb.color[0] = ucg.arg.rgb[0].color[0];
ucg.arg.pixel.rgb.color[1] = ucg.arg.rgb[0].color[1];
ucg.arg.pixel.rgb.color[2] = ucg.arg.rgb[0].color[2];
ucg.arg.pixel.pos.x = 60;
ucg.arg.pixel.pos.y = 90;
ucg.arg.len = 30;
ucg.arg.dir = 1;
ucg_DrawL90FXWithArg(&ucg);
ucg.arg.pixel.rgb.color[0] = ucg.arg.rgb[0].color[0];
ucg.arg.pixel.rgb.color[1] = ucg.arg.rgb[0].color[1];
ucg.arg.pixel.rgb.color[2] = ucg.arg.rgb[0].color[2];
ucg.arg.pixel.pos.x = 60;
ucg.arg.pixel.pos.y = 90;
ucg.arg.len = 30;
ucg.arg.dir = 2;
ucg_DrawL90FXWithArg(&ucg);
ucg.arg.pixel.rgb.color[0] = ucg.arg.rgb[0].color[0];
ucg.arg.pixel.rgb.color[1] = ucg.arg.rgb[0].color[1];
ucg.arg.pixel.rgb.color[2] = ucg.arg.rgb[0].color[2];
ucg.arg.pixel.pos.x = 60;
ucg.arg.pixel.pos.y = 90;
ucg.arg.len = 30;
ucg.arg.dir = 3;
ucg_DrawL90FXWithArg(&ucg);
ucg_SetFont(&ucg, ucg_font_10x20r);
//ucg_SetFontPosBottom(&ucg);