Projekte
BirgerT
nibo2_drawmode_demo
main.c
Projekte
Forum
Doku
Öffentliche Projekte
Startseite
Beispielprogramme
Projekte von anderen
Welcome
Username
Passwort
Eingeloggt bleiben
Zugangsdaten vergessen?
Registrieren
Projektverwaltung
⇨ Please choose! ⇦
——————————————————
✎ Create new project...
★ Browse existing projects...
——————————————————
⚬ MotorTest#1
⚬ C Tutorial 8#1
⚬ NIBO2 C Project#1
⚙ C Tutorial 15#1
⚬ 2010_11_18_el_test001#1
nibo2_drawmode_demo
main.c
Project details
Compiler settings
Nachrichten
Sie sind nicht eingeloggt.
Neuigkeiten
★
NiboRoboLib 3.6
2017-01-17: Neue Version 3.6
★
NiboRoboLib 3.4.1
2016-04-16: Neue Version 3.4.1
★
Coding Tutorial
2015-11-22: Jetzt auch für den NIBO burger!
Site-Statistic
7427 private projects
385 public projects
16184166 lines compiled
58226 builds
NIBO
@
nibo2_drawmode_demo/main.c [read only]
/* NIBO2 C project */ /* Programm zum Anzeigen/Testen der verschiedenen gfx_draw_mode Parameter */ #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 <nibo/i2cmaster.h> #include <stdio.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> // Hilfsmakro setzt die übergebenen Parameter zu einem Ausdruck zusammen #define _XCAT(x,a,b,c,d,e,f,g,h) x##a##b##c##d##e##f##g##h // erzeugt ein XBM Grafikbyte und tauscht HighNibble und LowNibble // XBM8(0,1,0,1,1,0,1,0) -> 0b10100101 //#define XBM8(a,b,c,d,e,f,g,h) (uint8_t) _XCAT(0b,e,f,g,h,a,b,c,d) /* Vorlage für ein 8x8 Icon #define xbm_icon8_width 8 #define xbm_icon8_height 8 static unsigned char xbm_icon8_data[] PROGMEM = { XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0), XBM8(0,0,0,0,0,0,0,0) }; */ // das funktioniert entgegen der Definitin aber so: #define XBM8(a,b,c,d,e,f,g,h) (uint8_t) _XCAT(0b,h,g,f,e,d,c,b,a) // erzeugt zwei XBM Grafikbytes und tauscht HighNibble und LowNibble // XBM16(0,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0) -> 0b10100101,0b11000011 //#define XBM16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (uint8_t) _XCAT(0b,e,f,g,h,a,b,c,d),(uint8_t) _XCAT(0b,m,n,o,p,i,j,k,l) /* Vorlage für ein 16x16 Icon #define xbm_icon16_width 16 #define xbm_icon16_height 16 static unsigned char xbm_icon16_data[] PROGMEM = { XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0), XBM16(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) }; */ // das funktioniert entgegen der Definitin aber so: #define XBM16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (uint8_t) _XCAT(0b,i,j,k,l,m,n,o,p),(uint8_t) _XCAT(0b,a,b,c,d,e,f,g,h) #define xbm_icon1_width 8 #define xbm_icon1_height 8 static unsigned char xbm_icon1_data[] PROGMEM = { XBM8(0,0,0,0,0,0,0,1), XBM8(0,0,0,0,0,1,1,1), XBM8(0,0,0,1,1,1,1,1), XBM8(0,0,0,0,0,1,1,1), XBM8(0,0,0,0,1,1,0,1), XBM8(0,0,0,1,1,0,0,1), XBM8(0,0,1,1,0,0,0,0), XBM8(0,1,1,0,0,0,0,0) }; #define xbm_smile1_width 16 #define xbm_smile1_height 16 static unsigned char xbm_smile1_data[] PROGMEM = { XBM16(0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0), XBM16(0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0), XBM16(0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0), XBM16(0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0), XBM16(0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0), XBM16(1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,1), XBM16(1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,1), XBM16(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), XBM16(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1), XBM16(1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1), XBM16(1,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1), XBM16(0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0), XBM16(0,1,0,0,0,1,1,1,1,1,1,0,0,0,1,0), XBM16(0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0), XBM16(0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0), XBM16(0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0) }; // Nibografik ausgeben // x-,y- position oben mitte // ratio 0..5 Vergroesserung void draw_nibo(uint8_t xm, uint8_t y, uint8_t r) { // NIBO-Grafik Standardbreite sind 28 Pix // relative x-pos = x-mitte - breite/2 uint8_t x = xm - 14 * r; gfx_move(x+6*r, y+0); gfx_box(14*r,3*r); gfx_move(x+6*r, y+5*r); gfx_box(14*r,6*r); gfx_move(x+0, y+7*r); gfx_box(4*r, 6*r); gfx_move(x+22*r,y+7*r); gfx_box(4*r, 6*r); } void clear_screen(void){ gfx_fill(0x00); // Clear Screen gfx_move(118,0); gfx_box(10,60); } int main() { leds_init(); display_init(); gfx_init(); pwm_init(); leds_set_displaylight(1024); // sei(); while(1==1) { sei(); gfx_fill(0x00); // Clear Screen gfx_set_proportional(1); // INTRO gfx_draw_mode(GFX_DM_JAM2); // Modus setzen "ueberschreiben" for(uint8_t n=6; n>0; --n) { gfx_fill(0x00); draw_nibo(60+n,2+n*2,n); _delay_ms(500); } //for gfx_move(16,26); gfx_box(100,16); gfx_move(20,30); // Text Ausgabeposition gfx_draw_mode(GFX_DM_COMP); // Modus setzen "ueberschreiben toggeln" gfx_print_text("GFX DRAW MODE DEMO"); _delay_ms(3000); // DRAW MODE DEMO clear_screen(); // Vertikale Ausgabeposition uint8_t y = 0; // Schleife über alle Modi 0,1,2 und 4,5,6 for(uint8_t i=0; i<7; i++) { // Modus 3 gibt es nicht if(i==3) { i++; // Modus 3 gibt es nicht clear_screen(); y = 0; // wieder von oben beginnen } gfx_draw_mode(i); // Modus setzen gfx_move(0,y+4 ); // Text Ausgabeposition switch(i) { case 0: gfx_print_text("GFX_DM_JAM1 = 0"); break; case 1: gfx_print_text("GFX_DM_JAM2 = 1"); break; case 2: gfx_print_text("GFX_DM_COMP = 2"); break; case 4: gfx_print_text("GFX_DM_JAM1_INV = 4"); break; case 5: gfx_print_text("GFX_DM_JAM2_INV = 5"); break; case 6: gfx_print_text("GFX_DM_COMP_INV = 6"); break; } gfx_move(110,y); // Grafik Ausgabeposition gfx_draw_xbm_P(xbm_smile1_width, xbm_smile1_height, (PGM_P) xbm_smile1_data); gfx_draw_mode(GFX_DM_JAM2); // Modus setzen "ueberschreiben" for(uint8_t x=0; x<80; x++) { gfx_move(x,y+12); // Icon Ausgabeposition // die linke Pixelspalte ist 0 und loescht somit immer gfx_draw_xbm_P(xbm_icon1_width, xbm_icon1_height, (PGM_P) xbm_icon1_data); _delay_ms(20); } y += 20; // naechste vertikale Ausgabeposition _delay_ms(3000); // Zeit zum Gucken } // for // ************************************************ Ergänzung vom 10.01.2015 clear_screen(); gfx_draw_mode(GFX_DM_COMP); // XOR Modus setzen gfx_move(0,0); for (uint8_t x2 = 0; x2<128; x2++) { // Linie von A nach B zeichnen gfx_lineTo(x2,63); // Linie von B nach A löschen gfx_lineTo(0,0); } gfx_move(0,63); for (uint8_t x2 = 0; x2<128; x2++) { gfx_lineTo(x2,0); gfx_lineTo(0,63); } gfx_move(127,63); for (uint8_t x2 = 0; x2<128; x2++) { gfx_lineTo(x2,0); gfx_lineTo(127,63); } gfx_move(127,0); for (uint8_t x2 = 0; x2<128; x2++) { gfx_lineTo(x2,63); gfx_lineTo(127,0); } _delay_ms(2000); // Zeit zum Gucken // ********************************************************* // ABSPANN gfx_draw_mode(GFX_DM_COMP); // Modus setzen for(uint8_t n=0; n<5; n++) { gfx_fill(0xff); draw_nibo(30+n*8,2+n,n); _delay_ms(500); } //for gfx_move(35,30); // Grafik Ausgabeposition gfx_draw_xbm_P(xbm_smile1_width, xbm_smile1_height, (PGM_P) xbm_smile1_data); gfx_move(65,30); // Grafik Ausgabeposition gfx_draw_xbm_P(xbm_smile1_width, xbm_smile1_height, (PGM_P) xbm_smile1_data); _delay_ms(5000); // Zeit zum Gucken } // while return 0; } // main
Compiler results:
Werbung
Online
carindegillern94884
randalspann5740
workwind