LE VIDE-POCHE

IL PORTAOGGETTI


   
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 (sur un total de six). Au bout de trente secondes, l'anneau de LED s'éteint.
   
La mappatura elettrica Le schéma électrique
   
   
Il codice sorgente in C++ 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 !
// ! ======================== !
//
// : ------------------------------------------ :
// : Pour la communication avec un peripherique :
// : ------------------------------------------ :
//
#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 // C'est un 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;
//
// : --------------------- :
// : Pour l'anneau de leds :
// : --------------------- :
//
int iCouleur;
int iBrillance = 100;
int iSaut = 1;
//
// ! ===== !
// ! SETUP !
// ! ===== !
//
void setup()
	{
		Serial.begin(9600);
		Serial.println(" ");
		Serial.println(": -------------- :");
		Serial.println(": MAIN ILLUMINEE :");
		Serial.println(": -------------- :");
		Serial.println(" ");
		pixels.begin();
		randomSeed(analogRead(0)); // Pour le choix aleatoire de la couleur d'affichage
		pinMode( iEcho, INPUT); // Recevoir des ultrasons
		pinMode( iTrig, OUTPUT); // Envoyer des ultrasons
		EteintTourne(0,0,0);
	}
//
// ! ==== !
// ! LOOP !
// ! ==== !
//
void loop()
{
	//
	// : --------------------------- :
	// : Si un mouvement est detecte :
	// : --------------------------- :
	//
	// On boucle tant que rien de proche ne se presente.
	//
	fDistance = 1000.00;
	while (fDistance > 70.00)
		{
			Serial.println("Attente d'un ultrason.");
			// Initialiser le capteur
			digitalWrite(iTrig, LOW);
			delayMicroseconds(2);
			delay(100);
			// Envoi d'un ultrason
			digitalWrite(iTrig, HIGH);
			delayMicroseconds(10);
			digitalWrite(iTrig, LOW);
			// Reception
			lMesure = pulseIn(iEcho, HIGH);
			digitalWrite(iTrig, LOW);
			fDistance = lMesure / 68;
			Serial.print("Distance : ");
			Serial.print(fDistance);
			Serial.println(" cm.");
			Delay(100);
		}
//
// SI LA DISTANCE EST INFERIEURE A 100 CM
//
	Serial.println("Quelqu'un s'est approche. On allume.");
	iCouleur = random(1, 6);
	switch (iCouleur)
	{
		case 1: AllumeTourne(11, 83, 69); break; // Vert modifie 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;
	}
	//
	// On attend trente secondes
	//
	delay(30000);
	//
	// On eteint
	//
	Serial.println("Le temps d'affichage est passe. On eteint");
	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);
	// Pour tout le tour
	for (int iLed = 0; iLed < LED_COUNT; iLed=iLed + iSaut) 
		{ 
			// On allume 
			pixels.setPixelColor(iLed, pixels.Color(a, b, c)); 
			pixels.show(); 
			delay(50 * iSaut); 
			// On eteint 
			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++)
	{
		// On allume
		pixels.setPixelColor(iLed, pixels.Color(a, b, c));
		pixels.show();
		delay(100);
		// On eteint
		pixels.setPixelColor(iLed, pixels.Color(0, 0, 0));
		pixels.show();
		delay(100);
	}
pixels.clear();
}

													
   
Le tappe della fabbricazione Le tappe della fabbricazione
   
   
   
   
   
   
Questa pagina è stata modificata il 05.03.25.
auguste@magli.fr
Cette page a été modifiée le 05.03.25.
auguste@magli.fr