PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nibo2: Version 2.7 der Bibliothek erschienen



workwind
12.04.2010, 21:27
Seit heute gibt es die Version 2.7 (20100412) der NiboLibrary:

http://sourceforge.net/projects/nibo/files/

Die Verbesserungen der Bibliothek betreffen das Grafikdisplay:
:arrow: Funktion zur Ausgabe von Bitmap Grafiken im XBM Format
:arrow: Funktion zum Zeichnen von Linien (Vektorgrafik)
:arrow: 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:


#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;
}





ACHTUNG! Die Lib benötigt WinAVR in der Version 20100110 !!! :shock:

El Achimo
17.04.2010, 10:43
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!

workwind
17.04.2010, 14:54
Die Datei images.c auch noch kopieren und dem Projekt hinzufügen...

robo.fr
17.04.2010, 22:04
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

-Gast-
16.07.2010, 13:10
Halli
Habe die Datei images.c kopiert und dem Projekt zugefügt. Bekomme allerdings immer noch diese Fehlermeldung. Ist noch was falsch?

elektrolutz
17.07.2010, 01:03
Hallo -Gast-,

deine Frage kann man sehr ausführlich mit "JA" beantworten!

-Gast-
17.07.2010, 09:10
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

workwind
17.07.2010, 10:56
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!

elektrolutz
17.07.2010, 11:38
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.

-Gast-
17.07.2010, 15:30
Danke an alle wissenden für eure erlauchte Antwort.
Danke

-Gast-
17.07.2010, 19:28
Eure Vorschläge sind nicht schlecht. Die 7 benannten Datein befinden sich in den Verzeichnissen und sind in Compiler eingebunden. Es ist ueber include eingegebunden wo sich die Dateien befinden. Trotzdem bekomme ich diese Meldungen. Sorry, hab nicht soviel Ahnung von den Sachen. Ist erst mein drittes Prg. Die anderen aus Heft haben gegangen. Naja mit einer guten Glaskugel kann man viel machen.

elektrolutz
18.07.2010, 13:41
Hallo -Gast-,

ohne deinen Programmcode zu kennen, ist es nicht möglich, zu sehen wo ein Fehler ist. Das Fehlen einer Glaskugel kannst du ausgleichen, in dem du deinen Programmcode hier einstellst oder ihn als Download zur Verfügung stellst.

Die von die festgestellten Meldungen beinhalten in der Regel (leider nicht immer) wichtige Hinweise, aus denen man auf den/die gemachten Fehler schließen kann. C-Compiler abeiten gründlich und versuchen alle Folge-Fehler des ersten Fehlers anzuzeigen, deshalb sind eigentlich nur die ersten 2-3 Fehlermeldungen aus deiner Liste interessant. (Ein vergessenens Zeilen-Endzeichen kann schnell mal einige hundert Fehlermedungen produzieren.) Auch hier müsstest du wegen der fehlenden Glaskugel dich um die Darstellung der angezeigten Meldungen selbst bemühen.

Je mehr Informationen du zu deinem Problem freigibst, um so größer ist die Möglichkeit, dir brauchbare Hilfe geben zu können.

Vielleicht solltest du erst einmal das Nibo2-Tutorial genau und komplett durcharbeiten und auch mit den dort gestellten Aufgaben/Anregungen experimentieren. Dabei lent man den Compiler und die Nibo2-Befehle recht gut kennen. Wichtig ist es, die Begleittexte zu den Programmbeispielen genau zu lesen und zu verstehen, dort wird auch darauf hingewiesen, welche zusätzlichen Eintragungen im Compiler erfoderlich sind. Nicht alles steht im Programmcode!

-Gast-
18.07.2010, 14:36
Hallo
der komplete Prgogram code steht hier oben. Habe es so genommen wie es dort steht ohne ein Zeichen zu ändern. Die komplett Felermeldung steht etwas tiefer von el achimo. Son gibt es keine Fehlermeldung. nur dies 3 sind angezeig. Unter dies Daten scheint es doch zu gen auch one Glaskugel

-Gast-
19.07.2010, 17:56
Oh, all ihr Wissenden,
hat sich mein Proglem als zu schwierig dargestellt, so verzeiht meine drastige Ausdrucksweise. Leider get das Program noch immer nicht. Habe den AVR Stodio lanf gequält, doch auch er kann oder will mir nicht helfen. Ich erahne schon eure Antwort, das problem sitz mit Ali vor dem Schirm.
Dankre

elektrolutz
20.07.2010, 00:08
Hallo -Gast-,

leider bin ich nicht der beste Wissende, sonst hätte ich dein Problem problemlos (auch ohne Glaskugel) erkennen können.

Aus deiner Frage vom 16.07. war nun wirklich nicht zur erkennen, wie dein Programmcode aussieht und du hast auch nicht erklärt, dass du mit AVR Studio 4 arbeitest. Aber mittlerweile hast du ja deine Geheimnisse preis gegeben.

Zu deiner Info, ich kann derzeit dein Problem nachvollziehen.
Bin gerade dabei zu erforschen, woran es liegt und bin etwas ratlos.
Du wirst dich aber auf weitere Infos von mir bis zum Wochenende gedulden müssen, denn ich muss nebenbei auch noch etwas arbeiten, habe Familie und auch noch andere Hobbys.
Die größten Probleme habe ich bisher immer mit den Eintragungen in Studio 4 gehabt und mit den Zuweisungen der Verzeichnis-Strukturen. Hier ist der Informationsfluss leider immer wieder sehr undeutlich, unübersichtlich, oder fehlt ganz.

Vielleicht kommt ja zwischenzeitlich auch ein Tip aus anderer Quelle.

Frage: Du hast den "AVR Stodio lanf" gequält, OK Stodio = Studio, aber "lanf" bekomme ich gerade nicht wirklich übersetzt. Für einen Tip wäre ich dankbar.

-Gast-
20.07.2010, 19:29
Danke für dein Hilfe und Sorry.
lanf ist falsch. Bin mit Finger leid auf andere Taste gekommen. Hatte schon mehrere Einstelllung gemacht. Er wollte aber nicht so wie er soll. Komisch die anderen Programm vom Heft gehen.

Achim S.
20.07.2010, 20:48
Hallo Freunde
habe alles mitverfolgt. Leider war ich erst ein bisschen Krank unmd dann wollte mich mein Chef mit Geld zur Arbeit überreden.
Konnte bisher nur kurz einiges versuchen. Das mit dem Studio 4 stimmt. in einigen Sachen sind die Einstellungen sehr komisch. Habe versucht einiges zu ändern und schon kommen andere Fehlermeldungen. Nicht ganz klar. Muss noch mal nachdenken wie ich die Datei dabei eingebunden hatte. Für kompetente Fragen ist eigentlich Workwind zuständig. Vielleicht könnte er noch mal sagen, wo es genau eingebunden wird. Das Programm ging doch. Komisch. Irgendwas mache ich auch falsch.
Achim

-Gast-
26.07.2010, 20:02
Hello
Hab versucht Programm allein zu bringen. Leider geht noch immer nicht. Da anderen gehen wie beschrieben. Versteh die Meldung nicht so recht. Wozu sind die da?