Skip to main content

Programme arduino

Le programme combine deux parties : la gestion de la bande LED (et interactions avec les potentiomètres), et la simulation du modèle physique.  Les deux sont mélangés tout au long du code (téléchargeable ici : FastLED_SEP_pot_biais.ino), mais je vais les séparer ici pour simplifier.simplifier, et illustrer d'autres exemples d'utilisation du circuit.

Gestion des LEDs et des potentiomètres

Pour illustrer le fonctionnement de base, on va écrire un programme qui va allumer toutes les LEDs de la même couleur. Celle-ci est déterminée par les 3 potentiomètres (gauche -> rouge, centre -> vert, droite -> bleu).

#include <FastLED.h>

// nombre de LEDs
#define NUM_LEDS 144
// pin sur lequel est connecté le fil data
#define DATA_PIN 3

// intensité des LEDs
#define BRIGHTNESS 20


// pin pour le potentiomètre de gauche
const int PinG = A0;
// valeur du potentiomètre
int potPinG ;

// pin pour le potentiomètre central
const int PinC = A2;
// valeur du potentiomètre
int potPinC ;

// pin pour le potentiomètre de droit
const int PinD = A4;
// valeur du potentiomètre
int potPinD ;

// tableau des couleurs de chaque LED
CRGB leds[NUM_LEDS];

// initialisation
void setup() {
  
  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);

  // limitation de la puissance, via voltage max (5V) et courant max (1A)
  FastLED.setMaxPowerInVoltsAndMilliamps(5,1000); 

  // ajuster la luminosité
  FastLED.setBrightness(BRIGHTNESS);
}

void loop() {

  // mesure des valeurs des potentiomètres
  potPinG = analogRead(PinG) ;
  potPinC = analogRead(PinC) ;
  potPinD = analogRead(PinD) ;

  // Conversion en valeurs entre 0 et 255
  int valR = map(potPinG, 0, 1023, 0, 255) ;
  int valG = map(potPinC, 0, 1023, 0, 255) ;
  int valB = map(potPinD, 0, 1023, 0, 255) ;
  
  // allumer les LEDs de la couleur R, G, B
  for(int i=0; i<NUM_LEDS; i++)
  {
    leds[i] = CRGB(valR, valG, valB);
  }
  
  // allumer les LEDs
  FastLED.show();
  
  // attendre 100ms
  delay(100) ;
  
}


Simulation du modèle