RoboterCC - Robotic Code Compiler
Forum Robot Kits NIBO 2 NIBO 2 Projekte Smile und Icon

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Smile und Icon

Smile und Icon 11 Jahre 11 Monate her #1076

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Mit diesem kleinen Prg kann man ganz einfach ein Smile oder Icon erzeigen und selber gestalten. Es ist aus einem Prg von BirgerT entstanden. :welcome:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Smile und Icon 11 Jahre 11 Monate her #1085

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Jo Achim, lass den Smily doch mal blinzeln. ;)
Wenn er auf dem Display auch das richtige Auge zudrückt, dann haste das korrekte XBM16 Makro erwischt.
Im ersten Projekt hatte ich da einen Fehler drin, die Ausgabe war gespiegelt.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Smile und Icon 11 Jahre 11 Monate her #1087

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo Birger
das mit dem blinzeln verstehe ich nicht so richtig. Ich kann ein neues Smili machen und das dann blinzeln lassen. Oder kann man einzelne Bots (0,1) ändern?
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Smile und Icon 11 Jahre 11 Monate her #1089

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Ich habe Dein Code noch nicht geladen, aber anhand der XBM Makro Parameter habe ich bemerkt, dass das Smile etwas kräftiger aussehen müsste.
Du kannst einfach das vorhandene Smily ändern, nur ein Auge blinzeln lassen (zusammenkneifen, schmaler Spalt) oder machst noch ein zusätzliches.
Wenn Du also das linke Auge bearbeitest, und das dann im Display als rechtes Auge angezeigt wird, dann ist da ein Spiegeldreher drin.
Am Anfag war mein Pfeil auch immer verkehrt herum, dann habe ich die Makros angepasst, das es passt. Aber bei dem XBM16 war dann die Ausgabe spiegelverkehrt.
Im Thread "Display in Fahrtrichtung" hat Egon einen Link auf die xbm Grafikbeschreibung gepostet.
Einzelne Bits kannste programmtechnisch hinterher nicht mehr ändern, weil diese ja im Flash stehen. Muss selber nochmal schauen, aber eine xbm-Grafik kann - meine ich - aus dem RAM ausgegeben werden (Draw Funktion ohne das "p").
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Smile und Icon 11 Jahre 11 Monate her #1091

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Bin müde .. Muss im Büro immer 100% geben: Mo 10, Die 20, Mi, 40, do 20, Fr 10.
Letzte Woche hatte nur 3 Tage - und trotzdem 100% ;)

Erweiter Dein Projekt doch mal hiermit:
void nibo_smile2(uint8_t smx, uint8_t smy)
{                                         
#define _XCAT(x,a,b,c,d,e,f,g,h) x##a##b##c##d##e##f##g##h
#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_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),    // Smili
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,0,0,0,0,0,1,0,0,0,1,0),
XBM16(0,1,0,0,0,0,0,0,0,1,1,1,0,0,1,0),
XBM16(1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1),
XBM16(1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1),
XBM16(1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1),
XBM16(1,0,0,1,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,0,0,0,1),
XBM16(1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1),
XBM16(0,1,0,0,0,1,0,0,0,0,0,1,0,0,1,0),
XBM16(0,1,0,0,0,0,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) };
 
gfx_move(smx,smy);                          // Grafik Ausgabeposition
gfx_draw_xbm_P(xbm_smile1_width, xbm_smile1_height, (PGM_P) xbm_smile1_data);
}

und in main noch das einfügen
delay(1000);
nibo_smile2(80,5);
delay(2000);

Und blinzelt er mit seinem rechten Auge (das auf der linken Seite der Grafik)?

Nö - tut er nicht:
dieses Makro verwenden
#define XBM16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (uint8_t) _XCAT(0b,h,g,f,e,d,c,b,a),(uint8_t)  _XCAT(0b,p,o,n,m,l,k,j,i

und wenn dann noch ein #include <nibo/delay> eingefügt wird, lässt sich das auch ohne Warning builden..
Letzte Änderung: 11 Jahre 11 Monate her von BirgerT. Begründung: XBM16 Makro getestet
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Smile und Icon #3 11 Jahre 11 Monate her #1096

  • BirgerT
  • BirgerTs Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 325
Endlich ist mir das Licht aufgegangen, wie ich dem Präprozessor Buchstaben übersetzen lassen kann. jetzt wird's noch einfacher Icons zu definieren:
void nibo_smile3(uint8_t smx, uint8_t smy) 
{                                         
#define _XCAT(x,a,b,c,d,e,f,g,h) x##a##b##c##d##e##f##g##h
//#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 XBM16(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) (uint8_t) _XCAT(0b,h,g,f,e,d,c,b,a),(uint8_t)  _XCAT(0b,p,o,n,m,l,k,j,i) 
#define xbm_smile1_width 16
#define xbm_smile1_height 16
static unsigned char xbm_smile1_data[] PROGMEM = {
 
#define _ 0
#define X 1

XBM16(_,_,_,_,_,X,X,X,X,X,X,_,_,_,_,_),    // Smili
XBM16(_,_,_,X,X,_,_,_,_,_,_,X,X,_,_,_),
XBM16(_,_,X,_,_,_,_,_,_,_,_,_,_,X,_,_),
XBM16(_,X,_,_,_,X,_,_,_,_,X,_,_,_,X,_),
XBM16(_,X,_,_,X,X,X,_,_,X,X,X,_,_,X,_),
XBM16(X,_,_,_,X,X,X,_,_,X,X,X,_,_,_,X),
XBM16(X,_,_,_,X,X,X,_,_,X,X,X,_,_,_,X),
XBM16(X,_,_,_,_,X,_,_,_,_,X,_,_,_,_,X),
XBM16(X,_,_,_,_,_,_,_,_,_,_,_,_,_,_,X),
XBM16(X,_,_,X,_,_,_,_,_,_,_,_,X,_,_,X),
XBM16(X,_,_,_,X,_,_,_,_,_,_,X,_,_,_,X),
XBM16(_,X,_,_,_,X,X,X,X,X,X,_,_,_,X,_),
XBM16(_,X,_,_,_,_,X,X,X,_,_,_,_,_,X,_),
XBM16(_,_,X,_,_,_,X,X,X,_,_,_,_,X,_,_),
XBM16(_,_,_,X,X,_,_,X,_,_,_,X,X,_,_,_),
XBM16(_,_,_,_,_,X,X,X,X,X,X,_,_,_,_,_) };
 
#undef _
#undef X

gfx_move(smx,smy);                          // Grafik Ausgabeposition
gfx_draw_xbm_P(xbm_smile1_width, xbm_smile1_height, (PGM_P) xbm_smile1_data);
 
}
und in Main noch
nibo_smile3(80,5);                // Aufruf Unterprogramm
delay(2000);
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Ladezeit der Seite: 0.198 Sekunden

Werbung