Sketch verkleinern

Hallo zusammen,

ich versuche verzweifelt mein GPS am NanoWii ans laufen zu bekommen.
Jedes mal wenn ich:
/* GPS using a SERIAL port
only available on MEGA boards (this might be possible on 328 based boards in the future)
if enabled, define here the Arduino Serial port number and the UART speed
note: only the RX PIN is used, the GPS is not configured by multiwii
the GPS must be configured to output GGA and RMC NMEA sentences (which is generally the default conf for most GPS devices)
at least 5Hz update rate. uncomment the first line to select the GPS serial port of the arduino */
#define GPS_SERIAL 2 // should be 2 for flyduino v2. It's the serial port number on arduino MEGA
#define GPS_BAUD 115200

einstellen will Kommt:

Binäre Sketchgröße: 32.260 Bytes (von einem Maximum von 28.672 Bytes)
processing.app.debug.RunnerException: Sketch zu groß; siehe http://www.arduino.cc/en/Guide/Troubleshooting#size für Tipps zum Verkleinern.

Das hier habe ich über den Link gefunden:

How can I reduce the size of my sketch?

The ATmega168 chip on the Arduino board is cheap, but it has only 16 Kb of program code, which isn't very much (and 2 Kb is used by the bootloader).

If you're using floating point, try to rewrite your code with integer math, which should save you about 2 Kb. Delete any #include statements at the top of your sketch for libraries that you're not using.

Otherwise, see if you can make your program shorter.

We're always working to reduce the size of the Arduino core to leave more room for your sketches.

Nur verstehe ich nicht ganz was ich löschen soll, ich habe einfach mal zum testen die Zeilen mit den Befehlen gelöscht die ich selber nicht nutze, jedoch wird der Sketch nicht kleiner.

Kann mir jemand sagen was ich da genau machen muss?

Gruß,

Daniel

Hi,
auf den ersten Blick ist dein Programm zu gross.
Teste mal wie sich der Speicher verändert wenn du einen #include <LibraryX.h> weglässt.
Dann solltest du sehen das sich die Grösse schon verändert.

Die einzigen Möglichkeiten stehen ja in dem Link.

  • Falls Float verwendet wird => versuchen Integer zu verwenden.
  • Programmcode kürzen

Wenn du eine Library benutzt aber nur 1 Methode von dieser Library verwendest.
Vielleicht die Library weglassen und selbst die Methode schreiben.

Gruss ArduinoToy

#include <LibraryX.h> gibt es scheinbar nicht (habe die suche benutzt)

Ich verwende Quasi das hier:
Google Code Archive - Long-term storage for Google Code Project Hosting. (MultiWii release 2.1 )

Natürlich mit meinen einstellungen für den Copter.
Sobalt ich in config.h
#define GPS_SERIAL 2 // should be 2 for flyduino v2. It's the serial port number on arduino MEGA
#define GPS_BAUD 115200

Setze wird es zu groß, vieleicht könntest du die datei Multiwii ja mal öffnen und gucken wie das auf gebaut ist und wie man das kleiner machen könnte.

Ich hab grade nämlich 0 Duchrblick

das mit der #include <LibraryX.h> ..LibraryX war nur ein Platzhalter für irgend eine Library die du verwendest.

Aber die Stelle :

/* GPS using a SERIAL port
only available on MEGA boards (this might be possible on 328 based boards in the future)
if enabled, define here the Arduino Serial port number and the UART speed
note: only the RX PIN is used, the GPS is not configured by multiwii
the GPS must be configured to output GGA and RMC NMEA sentences (which is generally the default conf for most GPS devices)
at least 5Hz update rate. uncomment the first line to select the GPS serial port of the arduino */

sagt das GPS nur an MEGA Boards aktuell geht, 328 vielleicht in der Zukunft.

NanoWii wohl zu klein (ATmega32U4) ..
Vielleicht auf ein MEGA board umsteigen , oder hoffen das die Library bald verändert wird.
Aber vielleicht hat ja hier schon jmd. das selbe Problem gehabt.

Gruss ArduinoToy

Jau, genau die NanoWii nutze ich ja.

Da mein GPS aber kein i2s Buss hat, wollte ich es an der Seriel Port anklemmen welcher für den Spektrum Sat genutzt wird.

Wenns nicht geht muss ich das wohl über einen 2ten Controler machen der mir aus dem RX-TX ein I2C Buss macht -.-
Was wieder ein Bauteil mehr ist und zudem wieder software/eintellugen braucht.

Glaube nicht das es an IC2 oder sowas liegt.

Dein NanoWii hat nur - 32 kB Flash Speicher
Wenn du GPS noch mitbenutzen willst reicht das nicht aus.

Deine Fehlermeldung:
32.260 Bytes (von einem Maximum von 28.672 Bytes)

selbst wenn du Unwichtige Teile wie LED.ino oder sowas entfernst reicht das wohl immer noch nicht.
Das hätten die Ersteller der Library sonst schon erwähnt.

Man braucht wohl bei dem aktuellen Stand der Library min.
Ein Arduino Mega Board mit 128 kb - Flash Speicher
Aber wie gesagt vielleicht schreib noch jmd was der mit MultiWii mal gearbeitet hat. Bin da kein Experte.
Aber def. ist GPS wohl nicht für NanoWii möglich.

Gruss ArduinoToy

p.s
sowas vielleicht http://flyduino.net/Flyduino-MEGA-Flight-Controller-CPU-Board

Mit der Speichergröße hast du wohl recht.

Aber wenn man sich direkt ein GPS mit I2C Buss kauft, klappt das.
Stelle ich dies nämlich ein, würde das von der größe passen.
z.b. gibt es das hier: http://www.ebay.de/itm/I2C-GPS-NAV-Module-w-CN-06-GPS-receiver-for-MWC-MultiWii-SE-Flight-control-boa-/320956355788?pt=RC_Modellbau&hash=item4aba7d54cc
den "Converter" bekommt man auch einzeln. Das wird sowas wie das hier sein: http://flyduino.net/Flyduino-Pro-Micro-16Mhz-5V-Schwarz-16mm-PCB

Ich werd da nochmal mit dem Flydoino support sprechen