Spero che il mio testo sia interessante e utile per qualcuno.
J'espère que mon sujet sera intéressant et utile à quelqu'un.

Il funzionamento · Le fonctionnement
Quando una persona si avvicina a meno di 70 cm, l'anello LED si illumina con un colore casuale (su un totale di sei). Dopo 30 secondi, l'anello LED si spegne.
Quand une personne s'approche à moins de 70 cm, l'anneau de LED s'allume avec une couleur aléatoire (parmi six). Au bout de trente secondes, l'anneau de LED s'éteint.
La mappatura elettrica · Le schéma électrique

Il codice sorgente · Le code source en C++
// ################################
// # MAIN ILLUMINEE LUCIEN & KARINE
// # Guy Magli 04.03.2025
// ################################
// # Conception, cablages
// # mises a jour, contact...
// # www.magli.fr
// # auguste@magli.fr
// ################################
//
// ! ======================== !
// ! Librairies et parametres !
// ! ======================== !
//
#include <"Wire.h">
//
// : Pour l'anneau de leds :
//
// L'anneau est branche sur les connecteurs 5 volts, GND et 7
//
#include <"Adafruit_NeoPixel.h">
#ifdef __AVR__
#include <"avr/power.h">
#endif
#define LED_COUNT 24 // Grand anneau de 24 leds
#define LED_PIN 4 // Connecteur du signal
Adafruit_NeoPixel pixels(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// ! ================== !
// ! VARIABLES GLOBALES !
// ! ================== !
const int iTrig = 7; // Pour les ultrasons
const int iEcho = 8; // Id.
int t, g;
long lMesure = 0;
float fDistance = 1000;
int iCouleur;
int iBrillance = 100;
int iSaut = 1;
// ! ===== !
// ! SETUP !
// ! ===== !
void setup() {
Serial.begin(9600);
pixels.begin();
randomSeed(analogRead(0));
pinMode(iEcho, INPUT);
pinMode(iTrig, OUTPUT);
EteintTourne(0,0,0);
}
// ! ==== !
// ! LOOP !
// ! ==== !
void loop() {
fDistance = 1000.00;
while (fDistance > 70.00) {
digitalWrite(iTrig, LOW);
delayMicroseconds(2);
delay(100);
digitalWrite(iTrig, HIGH);
delayMicroseconds(10);
digitalWrite(iTrig, LOW);
lMesure = pulseIn(iEcho, HIGH);
digitalWrite(iTrig, LOW);
fDistance = lMesure / 68;
delay(100);
}
iCouleur = random(1, 6);
switch (iCouleur) {
case 1: AllumeTourne(11, 83, 69); break; // Vert chaud
case 2: AllumeTourne(225, 0, 0); break; // Rouge feu
case 3: AllumeTourne(0, 0, 255); break; // Bleu profond
case 4: AllumeTourne(125, 102, 8); break; // Jaune orangé
case 5: AllumeTourne(81, 46, 95); break;
case 6: AllumeTourne(125, 125, 125); break;
}
delay(30000);
switch (iCouleur) {
case 1: EteintTourne(11, 83, 69); break;
case 2: EteintTourne(225, 0, 0); break;
case 3: EteintTourne(0, 0, 255); break;
case 4: EteintTourne(125, 102, 8); break;
case 5: EteintTourne(81, 46, 95); break;
case 6: EteintTourne(125, 125, 125); break;
}
}
// ! ========== !
// ! PROCEDURES !
// ! ========== !
void AllumeTourne(int a, int b, int c) {
pixels.clear();
pixels.setBrightness(iBrillance);
for (int iLed = 0; iLed < LED_COUNT; iLed += iSaut) {
pixels.setPixelColor(iLed, pixels.Color(a, b, c));
pixels.show();
delay(50 * iSaut);
}
}
void EteintTourne(int a, int b, int c) {
for (int iLed = 0; iLed < LED_COUNT; iLed++) {
pixels.setPixelColor(iLed, pixels.Color(a, b, c));
pixels.show();
delay(100);
pixels.setPixelColor(iLed, pixels.Color(0, 0, 0));
pixels.show();
delay(100);
}
pixels.clear();
}
Le tappe della fabbricazione · Les étapes de fabrication
auguste@magli.fr
Questa pagina è stata modificata il 16.04.26
È stata pubblicata su
bluesky 05.03.25 · mastodon 05.03.25 · pinterest xx.xx.
Questa pagina è stata modificata il 16.04.26
È stata pubblicata su
bluesky 05.03.25 · mastodon 05.03.25 · pinterest xx.xx.