-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Nibo2: Version 2.7 der Bibliothek erschienen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111

    Nibo2: Version 2.7 der Bibliothek erschienen

    Anzeige

    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 !!!

  2. #2
    Neuer Benutzer
    Registriert seit
    08.01.2006
    Ort
    Leverkusen
    Alter
    51
    Beiträge
    2

    NIBO 2 - images.h

    Hallo Wissender,
    ich habe NiboLib und WinAVR neu geladen. Daraufhin habe ich versucht das Promoprogramm zu compilieren.
    1. Fehlermeldung.
    Die Datei images.h wurde danach aus "C:\Programme\NiboLib\src\examples2\gfxtest" in das Verzeichnis "C:\Programme\NiboLib\include" kopiert.
    1. Fehlermeldung weg (freu).

    Allerdings bekomme ich jetzt eine neue:
    D:\_Achim\Eigene Dateien\Roboter\default/../neues_Display.c:17: undefined reference to `image_getWidth'
    D:\_Achim\Eigene Dateien\Roboter\default/../neues_Display.c:17: undefined reference to `image_getHeight'
    D:\_Achim\Eigene Dateien\Roboter\default/../neues_Display.c:17: undefined reference to `image_getBits'

    Was mache ich falsch??

    PS Ich weis: Der Fehler sitzt immer davor!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111
    Die Datei images.c auch noch kopieren und dem Projekt hinzufügen...

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo workwind,

    zur Erweiterung der Library hätte ich einen Vorschlag: Wie wäre es mit der Einführung von zwei Variablen, in denen die aktuelle Position des NiboBee aus den vorangegangenen Bewegungen geschätzt wird? Die Berechnungen dazu könnten im Hintergrund durch die Lib durchgeführt werden. Zugegebenermaßen ist das Ganze etwas anspruchsvoll, aber trotzdem machbar.
    Der Vorteil von solchen Variablen: Es ließe sich relativ einfach eine Funktion schreiben, mit Hilfe derer der Roboter an eine beliebige Position zurückkehren könnte.

    Gruß,
    robo

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2010
    Beiträge
    8
    Halli
    Habe die Datei images.c kopiert und dem Projekt zugefügt. Bekomme allerdings immer noch diese Fehlermeldung. Ist noch was falsch?

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von elektrolutz
    Registriert seit
    20.04.2010
    Ort
    Werl
    Alter
    59
    Beiträge
    139
    Hallo -Gast-,

    deine Frage kann man sehr ausführlich mit "JA" beantworten!
    Gruß aus Werl
    elektrolutz

    Theorie ist, wenn man weiß, wie alles funktioniert. Praxis ist, wenn alles klappt und keiner weiß warum!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2010
    Beiträge
    8
    Hallo elektrolutz
    danke für deine tiefgreifende Erklärung. Leider ist mir die Antwort zu komplieziert. Ich verstehe mit meinen kleinen Hirn deine Ausführungen nicht so richtig. Vielleicht könntest du mir deine Antwort noch etwas mehr deuten.
    Danke

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.05.2007
    Ort
    Stolberg
    Beiträge
    111
    Ich verstehe das Problem nicht ...
    Im Verzeichnis gfxtest sollten sich folgende Dateien befinden:
    gfxtest.c
    images.c
    images.h
    Biene.xbm
    MarsRover.xbm
    Nase.xbm
    nicai_logo.xbm

    Die Dateien gfxtest.c und images.c müssen dem Projekt hinzugefügt werden und das aktuelle Verzeichnis muss im Suchpfad enthalten sein (Compiler-Option -I. )
    Dann sollte es sich reibungslos compilieren und linken lassen!

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied Avatar von elektrolutz
    Registriert seit
    20.04.2010
    Ort
    Werl
    Alter
    59
    Beiträge
    139
    Hallo -Gast-,

    OK dann versuche ich mal eine etwas einfachere Antwort:

    Ich setze vorraus, dass das Kopieren der Datei "images.c" fehlerfrei funktioniert hat.

    Da ich derzeit keine Glaskugel habe, sehe ich nicht ob du die Datei an richtiger Stelle und mit richtiger Syntax in dein Projekt eingebunden hast.

    Aus gleichem Grund sehe ich nicht, ob oder wie du den oben vorgegeben Code verändert hast.

    "DIESE" Fehlermeldung hatte ich auch schon mal, oder war es doch eine andere Fehlermeldung. Da bin ich nun doch etwas unsicher. Auch hier fehlt mir meine Glaskugel um "DIESE" Fehlermeldung zu sehen.

    Hier bin ich mir aber 100%-ig sicher, wenn dein Progamm nicht läuft, dann ist da noch etwas falsch im Programmcode oder in den Einstellungen deines C-Compilers.

    Ich hoffe, dieses beantwortet deine klar und ausführlich gestellte Frage besser, als mein kompliziertes "ja" im obrigen Posting.
    Gruß aus Werl
    elektrolutz

    Theorie ist, wenn man weiß, wie alles funktioniert. Praxis ist, wenn alles klappt und keiner weiß warum!

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    16.07.2010
    Beiträge
    8
    Danke an alle wissenden für eure erlauchte Antwort.
    Danke

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •