Arduino, compilation séparée
Par Michel Billaud, mardi 2 juin 2015 à 11:41 :: Bidouilles :: #78 :: rss
Découper en classes, c'est bien, la compilation séparée c'est mieux : ça évite de copier-coller des bouts de code. On continue sur l'exemple.
Voila le nouveau Clock.ino
, qui contient le code de l'application
#define VERSION "v9" #include <LiquidCrystal.h>
#include "time.h" #include "Keypad.h"
LiquidCrystal lcd ( 8,9, 4,5,6,7 ); Keypad keypad(0);
long int shift = 0; // etc.
et, comme vous voyez, fait référence à deux fichiers inclus, time.h
et @Keypad.h@.
Le fichier time.h
contient la définition du type time_t
#ifndef TIME_H_INCLUDED #define TIME_H_INCLUDED typedef unsigned long time_t;
#endif
Le fichier Keypad.h
contient la déclaration de la classe, avec les variables membres et les prototypes des fonction membres
// Keypad.h #ifndef KEYPAD_H_INCLUDED #define KEYPAD_H_INCLUDED #include "time.h" class Keypad { public: enum Button { RIGHT, UP, DOWN, LEFT, SELECT, NONE, ERROR }; protected: int m_pin; time_t m_bounce_timeout; Button m_last_button; int m_bounce_delay; public: Keypad(int pin); void setBounceDelay(int delay); Button getButton(); }; #endif
Enfin, la définition des fonctions membres se trouvent dans Keypad.ino
// Keypad.ino #include "Keypad.h" Keypad::Keypad(int pin) : m_pin(pin) , m_bounce_timeout (0) , m_last_button (NONE) , m_bounce_delay (500) {}
void Keypad::setBounceDelay(int delay) { m_bounce_delay = delay; }
Button Keypad::getButton() { // .... }
Commentaires
1. Le mardi 2 juin 2015 à 11:48, par Michel Billaud
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.