IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Taille importante du programme - Flash Mémoire à 98% Arduino Uno


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut Taille importante du programme - Flash Mémoire à 98% Arduino Uno
    Bonjour à tous

    Je suis en train de développer un petit projet d'affichage température, humidité, pression et heure sur une matrice 8x32.
    Je procède pas à pas et je viens de terminer la première partie, c'est à dire sans affichage de l'heure.
    Mon programme fonctionne mais je suis déjà à plus de 98% d'utilisation de la Flash Memory:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #include <SPI.h>
    #include <MD_MAX72xx.h>
    #include <MD_Parola.h>
    #include <Adafruit_BME280.h>
     
     
    #define HARDWARE_TYPE MD_MAX72XX::FC16_HW
    #define MAX_DEVICES 4
    #define CS_PIN 3
    #define BUFFER_SIZE 60          //taille pour stocker le message à afficher
     
    uint8_t dg[]={4,6,9,9,6};       //définition du caratère degré
     
    float pression;                 //Stockage de la pression atmosphérique (Pa)
    float temperature;              //Stockage de la température (oC)
    float humidite;                 //Stockage de l'humidité relative (%)
     
    char message[BUFFER_SIZE] = {""}; //message à afficher
     
    MD_Parola matrice = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
    Adafruit_BME280 sens;
     
    void lectureCapteur(){
      pression = sens.readPressure()/100;
      temperature = sens.readTemperature();
      humidite =sens.readHumidity();
    }
     
    void setup() {
      //Serial.begin(115200);
      matrice.begin();
      matrice.setIntensity(0);
      matrice.setTextAlignment(PA_CENTER);
      matrice.setPause(1000);
      matrice.setSpeed(100);
      matrice.displayClear();
      matrice.addChar('$',dg);
      sens.begin(0x76);
    }
     
    void loop() {
      lectureCapteur();
      char data[BUFFER_SIZE];
      String silo = "T=" + (String)temperature + (String)'$' + "C " + "H=" + (String)humidite + "%" + " P=" + (String)pression + "hPa";
      silo.toCharArray(data,BUFFER_SIZE);
      strcpy(message,data);
      if(matrice.displayAnimate()){
        matrice.displayText(message,PA_CENTER,100,0,PA_SCROLL_LEFT,PA_SCROLL_LEFT);
        matrice.displayReset();
      } 
     
    }
    Y aurait-il un moyen de réduire cet espace pris?
    Merci
    Michel

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    les polices pour l'affichage prennent de la place

    lisez cet article éventuellement ==> https://arduinoplusplus.wordpress.co...-flash-memory/

  3. #3
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut
    Merci M JAY pour ce lien.
    J'ai appliqué la modification pour les effets non utilisés et je suis descendu à 74,8% de Flash Memory utilisés.
    Par contre je n'ai pas pu le faire sur MD_MAX72xx. car je dois utiliser la fonction addChar pour redéfinir le caractère '°' (degré).
    Je vais continuer mon projet en espérant que j'aurai assez de mémoire pour afficher l'heure en utilisant un DS1307.
    Salutations
    Michel

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Citation Envoyé par mormic Voir le message
    Je vais continuer mon projet en espérant que j'aurai assez de mémoire pour afficher l'heure en utilisant un DS1307.
    Salutations
    ça ne devrait pas prendre bcp de mémoire, une fois les polices chargées, vous pouvez les utiliser tant que vous voulez

  5. #5
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut MD_MAX72XX Fonts chargés en Flash
    Bonjour
    Je ré-ouvre cette discussion car je suis à nouveau dans la panade avec les fonts chargés en mémoire flash dans la librairie MD_MAX72xx.
    En effet, après avoir appliqué les conseils de Jay, j'ai gagné de la place pour poursuivre mon projet, mais rapidement je n'ai pas pu aller plus loin car les 35K ont été dépassés.
    Alors dans le fichier MD_MAX72xx.font.cpp j'ai éliminé les caractères inutiles pour mon projet; j'ai gagné un peu de place à nouveau mais vite les 35K atteints.
    J'ai donc pensé charger les fonts en RAM puisque je ne suis qu'à 45% d'utilisation. Mais là c'est un peu trop compliqué pour moi. J'ai supprimé PROGMEM et les pgm_read_byte mais là j'ai planté la compile.
    Si quelqu'un a une idée comment faire pour modifier la librairie pour charger les fonts en RAM.
    Merci
    Michel

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Si quelqu'un a une idée comment faire pour modifier la librairie pour charger les fonts en RAM.
    Le problème c’est que pour les charger en ram il faut d’abord qu’elles soient en mémoire flash… Donc ce serait la double peine…

  7. #7
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut
    Pas de chance pour moi!
    Afin de finaliser mon projet, j'ai utilisé un Arduino Uno wifi rev2 et la plus de problème: 36,520 k soit 75% de la flash.
    Mais je voulais faire le montage avec un ATMega328P en stand alone pour ne pas utiliser une carte Arduino Uno Complète.
    Il va falloir que je change de micro; mais quoi?
    J'ai pensé à un ATMEGA 4809 sur une carte Nano Every (48ko de flash). Qu'en pensez-vous?
    Merci Jay M pour ton aide toujours très précieuse.

    Cordialement
    Michel

  8. #8
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    Un mega mini por rester dans une architecture proche sinon plus de souci de place avec un ESP32 ou similaire…

  9. #9
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut
    En grattant un petit peu sur le Net, je vois qu'il y a des tas de solutions pour faire des circuits en Stand Alone avec des micro-controleurs DIP: ATMEGA4809, ATMEGA1284 qui ont beaucoup plus de mémoire flash et qui se programment toujours avec l'IDE d'Arduino ou Visual Studio Code.
    Les composants en DIP sont plus pratiques pour les grands bricoleurs qui fabriquent leurs circuits imprimés artisanalement. Il est vrai que les circuits tout fait (Arduino, ESP32, FTDI...) sont bien pratiques.
    J'analyse tout cela et je retourne à mes études et réalisations.
    Merci encore et à plus tard pour d'autres emm....
    Michel

  10. #10
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 899
    Par défaut
    On trouve des cartes esp32 prêtes à souder sur une perfboard ou avec un petit support (et 2 boutons pour le flash/reset) qu’il est facile de souder sur une autre carte

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vers la fin programmée des mémoires flash ?
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 35
    Dernier message: 21/08/2013, 15h27
  2. Taille d'un objet en mémoire
    Par dr23fr dans le forum Général Java
    Réponses: 1
    Dernier message: 23/05/2006, 11h39
  3. Réponses: 5
    Dernier message: 29/01/2006, 22h17
  4. [Processus] Faire un Hash sur un programme en mémoire
    Par KiLVaiDeN dans le forum Windows
    Réponses: 2
    Dernier message: 23/11/2005, 18h40
  5. [GCC] Réduire la taille d'un programme statique
    Par Geronimo dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 05/03/2004, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo