[Résolu] Librairie maison

Bonjour,

numero_744:
j'ai remplacé les "unit8_t" par "int" mais ça fait fuste disparaître les "unit8_t was not declared in this scope".

Il faut inclure <stdint.h> pour avoir ces types "dure" :wink:
Remplacer un uint8_t (8 bits non signé) par un int (16 bits signé) quand ce n'est pas nécéssaire est un non-sens car cela ralenti ton programme pour rien et le rend consommateur de ram inutilement :wink:

numero_744:
Il ne colorie pas les appellations de "keywords.txt".

Il faut que le fichier keywords.txt comporte des fins de lignes UNIX (soit \n) et non "windows" (soit \r\n).
Avec notepad++ il suffit de faire édition -> convertir les fin de lignes -> format UNIX.

numero_744:
Il me dit que HIGH, LOW et mes constantes ne sont pas définies.

Essaye :

#include "Arduino.h"

->

#if defined(ARDUINO) && ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif

--

Au sujet de ton code :

  1. Tes fonctions write(), clear(), draw() ne peuvent pas compiler, elle ont besoin de variables qui n'existe pas dans leur contexte.
    Tu doit mettre les variables hg, hd, m, ... en tant que membre de ta classe et les initialiser dans le constructeur.

  2. Les int -> uint8_t + #include <stdint.h>

  3. Dans la fonction draw() :

if((eh) == 1) {
    digitalWrite(h, HIGH);
  }
  if((eh) == 0) {
    digitalWrite(h, LOW);
  }

Par définition : HIGH = 1, LOW = 0, donc il suffit d'écrire :

digitalWrite(h, eh);
  1. Dans clear() et write(), pourquoi réinventer la roue, ta fonction draw() existe il suffit de l'appeler :wink:
void numLED::clear() {
  draw(LOW, LOW, LOW, LOW, LOW, LOW, LOW);
}
  1. Dans write() :
    Il manque les break; à la fin de chaque case !

-> J'ai fait un zip avec toute les modif :wink:

numLED.zip (1.06 KB)