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 !!!![]()







					
					
					
						
Zitieren

Lesezeichen