Pages: [1] 2   Go Down
Author Topic: GEOGPS - Projektvorstellung  (Read 1200 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

so langsam nähere ich mich einem echtem Projekt namens GEOGPS. Es wird ein GPS Gerät werden, welches auf das Geocaching zugeschnitten ist. Es wird ein Positionslogger mit SD Card haben, Cachepositionen von SD Card lesen können etc.

Leider musste ich wieder etwas zurückrudern: der SD Card Adapter verlor einige Beine beim beim Löten smiley Passiert nun mal, auch wenn es dahingehend ärgerlich ist, da es schonmal lief smiley

Hier ein erstes Demovideo, wo das Gerät noch nicht im Gehäuse ist:


Links die ATmega328 Platte, rechts der 1100mAh Akku. Oben das Nokia 3310 Shield.

Hier mit angeschlossenem EM 406 A:



Hier im Gehäuse - man sieht schön den Blütenstaub smiley :



Habe nochmal eine neue Funktion eingebaut: Cacheradar. Ist noch mit fixen Werten, weil ich den ATmega328 immer zwischen Arduino Uno und DIY Platine hin-und-herstecke und am Arduino Uno kein GPS angeschlossen habe.





Einige Menüs sind momentan noch ohne Funktion. Werden es aber bald sein smiley



BTW: Wenn jemand von Euch Nokia 3310 Display Eigentümern eine Idee hat wie ich einen 3x5 Font auf das Nokia 3310 Shield bekomme wäre ich sehr dankbar! Ich benötige das für die GPX Beschreibung der Caches von geocaching.com.

« Last Edit: April 27, 2011, 06:04:34 am by DE8MSH » Logged


Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sieht sehr gut aus. Kannst du sagen was das Gelbe da auf dem Joystick vom Shield ist?
Logged


0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi gloob,

danke Dir. Ja, das Gelbe ist ein Platiskteil, welches ich aus einem Gehäuse abgeschnitten habe. Das sind die "Gnubbel", in die man die Platinen mit Schrauben schraubt. Ich habe keine Ahnung, wie die "Dinger" heißen. Das habe ich dann mit Kleber auf den Stick geklebt.

Aber ACHTUNG: den Kleber nur sehr vorsichtig benutzen, sonst läuft er in den Stick und nichts geht mehr!
« Last Edit: April 25, 2011, 01:00:43 pm by DE8MSH » Logged


Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn jemand von Euch Nokia 3310 Display Eigentümern eine Idee hat wie ich einen 3x5 Font auf das Nokia 3310 Shield bekomme wäre ich sehr dankbar!

Also ich machs ohne Library, da ist es kein Problem. Mit Library weiß ichs nicht...
Logged

0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn jemand von Euch Nokia 3310 Display Eigentümern eine Idee hat wie ich einen 3x5 Font auf das Nokia 3310 Shield bekomme wäre ich sehr dankbar!

Also ich machs ohne Library, da ist es kein Problem. Mit Library weiß ichs nicht...

Meine Idee wäre eine Bitmap, die alle Zeichen x 4px Breit /6px hoch ist. Dann in .h umwandeln. Momentan weiß ich nicht, die ich die Routine bastel. Die LIB ist kompliziert gemacht, finde ich.
Logged


Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Du kannst Dir gerne hier die aktuellste Version meines aktuellen Projekts ansehen, die das 3310 direkt anspricht.

Und zur korrekten vertikalen Positionierung würde ich einfach das entsprechende Bitmap-Byte shiften.
Logged

0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Joghurt,

ich versuche mal mein Glück. Danke Dir.
Logged


0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich habe doch die original Library hingehackt. Nun kann ich einen 3x5 Font aus der Sammlung von Benedikt K. (µC-Forum / font.zip aus http://www.mikrocontroller.net/topic/54860) anzeigen:



« Last Edit: April 26, 2011, 05:31:46 am by DE8MSH » Logged


Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Aber es fehlt noch der Umbau auf acht Zeilen; oder wolltest Du nur den kleineren Font...?
Logged

0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Das stimmt. Da habe ich jetzt gar keinen Plan wie ich das mache... Macht das Display nicht immer nur sechs Zeilen wg. der Bänke?
Logged


Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich weiß jetzt nicht wie die Library das macht. smiley-sad

Ich würde bei mir (ich habe ein Array mit 504 Bytes (welches das Display repräsentiert, quasi ein FrameBuffer) welche nacheinander die sechs einzelnen Zeile füllen) das entsprechende vertikale Byte des Buchstaben und die gewünschte Y-Koordinate nehmen, das Byte in zwei Variablen packen, passend shiften und aufs Display ODERn.

Ungefähr so:

Also die "obere" Variable um sechs Positionen nach unten shiften und die "untere" um die restlichen zwei (muss insgesamt 8 ergeben)  nach oben.
« Last Edit: April 26, 2011, 06:03:09 am by Joghurt » Logged

0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok, verstanden. Aber wie umsetzen? Die LIB hat diese (angepasste) Funktion:

void Nokia_3310_lcd::writeMiniChar(unsigned char ch, char mode) {
   unsigned char j;
  
      if (cursor_col > LCDCOLMAX - 4) cursor_col = LCDCOLMAX - 4; // ensure space is available for the character
      if (cursor_row > LCDROWMAX - 1) cursor_row = LCDROWMAX - 1; // ensure space is available for the character
   lcd_buffer[cursor_row][cursor_col] = 0x00;
   for(j=0; j<4; j++) {
      lcd_buffer[cursor_row][cursor_col + j] =  pgm_read_byte(&(miniFont [(ch-32)*4 + j] ));
        }

   lcd_buffer[cursor_row][cursor_col + 4] = 0x00;

   for(j=0; j< 4; j++) {
      if( mode == MENU_NORMAL )
         writeData(lcd_buffer[cursor_row][cursor_col++]);
      else
         writeData(lcd_buffer[cursor_row][cursor_col++] ^ 0xff);
      if (cursor_col >= LCDCOLMAX)
      {
         cursor_col=0;
         cursor_row++;
         if (cursor_row >= LCDROWMAX) cursor_row=0;
      }
   }
Logged


Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Naja, den Code

Code:
for(j=0; j<4; j++) {
lcd_buffer[cursor_row][cursor_col + j] =  pgm_read_byte(&(miniFont [(ch-32)*4 + j] ));
}

könntest Du für die zweite Zeile z.B. so abändern:

Code:
for(j=0; j<4; j++) {
lcd_buffer[cursor_row][cursor_col + j] |=  pgm_read_byte(&(miniFont [(ch-32)*4 + j] )) << 6;
lcd_buffer[cursor_row +1][cursor_col + j] |=  pgm_read_byte(&(miniFont [(ch-32)*4 + j] )) >> 2;
        }
(Bei der Richtung der ">>" bin ich mir jetzt nicht sicher.)

Das "|=" ist wichtig, weil Du sonst mit der nächsten Zeile die aktuelle überschreibst.
Da musst Du dann allerdings ganz zu Anfang einen "Reinigungslauf" machen, also alles auf "0x00" setzen.

So oder so ähnlich... smiley-wink
« Last Edit: April 26, 2011, 06:10:43 am by Joghurt » Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 3
Posts: 773
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Und wenn Du das maximale an Buichstaben bei der Anzeige rausholen willst könntest Du den Font "proportional" anlegen, indem Du die Breiten von Zeichen wie "i", "l", "1", "." oder "!" berücksichtigst und nicht immer fest 3 Pixeln annimmst.
Das sieht dann auch in der Ausgabe besser aus, kostet aber etwas Aufwand. smiley-wink
Logged

0
Offline Offline
Sr. Member
****
Karma: 5
Posts: 342
A SWL life as a coder... I'll try.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

So ähnlich  smiley-grin, denn:


C:\Program Files\Arduino\libraries\nokia_3310_lcd\nokia_3310_lcd.cpp: In member function 'void Nokia_3310_lcd::writeMiniChar(unsigned char, char)':
C:\Program Files\Arduino\libraries\nokia_3310_lcd\nokia_3310_lcd.cpp:434: error: invalid operands of types 'const unsigned char*' and 'int' to binary 'operator>>'
Logged


Pages: [1] 2   Go Up
Jump to: