Problème : intensité lumineuse de LEDs à baisser sur Arduino Uno

Bonsoir,
J'ai un problème, ou plutôt j'aimerai savoir comment procéder pour que les LEDs sous forme de stick, directement reliés à une Arduino Uno, éclairent avec une intensité plus basse ( ~ 3/4 de l'intensité de base) étant donné que j'ai un programme simple :
Si le capteur de CO2 relié à la carte détecte un certain taux de CO2 suivant une échelle adaptée, les LEDs sont en vert lorsque le taux est bas, orange, puis rouge lorsque le seuil est haut.
Or, j'aimerai réduire l'intensité lumineuse des LEDs avec pour seul outil le logiciel Arduino (impossible de placer des résistances ou autre étant donné que c'est dans le cadre d'un projet au lycée).
Ci-jointes, le programme et les captures d'écran du programme...

Merci d'avance.

#include <Wire.h>
#include <Adafruit_SGP30.h>
#include <Adafruit_NeoPixel.h>

#define NP_LED_COUNT_4 30

Adafruit_SGP30 sgp30;
Adafruit_NeoPixel Neopixel_4(NP_LED_COUNT_4, 4, NEO_GRB + NEO_KHZ800);

void serial_setupConnection(int baudrate) {
  Serial.begin(baudrate);
  while (!Serial) {
    Serial.println("En attente de l'ouverture du port série...");
    delay(1000);
  }
  Serial.println("Port série activé. Baudrate: " + String(baudrate));
  delay(50);
}

uint16_t sgp30_readCO2() {
  if (!sgp30.IAQmeasure()) {
    Serial.println("Measurement failed");
    return 0;
  }
  else return sgp30.eCO2;
}

void neopixel_showAllLed(Adafruit_NeoPixel *neoPx, uint8_t ledCount, uint8_t r, uint8_t g, uint8_t b) {
  for (int i = 0; i < ledCount; i++) {
    neoPx->setPixelColor(i, neoPx->Color(r, g, b));
  }
  neoPx->show();
}


void setup() {
  serial_setupConnection(9600);
  while (!sgp30.begin()) {
    Serial.println("En attente du capteur SGP30...");
    delay(1000);
  }
  Neopixel_4.begin();
}

void loop() {
  if (sgp30_readCO2() < 800) {
    neopixel_showAllLed (&Neopixel_4, NP_LED_COUNT_4, 51, 204, 0);
  } else {
    if (sgp30_readCO2() <= 1200) {
      neopixel_showAllLed(&Neopixel_4, NP_LED_COUNT_4, 255, 153, 0);
    } else {
      neopixel_showAllLed(&Neopixel_4, NP_LED_COUNT_4, 255, 0, 0);
    }
  }
}

(post deleted by author)

Pour allumer une led avec une intensité variable, on utilise en général la fonction analogWrite sur des broches ayant le PWM.

Bonsoir
là il s'agit de WS2812 avec la lib adafruit neopixel
voir plutôt du coté de :

strip.setBrightness(x); // x=0->255
1 Like

Désolé, je ne sais pas lire du code quand il est présenté comme il est. Et la phrase

m'a induit en erreur.

Merci, mais il s'agit de WS2813 pas WS2812.
Je ne sais pas si cela change qqch, mais je vais essayer d'appliquer cette commande,
Merci beaucoup et bonne journée !

bonjour
il ne devrait pas y avoir de soucis

Excusez-moi mais, cette commande doit s'intégrer à un endroit spécifique du programme (début, fin) ou pas ?

Merci

Comme c'est une commande un peu "generale" , l'habitude est de la mettre dans le setup

void setup() {
  strip.setBrightness(5);
  strip.begin();
}

Un message d'erreur apparaît : 'strip' was not declared in this scope.
Il faut peut-être que j'installe une bibliothèque supplémentaire ?
Vraiment désolé du dérangement, mais vous m'aidez grandement.

normal chez toi strip c'est Neopixel_4
donc setup doit etre

void setup() {
Neopixel_4.setBrightness(5); // 0-->255
Neopixel_4.begin();
}

ça marche !!
Merci beaucoup de ton aide, ça m'a sauvé !

Bonne continuation.