Me revoilà aujourd’hui avec une création totalement inutile, d’où ce titre « The Unnecessary Bubble ».
Le matériel nécessaire: Une carte arduino, 3 résistances 150 ohms, 1 led RGB, 1 capteur de proximité SHARP G2D120 ou équivalent, une balle de ping-pong.
La led RGB est branchée sur la masse (GND), et sur les ports 9, 10, 11 de l’arduino au travers des résistances de 150 ohms. La balle de ping-pong percée d’un trou de 5mm sert de diffuseur à la led.
Le capteur SHARP est branché sur l’entrée analogique 0, VCC (5v) et la masse (GND).
Sur le principe l’arduino change de couleur toutes les 100 ms ( ce qui permet de faire varier les tons de couleurs assez rapidement). Si vous approchez un objet ou votre main de la boite, le capteur évalue la distance, plus celle-ci et faible et plus le cycle des couleurs est rapide. Si vous vous éloignez, le cycle de couleur reprend sa vitesse normale.
[youtube:http://fr.youtube.com/watch?v=HkiBnyzf6eY]Voilà le code source:
[code]
#define PIN_RED 10
#define PIN_GREEN 9
#define PIN_BLUE 11
#define PIN_SHARP 0
#define WAIT 100
int waiting = WAIT;
void color(int r, int g, int b)
{
analogWrite(PIN_RED, r);
analogWrite(PIN_GREEN, g);
analogWrite(PIN_BLUE, b);
}
void setup()
{
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
pinMode(PIN_BLUE, OUTPUT);
pinMode(PIN_SHARP,INPUT);
}
void loop()
{
for (int i = 0; i < 256; i++){
color(255, i, 0);
set_delay();
delay(waiting);
}
for (int i = 0; i < 256; i++){
color(255 – i, 255, 0);
set_delay();
delay(waiting);
}
for (int i = 0; i < 256; i++){
color(0, 255, i);
set_delay();
delay(waiting);
}
for (int i = 0; i < 256; i++){
color(0, 255 – i, 255);
set_delay();
delay(waiting);
}
for (int i = 0; i < 256; i++){
color(i, 0, 255);
set_delay();
delay(waiting);
}
for (int i = 0; i < 256; i++){
color(255, 0, 255 – i);
set_delay();
delay(waiting);
}
}
void set_delay()
{
int analogValue1 = analogRead(PIN_SHARP);
if ( analogValue1 < 100 )
{
waiting = WAIT;
}
else
{
waiting = WAIT / (analogValue1 / 10);
}
}
[/code]