Seit heute gibt es die Version 2.7 (20100412) der NiboLibrary:
http://sourceforge.net/projects/nibo/files/
Die Verbesserungen der Bibliothek betreffen das Grafikdisplay:
Funktion zur Ausgabe von Bitmap Grafiken im XBM Format
Funktion zum Zeichnen von Linien (Vektorgrafik)
Terminalausgaben (automatischer Zeilenumbruch, Scrollen)
Demo-Video:
[flash width=400 height=320 loop=false:69f48abd86]http://www.youtube.com/v/WKCHZ9Ppchk&hl=de&fs=1&rel=0[/flash:69f48abd86]
http://www.youtube.com/watch?v=WKCHZ9Ppchk
Der Quellcode zum Video:
Code:
#include <nibo/niboconfig.h>
#include <nibo/display.h>
#include <nibo/gfx.h>
#include <nibo/copro.h>
#include <nibo/delay.h>
#include <nibo/iodefs.h>
#include <nibo/bot.h>
#include <nibo/leds.h>
#include <nibo/pwm.h>
#include <avr/interrupt.h>
#include <nibo/i2cmaster.h>
#include <stdio.h>
#include "images.h"
void drawImage (uint8_t id) {
gfx_draw_xbm_P(image_getWidth(id), image_getHeight(id), image_getBits(id));
}
void plot_logo(uint8_t x, uint8_t y) {
gfx_move(x+6, y+0); gfx_box(14, 3);
gfx_move(x+6, y+5); gfx_box(14, 6);
gfx_move(x+0, y+7); gfx_box(4, 6);
gfx_move(x+22, y+7); gfx_box(4, 6);
}
void plot_vector(uint8_t x, uint8_t y) {
gfx_move(x-6, y+17);
gfx_lineTo(x , y+14);
gfx_lineTo(x+ 6, y+17);
gfx_lineTo(x+ 4, y- 6);
gfx_lineTo(x+12, y- 4);
gfx_lineTo(x , y-25);
gfx_lineTo(x-12, y- 4);
gfx_lineTo(x- 4, y- 6);
gfx_lineTo(x- 6, y+17);
}
void drawVector() {
gfx_fill(0x00);
plot_vector(64, 32);
gfx_move(36, 56);
gfx_print_text("Vector graphic");
}
void drawInfo() {
gfx_fill(0x00);
gfx_set_proportional(1);
gfx_draw_mode(GFX_DM_JAM2);
gfx_move(16, 0);
drawImage(IMG_NICAI_LOGO);
gfx_move(38, 5);
gfx_print_text("nicai-systems");
gfx_move(0, 19);
gfx_hline(128);
plot_logo(52,25);
gfx_set_proportional(0);
gfx_move(52,40);
gfx_print_text("N");
gfx_move(59,40);
gfx_print_text("I");
gfx_move(66,40);
gfx_print_text("B");
gfx_move(73,40);
gfx_print_text("O");
gfx_set_proportional(1);
gfx_move(0, 52);
gfx_hline(128);
gfx_move(46, 56);
gfx_print_text("(c) 2010");
}
void drawTerminal() {
gfx_term_goto(0, 7);
gfx_term_print("\n");
uint8_t speed=8;
for (uint8_t j=0; j<6; ++j) {
for (uint8_t i=0x20; i<0x80; ++i) {
char text[2];
text[1]=0;
text[0]=i;
gfx_term_print(text);
if (speed&&((i&0x0f)==0x0f)) speed--;
for (uint8_t d=speed; d; --d) {
_delay_ms(20);
}
}
gfx_term_print("\n");
}
for (uint8_t j=0; j<2; ++j) {
for (uint8_t i=0x20; i<0x80; ) {
char text[5];
text[0]=i++;
text[1]=i++;
text[2]=i++;
text[3]=i++;
text[4]=0;
gfx_term_print(text);
}
gfx_term_print("\n");
}
gfx_term_print("\nTerminal test\nfinished!\n");
}
void sleep(uint8_t secs) {
while(secs--) {
_delay_ms(1000);
}
}
int main() {
leds_init();
pwm_init();
sei();
leds_set_displaylight(1024);
display_init();
gfx_init();
drawInfo();
sleep(2);
while(1==1) {
sei();
drawInfo();
sleep(3);
gfx_move(0, 0);
drawImage(1);
sleep(2);
gfx_move(0, 0);
drawImage(3);
sleep(2);
drawVector();
sleep(3);
gfx_move(0, 0);
drawImage(2);
sleep(2);
drawTerminal();
sleep(2);
}
return 0;
}
[schild=15 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]ACHTUNG![/schild] Die Lib benötigt WinAVR in der Version 20100110 !!!
Lesezeichen