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
7426 private projects
385 public projects
16180353 lines compiled
58212 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
alicevib4869957876
andreasnew290004031
belindaskalski6
blythe489719956356
bvkdarrel629626
carine251934777
carmonvenable4403145
carollamson4653652
cassienajera030
chandradillion322729
clara581611207854
claysadleir964730
clemmielcg304935418
conrady95572853244563
corinnemccorkle082
corybillson253084834
courtneymccafferty56
dakota08q0805102416
deandnv25751532757234
deborabarksdale798
drusillapayne578806
dustinbaldridge38
elberttelfer568
elenal09427874464490
elisabroadus2257
ellismclane316891531
elvera6628483139
elvialavender09
ericpickett93794914
floygorman01636663
franchescamaness
genesisalexander6
giaburroughs46893
guillermoherrick8
gusheinig5006813136
hersheldraper36
ivanmoseley61999337
jeffryaiello27385282
jenscorbo083215402
jimmieball8430658
joiekeeney183120286
josephinechitwood01
kcyrichelle8914373012
kobymorrice978557
leahhager132147765
leliabaughan2211
lenoretousignant247
leomabrandt3216100
lidamascorro550
lorrainegallegos
louella12a3029981
loviematthies002
marcyfreeland9495088
margenebales8570025
marina42362450713
matthiaspetit371449
melisacastiglia060
nganbolton343216575
odettesear36035
palmaagosto630589
pansyloe03848653699
rosaline10w81270
roseannacockle5083
roxiewessel0625174
seymourlerner905090
shaneldisher04604335
shanetill399164116566
simah379808986344
staciewingfield769
terrencei6953751763
torriarscott25066
warrenhinder6456
williepinkston9240
zackirvin72719811111