Bibliothèque: LedTools v0.01

Description
LedTools vise a simplifier la commande de Led (diode électroluminescente) à partir d'Arduino.
Son principal avantage est d'offrir la classe MonoLed qui permet de faire clignoter une LED à interval régulier sans blocage logiciel :-)

Dès que j'en aurais l'occasion (ou suggestion), je complèterai cette librairie.
Dans un premier temps, j'envisage l'ajout d'une classe RgbLed.

Téléchargement

Fichier: LedTools v001.zip
Cette archive contient le répertoire LedTools qu'il suffit de placer dans le répertoire librairies d'Arduino IDE (dans /usr/share/arduino/librairies)

Exemple d'utilisation
Le schéma électronique et fonctionnement de cet exemple sont décris dans l'article "Led Class - Part 3 | PushButton Class - Part 2" alors que les classes MonoLed et PushButton étaient encore en cours d'écriture.

Source de l'exemple: ArduinoCar_Test_BtnInterface_Lib.pde

Note importante:
Cet exemple utilise également la librairie ButtonTools v0.01 publiée dans  un autre article.


// Inclusion de mon fichier "ButtonTools.h" pour faciliter la capture des états des boutons.
// Provoque aussi l'erreur "expected unqualified-id before ‘double’" à cause de l'inclusion
//   de "WConstants.h" nécessaire à la définition dy type "boolean".
#include <ButtonTools.h>
#include <LedTools.h>

// Evite l'erreur "expected unqualified-id before ‘double’"
// voir article http://forums.adafruit.com/viewtopic.php?f=25&t=19511 on AdaFruit Forum
#undef round 

// ==========================================================
//     MAIN PROGRAM
// ==========================================================

int pinStart = 7; // Start/Stop - Brun
int pinDebug = 8; // Debug Switch - Orange

int pinLed = 9;    // State Led

PushButton btnStart( pinStart );
PushButton btnDebug( pinDebug );
MonoLed ledYellow( pinLed, LED_FIXED );

boolean debugState = false; // Debug Mode activated
boolean startState = false; // Start/Stop mode

void setup() {
  Serial.begin( 9600 );
    
  ledYellow.SetBlinkInterval( 300 ); // Change the default blink interval 
}


void loop(){
  // Update all the button statistics
  btnStart.Update(); 
  btnDebug.Update();

  // Update the led
  ledYellow.Update();  
   
  // Wait the the user press the button "btn" to send the 
  // resume of operation over the serial port
  boolean bChanged = false;
  
  // When the btn is pressed (read once only)
  if( btnStart.HasPressed() ) {
    startState = !(startState);
    bChanged = true;
  }  
  
  if( btnDebug.HasPressedMany() ){
    debugState = !(debugState);
    bChanged = true;
  }
  
  // Afficher un changement d'état
  if( bChanged ){
    Serial.println( " -----------------------------" );
    if( startState ) 
      Serial.println( "Started [X]" );
    else
      Serial.println( "Started [ ]" );
    
    
    if( debugState ) 
      Serial.println( "Debug [X]" );
    else
      Serial.println( "Debug [ ]" );
      
    
    bChanged = false;
  }
  
  // Make the led ON when startState = true
  ledYellow.Turn( startState );
  
  // Change display type to LED_BLINK when debugState = true
  if( debugState )
    ledYellow.ChangeDisplayType(LED_BLINK);
  else
    ledYellow.ChangeDisplayType(LED_FIXED); 
}

Aucun commentaire