Première version du code du minuteur et schéma d'implantation.

This commit is contained in:
2026-05-08 00:37:26 +02:00
parent da3fa03aff
commit 71753703e8
9 changed files with 825 additions and 0 deletions

115
minuteur/ledRGB.h Normal file
View File

@@ -0,0 +1,115 @@
/*-------------------------------------------------------------------
Project: InsoL@b
Author : user@B0 mail@nowhere.void
File : led_RGB.h 2026-04-23
This work is copyrighted under CERN Open Hardware Licence Version 2.
----------------------------------------------------------------------
Aqua #00FFFF 0% 100% 100% 180° 100% 50% 100% 100% 11 (high cyan); cyan
Teal #008080 0% 50% 50% 180° 100% 25% 100% 50% 03 (low cyan)
Blue #0000FF 0% 0% 100% 240° 100% 50% 100% 100% 09 (high blue)
Navy #000080 0% 0% 50% 240° 100% 25% 100% 50% 01 (low blue)
Fuchsia #FF00FF 100% 0% 100% 300° 100% 50% 100% 100% 13 (high magenta); magenta
Purple #800080 50% 0% 50% 300° 100% 25% 100% 50% 05 (low magenta)
---------------------------------------------------------------------*/
#ifndef _INSOLAB_LEDRGB_H_
#define _INSOLAB_LEDRGB_H_
#include <SPI.h>
#include <Adafruit_NeoPixel.h>
#define PIN 16 // RGB LED (WS2812) clone of Waveshare rp2040-zero.
#define NUMPIXELS 1
Adafruit_NeoPixel pixels(
NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
enum {NONE, RED, YELLOW, ORANGE, GREEN, BLUE, PINK, FUCHS, BLANK};
int ledColor = NONE;
int ledMax=2;
void ledInit() {
pixels.begin();
pixels.setPixelColor(0, pixels.Color(0, 0, 0));
pixels.show();
delay(100);
}
void ledRGB(int rgb) {
switch (rgb) {
case RED: pixels.setPixelColor(0, pixels.Color(ledMax, 0, 0));
break;
case YELLOW: pixels.setPixelColor(0, pixels.Color(ledMax, ledMax, 0));
break;
case ORANGE: pixels.setPixelColor(0, pixels.Color(ledMax, 1, 0));
break;
case GREEN: pixels.setPixelColor(0, pixels.Color(0, ledMax, 0));
break;
case BLUE: pixels.setPixelColor(0, pixels.Color(0, ledMax, ledMax)); // AQUA
break;
case PINK: pixels.setPixelColor(0, pixels.Color(1,0,3)); // (1,0,2));
break; // pink color (255, 192, 203) deep pink (255, 20, 147)
case FUCHS: pixels.setPixelColor(0, pixels.Color(ledMax,0,ledMax)); // FUCHSIA
break;
case BLANK: pixels.setPixelColor(0, pixels.Color(1, 1, 1));
break;
case NONE: pixels.setPixelColor(0, pixels.Color(0, 0, 0));
break;
}
pixels.show(); delay(100);
}
void ledScale(int rgb, int first, int aim, int inc, int period) {
int i = first;
do {
i = i + inc;
switch (rgb) {
case RED:
pixels.setPixelColor(0, pixels.Color(i, 0, 0));
break;
case GREEN:
pixels.setPixelColor(0, pixels.Color(0, i, 0));
break;
case BLUE:
pixels.setPixelColor(0, pixels.Color(0, 0, i));
break;
case BLANK:
pixels.setPixelColor(0, pixels.Color(i, i, i));
break;
}
pixels.show(); delay(period);
} while (i != aim );
}
uint16_t hue = 0; uint8_t sat = 0, val = 0;
int32_t couleur = 0;
void ledTest() {
int period=12;
switch (ledColor) {
case NONE:
for (val = 10; val < 50; val += 10) {
for (sat = 10; sat < 50; sat += 10) {
couleur = pixels.ColorHSV(765, sat, val);
pixels.setPixelColor(0, couleur);
pixels.show();
delay(6);
}
}
break;
case RED:
ledScale(RED, 1, 200, 1, period);
ledScale(RED, 200, 1, -1, period);
break;
case GREEN:
ledScale(GREEN, 1, 200, 1, period);
ledScale(GREEN, 200, 1, -1, period);
break;
case BLUE:
ledScale(BLUE, 1, 200, 1, period);
ledScale(BLUE, 200, 1, -1, period);
break;
default:
break;
}
ledColor++;
if (ledColor == 4) {
ledColor = NONE;
}
delay(1000);
}
#endif