Go Down

Topic: Comment puis-je inclure une partie de mon code (Read 1 time) previous topic - next topic

pierrot10

Bonjour,

Mon code etant plus large que 32720byte, je dois faire du menage, mais il n'y a rien que je souhaite supprimer.

En revanche j'ai une fonction que je souhaite sortie du code et l'utiliser comme une librairire

Comment puis je le mettre dans un fichier externe et l'inclure dans mon code, comme une fonction.

Dois-je créer une librairie? Cependant, je en sais pas le faire.
Pourrez-vous me donner un exemple simple.
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!
You can not know everything, perseverance, it is almost everything!

bricoleau

#1
Sep 02, 2013, 04:03 pm Last Edit: Sep 02, 2013, 04:06 pm by bricoleau Reason: 1
Pour ce qui est de structurer ton code en bibliothèques (ou librairies), je t'invite à peu de lecture ici :
http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-en-c/la-programmation-modulaire

Par contre, cela ne changera pas la taille de ton exécutable : tout le code utile est agrégé au moment de la compilation, pour produire un exécutable unique chargé en mémoire flash de l'arduino, avec la contrainte de taille maxi à 32kb.

Pour réduire la taille de ton exécutable, il n'y a pas 15 solutions :
1) revoir ton code pour le factoriser au maximum
2) éventuellement : éviter l'utilisation de librairies trop lourdes. Souvent elles embarquent tout un tas de fonctions ou propriétés, pour répondre à tous les cas d'utilisation, alors que ton besoin est plus restreint. Il m'arrive d'en prendre une "standard", et de la désosser pour ne conserver que ce dont j'ai besoin. Mais il faut déjà un bon niveau de maîtrise de la programmation. Et vu ta question sur les librairies, je ne suis pas sûr que ce soit une voie à privilégier.

Sinon ben faut passer à l'arduino mega (256 kb)

Maintenant, 32kb ce n'est pas rien.
As-tu identifié ce qui "pèse lourd" dans ton code ?
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

skywodd

Bonjour,

1) Programmation modulaire :
http://arduino.cc/en/Hacking/LibraryTutorial

2) Cherche les poids "lourd" de ton code
String, tableaux, ...

3) Optimise tes types, boucles, etc ...
http://skyduino.wordpress.com/2012/10/04/optimiser-son-code-source-c-pour-avr-gcc/
(ce dernier poids peut faire gagner une place folle mais demande du temps pour ne pas tout planter)

Donne nous un aperçu de ton code, 32K de programme compilé c'est un sacré morceau !
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

pierrot10

En fait, en gros, si j'ai bien compris,
faire une librairie pour "ecarter" un bout de code, ne m'aidera pas.

J'ai un peu d'ordre mais je n'arrive pas descendre en dessous de 29350k

Faut que je cherche encore

Je vais voir comment répondre au mieux a vos questions...
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!
You can not know everything, perseverance, it is almost everything!

pierrot10

hello,
Je suis vraiment embeté, je n'arrive pas a descendre en dessous de 32520 depuis que je doive utiliser la librairie SD.h.

Es-ce que de changer d'IDE ca peut aider?
Pourriez-vous me recommander un autre IDE que Arduino?

C'est peut etre vrai que mon code est gros, il a 702 ligne en comptant les espaces et les commentaires mais j'ai besoin de toutes les fonctionnalités codées. J'ai meme commenté des functions moins utiles, pour libérer de la taille

Voici le code:
http://www.hello-web.net/temp/forum.html
Il ne suffit pas de tout savoir, la persévérance, c'est déjà presque tout!
You can not know everything, perseverance, it is almost everything!

skywodd


Es-ce que de changer d'IDE ca peut aider?

Manifestement tu n'as pas compris un truc essentiel : LA MÉMOIRE ÇA N'EST PAS INFINIE (et les compilateurs ne font pas de miracles).
Changer de compilateur (et non pas d'ide) ne rendra pas ton code plus léger, ou du moins pas de beaucoup.


Pourriez-vous me recommander un autre IDE que Arduino?

AVR Studio, en oubliant Arduino et toutes les librairies toutes prêtes.
Mais même en codant en bas niveau les miracles ça n'existe pas.


C'est peut etre vrai que mon code est gros, il a 702 ligne en comptant les espaces et les commentaires mais j'ai besoin de toutes les fonctionnalités codées. J'ai meme commenté des functions moins utiles, pour libérer de la taille

702 lignes de code utilisateur, ok, mais soit conscient que derrière :
Code: [Select]
#include <MemoryFree.h>
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "inetGSM.h"
#include "sms.h"
//#include "call.h"
#include "gps.h"
#include <SD.h>
#include <string.h>
#include <stdio.h>
//#include <stdlib.h>
//#include <math.h>

Ce cache facilement +5000 lignes de codes dans les divers librairies.

Les miracles ça n'existe pas, ton programme ne passera pas dans une UNO quoi que tu fasses.
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Go Up