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 :

Programmation modulaire et librairie Oled Adafruit SSD1306


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Projeteur
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Projeteur

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut Programmation modulaire et librairie Oled Adafruit SSD1306
    Bonjour,

    Je suis débutant en code, j’apprends tout seul ( j'essaye )
    J'utilise un écran OLED avec la librairie Adafruit SSD1306.

    J'essaye de réaliser un jeu et je souhaiterai rendre mon programme modulaire, un peu comme ça !
    Le fichier principale :
    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
    #include <SPI.h>
    #include <Wire.h>
    #include <Adafruit_GFX.h>
    #include <Adafruit_SSD1306.h>
    #include "fillRect.h"
     
    #define OLED_MOSI  5
    #define OLED_CLK   6
    #define OLED_DC    7
    #define OLED_CS    9
    #define OLED_RESET 8
    Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
     
    boolean oneTime (true);
     
    void setup() {
      display.begin(SSD1306_SWITCHCAPVCC);
     
      display.clearDisplay();
      display.display();
    }
     
    void loop() {
     
      if (oneTime == true) {
        oneTime = false;
        display.drawRect(10, 10, 60, 40, 1);
        fillRect();
        display.display();
      }
    }
    Le fichier fillRect.h :
    Le fichier fillRect.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void fillRect() {
      display.fillRect(10, 10, 60, 40, 1);
    }
    Le problème est qu'il ne compile pas car le display du fillRect.cpp n'est pas déclaré.
    J'utilise extern pour les variables, mais dans le cas d'une librairie je sèche.

    Pourriez vous m'aider !
    Merci

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Il faut que ta fonction prenne cet object 'display' en paramètre

  3. #3
    Membre habitué
    Homme Profil pro
    Projeteur
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Projeteur

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut
    Merci pour ta réponse. Mais elle est aux limites de mes connaissances.
    J'ai pas encore regardé le monde Objet.

    Pour moi un paramètre de fonction, c'est du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void fillRect(int parametre) {
    }
    Mais dans le monde objet, je vois pas.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 200
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    Pas besoin de tout ça dans l'EDI Arduino à priori

    Tu crées un nouvel onglet fillRect où tu colles ta fonction et c'est tout, la phase de compilation se charge de faire le lien...

    Nom : NewPingEventTimer_lcd.png
Affichages : 663
Taille : 81,1 Ko

  5. #5
    Membre habitué
    Homme Profil pro
    Projeteur
    Inscrit en
    Juin 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Projeteur

    Informations forums :
    Inscription : Juin 2017
    Messages : 11
    Par défaut
    C est exactement ce que j ai fais.
    J ai créé un onglet fillRect.cpp et un onglet fillRect.h pour le prototype.
    Dans l onglet fillRect.cpp, j'ai mis la fonction.

    Mais il ne reconnais pas le display...

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 200
    Billets dans le blog
    47
    Par défaut
    Citation Envoyé par greg006 Voir le message
    J ai créé un onglet fillRect.cpp et un onglet fillRect.h pour le prototype.
    Pas besoin d'entête .h, pas besoin d'"include fillRect.h" dans le programme principal.

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par greg006 Voir le message
    Merci pour ta réponse. Mais elle est aux limites de mes connaissances.
    J'ai pas encore regardé le monde Objet.

    Pour moi un paramètre de fonction, c'est du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void fillRect(int parametre) {
    }
    Mais dans le monde objet, je vois pas.
    C'est (presque) pareil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void fillRect(Display& display) {
    }
    'int' est un type, 'Display' est un type. Le premier est built-in, le second est user-defined, mais il n'y pas de différence pratique à l'utilisation.

    Mais si tu débutes totalement, la solution de f-leb semble intéressante. Et je pense que ce n'est pas exactement ce que tu as fait. On va l'attendre pour plus de précisions ^^

Discussions similaires

  1. programmation modulaire en C
    Par lastrecrue dans le forum GTK+ avec C & C++
    Réponses: 11
    Dernier message: 28/06/2006, 21h03
  2. programmation modulair en C
    Par argon dans le forum C
    Réponses: 32
    Dernier message: 26/06/2006, 10h10
  3. programmation modulaire
    Par barbarello dans le forum C++
    Réponses: 2
    Dernier message: 19/02/2006, 13h04
  4. [Projet] Programmation modulaire d'un projet.
    Par loverdose dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 18/11/2005, 21h59

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