Bonjour à tous, je suis tout nouveau connaisseur de l'Arduino étant étudiant dans le domaine de la création numérique.
Je me suis inscris sur ce forum dans l'objectif de réaliser un montage simple pour illustrer une fonction que j'aimerais appliquer à mon projet de luminaire.
Il s'agira d'un luminaire similaire à une fleur, qui lorsque l'on viendra retirer les pétales changera la couleur de son ampoule.
N'ayant pas encore à disposition de carte arduino, ni breadboard, ni composants nécessaires à ce montage, je vous explique dans un premier temps l'idée générale de ce petit montage :
La réalisation sur breadboard du montage depuis la carte arduino à la LED RGB. Avec comme particularité l'utilisation de 3 fils qui simuleront les pétales que l'on retire (sorte de bouton poussoir).
Pour la partie code j'illustrerai la fonction avec seulement 3 couleurs ... L'objectif étant d'assigner à chaque "pétale" que l'on retire un code ordonnant à la led de diffuser une couleur spécifique.
Je compte réaliser un montage illustratif sur fritzing plus tard le temps de trouver comment faire.
Merci à vous de partager vos connaissances sur le sujet et par dessus tout de votre temps pour venir en aide aux novices dont je fais partie.
Donc voici dans un premier temps ce que j'envisage être un montage fonctionnel. Les fils noir étant représentatif des pétales (qui fonctionnerais comme un bouton poussoir (si branché = 1 si débranché = 0). Est ce que cela vous semble fonctionnel ?
Pour ce qui est du code je ne sais pas où aller ...
Sur une breadboard, les trous d’alimentation sont reliés longitudinalement, ce qui fait que les trois extrémités des fils rouge, vert, bleu sont reliés et les trois extrémités des fils noirs sont reliés. De plus les fils rvb et noirs ne sont pas reliés.
Je ne pense pas que c'est ce que tu voulais faire.
Pour ce montage illustratif il s'agit d'une LED RGB standard à quatre branches (pour mon projet ce sera une LED à culot E27 mais ce sera le sujet d'un autre post je pense puisque plus complexe à réaliser ...).
Effectivement j'avais oublié de brancher la LED sur mon schéma, cela est désormais corrigé.
Merci pour le lien du site et pour ton aide.
Je vais tenter d'écrire le code à partir de cet exemple :
// --- Déclaration des constantes utiles ---
const int R=1;
const int V=1;
const int B=1;
// --- Déclaration des constantes des broches E/S numériques ---
const int ledRouge=11;
const int ledVert=10;
const int ledBleu=9;
// --- Fonctions
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() {
// ------- Broches en sorties numériques -------
pinMode (ledVert,OUTPUT); // Broche ledVert configurée en sortie
pinMode (ledRouge,OUTPUT); // Broche ledRouge configurée en sortie
pinMode (ledBleu,OUTPUT); // Broche ledBleu configurée en sortie
// ------- Broches en entrées numériques -------
// ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques -------
// ------- Initialisation des variables utilisées -------
// ------- Codes d'initialisation utile -------
} // fin de la fonction setup()
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop(){
//--- attention - avec une LED RGB anode commune : la LED s'allume sur niveau BAS !
//---- vert ---
digitalWrite(ledVert,LOW); // allume la couleur voulue
delay(1000); // pause
digitalWrite(ledVert,HIGH); // éteint la couleur voulue
delay(1000); // pause
//---- rouge ---
digitalWrite(ledRouge,LOW); // allume la couleur voulue
delay(1000); // pause
digitalWrite(ledRouge,HIGH); // éteint la couleur voulue
delay(1000); // pause
//---- bleu ---
digitalWrite(ledBleu,LOW); // allume la couleur voulue
delay(1000); // pause
digitalWrite(ledBleu,HIGH); // éteint la couleur voulue
delay(1000); // pause
//----- test des couleurs au format RVB ----
//---- violet ---
ledRVB(R,0,B); // allume R ouge et Bleu => violet
delay(1000); // pause
ledRVB(0,0,0); // éteint toutes les couleurs
delay(1000); // pause
//---- jaune ---
ledRVB(R,V,0); // allume R ouge et Vert => jaune
delay(1000); // pause
ledRVB(0,0,0); // éteint toutes les couleurs
delay(1000); // pause
//---- bleu clair ---
ledRVB(0,V,B); // allume Vert et Bleu => bleu clair
delay(1000); // pause
ledRVB(0,0,0); // éteint toutes les couleurs
delay(1000); // pause
//---- blanc ---
ledRVB(R,V,B); // allume Rouge Vert et Bleu => blanc
delay(1000); // pause
ledRVB(0,0,0); // éteint toutes les couleurs
delay(1000); // pause
//----- variation de couleur
// variation de rouge
for (int i=0; i<=255; i++) { // défile valeur 0 à 255
ledRVBpwm(i,0,0); // génère impulsion largeur voulue pour la couleur
delay(10); //pause
}
//ledRVB(0,0,0); // éteint toutes les couleurs
// variation de bleu - rouge dégressif
for (int i=0; i<=255; i++) { // défile valeur 0 à 255
ledRVBpwm(255-i,0,i); // génère impulsion largeur voulue pour la couleur
delay(10); //pause
}
//ledRVB(0,0,0); // éteint toutes les couleurs
// variation de vert - bleu dégressif
for (int i=0; i<=255; i++) { // défile valeur 0 à 255
ledRVBpwm(0,i,255-i); // génère impulsion largeur voulue pour la couleur
delay(10); //pause
}
// variation de jaune
for (int i=0; i<=255; i++) { // défile valeur 0 à 255
ledRVBpwm(i,255,0); // génère impulsion largeur voulue pour la couleur
delay(10); //pause
}
//etc...
ledRVB(0,0,0); // éteint toutes les couleurs
delay(1000);
//while(1); // stop loop
} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************
// ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS ////////////////////
// ////////////////////////// AUTRES FONCTIONS DU PROGRAMME ////////////////////
//---- fonction pour combiner couleurs ON/OFF ----
void ledRVB(int Rouge, int Vert, int Bleu) {
//--- attention - avec une LED RGB anode commune : la LED s'allume sur niveau BAS !
if (Rouge==1) digitalWrite(ledRouge,LOW); // allume couleur
if (Rouge==0) digitalWrite(ledRouge,HIGH); // éteint couleur
if (Vert==1) digitalWrite(ledVert,LOW); // allume couleur
if (Vert==0) digitalWrite(ledVert,HIGH); // éteint couleur
if (Bleu==1) digitalWrite(ledBleu,LOW); // allume couleur
if (Bleu==0) digitalWrite(ledBleu,HIGH); // éteint couleur
}
//---- fonction pour variation progressive des couleurs ----
void ledRVBpwm(int pwmRouge, int pwmVert, int pwmBleu) { // reçoit valeur 0-255 par couleur
//--- attention - avec une LED RGB anode commune : la LED s'allume sur niveau BAS !
analogWrite(ledRouge, 255-pwmRouge); // impulsion largeur voulue sur la broche 0 = 0% et 255 = 100% haut
analogWrite(ledVert, 255-pwmVert); // impulsion largeur voulue sur la broche 0 = 0% et 255 = 100% haut
analogWrite(ledBleu, 255-pwmBleu); // impulsion largeur voulue sur la broche 0 = 0% et 255 = 100% haut
}
Bon j'ai recopier tout bêtement le code, j'ai l'impression que sans arduino je ne pourrais pas me rendre compte de ce que j'ai à faire ...
C'est compliqué ! Je reviendrais dessus ce code pour le comprendre selon vos remarques.
Merci Kamill de me le faire remarquer, voici un second schéma qui je l'espère te semble juste.
Pour ce montage illustratif il s'agit d'une LED RGB standard à quatre branches (pour mon projet ce sera une LED à culot E27 mais ce sera le sujet d'un autre post je pense puisque plus complexe à réaliser ...).
bonsoir
alors ça ne sert à rien de partir sur du code qui sera inutilisable