Bonjour, je fais clignoté une led RGB sur un rythme predefini, qui est un message en morse.
J'aimerais avoir une couleur differente a chaque debut de boucle.
Mais ce que j'arrive a avoir jusqu'a maintenant c'est une couleur aleatoire differente a chaque clignotement, donc une couleur differente a chaque lettre.
est il possible de fixer les valeurs aleatoire tiré en debut de boucle et de les assigné a chaque clignotement de la boucle ?
Bonjour elmirouf
As-tu un lien sur cette LED RGB?
Tu veux dire à chaque début de message?
Oui. mais tu risques d'avoir plusieurs clignotements avec la même couleur.
Si tu as déjà un début de programme, mets le en ligne.
Cordialement
jpbbricole
Bonjour jpb,
c'est a dire un lien ?
oui en debut de chaque message donc chaque boucle
C'est l'objectif, avoir une couleur differente a chaque fois que le message recommence.
le code est giganteque, 300 ligne, je peux le poster ici ?
par contre j'ai ça :
Tinkercad | From mind to design in minutes
Oui, tu peux le poster ici. N'oublie pas d'utiliser les balises de code !
les balises de code ?
Bonjour,
Tout est expliqué ici
Bonsoir elmirouf
Tu répètes
randomRouge = random(255);
randomVert = random(255);
randomBleu = random (255);
avant chaque lettre, c'est normal que ça change pour chacune d'entre elles.
Il ne faut laisser ça qu'au début de loop():
void loop()
{
randomRouge = random(255);
randomVert = random(255);
randomBleu = random (255);
et supprimer toutes les autre occurrences, ainsi tu aura la même séquence RGB tout au long du message.
Il y a, encore, beaucoup de simplifications à faire, je te montrerai ça.
A+
Cordialement
jpbbricole
Bonsoir elmirouf
Pour faire suite à mon message du post #7,ton programme est fait de multiples répétitions ce qui rend le programme très "long" (307 lignes) et, surtout, difficile à gérer, un simple exemple, changer le temps d'un point ou ce lui du trait (un trait = 3 points)
Tu répètes:
// pause
digitalWrite( ledRouge, LOW );
digitalWrite( ledVert, LOW );
digitalWrite( ledBleu, LOW );
delay(300);
et
analogWrite ( ledRouge, randomRouge );
analogWrite ( ledVert, randomVert );
analogWrite ( ledBleu, randomBleu );
delay(nnn);
à chaque point ou trait.
Quand on répète des choses identiques à un ou 2 paramètres prêt, on crée une fonction que l'on appelle à chaque besoin, quitte à lui transmettre un paramètre comme 300 ou 900 pour le temps.
Je te mets ton programme ainsi "réorganisé" tu pourras voire l'usage des fonctions et aussi des variables comme celles du temps des points et des traits.
Le programme:
const int ledRouge = 9;
const int ledVert = 10;
const int ledBleu = 11;
int randomRouge;
int randomVert;
int randomBleu;
const unsigned long millisPoint = 300;
const unsigned long millisTrait = millisPoint * 3;
void setup()
{
pinMode( ledRouge, OUTPUT );
pinMode( ledVert, OUTPUT );
pinMode( ledBleu, OUTPUT );
// Tout éteindre
pointTraitEteindre(10);
}
void loop()
{
randomRouge = random(255);
randomVert = random(255);
randomBleu = random (255);
// T -
morseTrait();
morsePauseInterLettres();
// A .-
morsePoint();
morseTrait();
morsePauseInterLettres();
// K -.-
morseTrait();
morsePoint();
morseTrait();
morsePauseInterLettres();
// E .
morsePoint();
morsePauseInterLettres();
// C -.-.
morseTrait();
morsePoint();
morseTrait();
morsePoint();
morsePauseInterLettres();
// A .-
morsePoint();
morseTrait();
morsePauseInterLettres();
// I ..
morsePoint();
morsePoint();
morsePauseInterLettres();
// R .-.
morsePoint();
morseTrait();
morsePoint();
morsePauseInterLettres();
// E .
morsePoint();
morsePauseInterLettres();
morsePauseInterMot();
}
void morsePoint()
{
pointTraitAllumer(millisPoint);
pointTraitEteindre(millisPoint);
}
void morseTrait()
{
pointTraitAllumer(millisTrait);
pointTraitEteindre(millisPoint);
}
void morsePauseInterLettres()
{
delay(3 * millisPoint);
}
void morsePauseInterMot()
{
delay(7 * millisPoint);
}
void pointTraitAllumer(unsigned long millisPause)
{
analogWrite ( ledRouge, randomRouge );
analogWrite ( ledVert, randomVert );
analogWrite ( ledBleu, randomBleu );
delay(millisPause);
}
void pointTraitEteindre(unsigned long millisPause)
{
digitalWrite( ledRouge, LOW );
digitalWrite( ledVert, LOW );
digitalWrite( ledBleu, LOW );
delay(millisPause);
}
On peut encore simplifier, mais c'est déjà un bon début.
Ton programme n'a "plus que" 107 lignes.
A+
Cordialement
jpbbricole
WAHOU. merci beaucoup.
ca me parait tres compliqué du premier abord.
je regarde tt ça demain matin a tete reposé
merci encore
Re-bonjour, je reviens pour ce programme.
Je n'arrive pas a l'upload dans l'arduino. je ne comprends pas.
j'ai ce message d'erreur, ca vous parle ?
avrdude: Version 6.3-20190619
CoFailed uploading: uploading error: exit status 1
Cordialement Sylvain
Bonjour elmirouf
Quel Arduino as-tu?
Je ne trouve pas de référence de CoFailed, mets le message complet.
Regardes du côté de exit status 1
Cordialement
jpbbricole
Quel OS?
Quel version de l'IDE?
Active le compte-rendu détaillé dans les préférences. Et recopie le contenu de la fenêtre dans ton message.
Bonjour, la carte est une ELEGOO UNO R3.
Le PC est sous W11 et le logiciel IDE est en 2.0.0-rc9.1
Voila le compte rendu. Le contenu a changé par rapport a hier.
Using board 'uno' from platform in folder: C:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5
Using core 'arduino' from platform in folder: C:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5
Detecting libraries used...
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\sketch\\sketch_rgb take caire.ino.cpp" -o nul
Generating function prototypes...
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\sketch\\sketch_rgb take caire.ino.cpp" -o "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\builtin\\tools\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compilation du croquis...
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\cores\\arduino" "-IC:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\hardware\\avr\\1.8.5\\variants\\standard" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\sketch\\sketch_rgb take caire.ino.cpp" -o "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\sketch\\sketch_rgb take caire.ino.cpp.o"
Compiling libraries...
Compiling core...
Using precompiled core: C:\Users\Mirouf\AppData\Local\Temp\arduino-core-cache\core_arduino_avr_uno_490f73ac3cc52e4058e3e946cba0ddc9.a
Linking everything together...
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.elf" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000\\sketch\\sketch_rgb take caire.ino.cpp.o" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/..\\arduino-core-cache\\core_arduino_avr_uno_490f73ac3cc52e4058e3e946cba0ddc9.a" "-LC:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000" -lm
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.elf" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.eep"
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.elf" "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.hex"
"C:\\Users\\Mirouf\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino7/bin/avr-size" -A "C:\\Users\\Mirouf\\AppData\\Local\\Temp\\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.elf"
Le croquis utilise 2086 octets (6%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 19 octets (0%) de mémoire dynamique, ce qui laisse 2029 octets pour les variables locales. Le maximum est de 2048 octets.
"C:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -carduino "-PCOM3" -b115200 -D "-Uflash:w:C:\Users\Mirouf\AppData\Local\Temp\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.hex:i"
avrdude: Version 6.3-20190619
Failed uploading: uploading error: exit status 1Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "C:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"
Using Port : COM3
Using Programmer : arduino
Overriding Baud Rate : 115200
avrdude: ser_open(): can't open device "\\.\COM3": Acc�s refus�.
avrdude done. Thank you.
Bonjour elmirouf
N'aurais tu pas une autre session de l'IDE Arduino qui est, aussi, connecté sur ce port?
Ou un autre utilisateur actif de ce port?
Autrement, vérifies dans le gestionnaire de périphériques (Paramètres, rechercher gestionnaire de périphériques), si ton COM3 est OK.
Cordialement
jpbbricole
Au-delà du fait que le port COM n'est peut-être pas le bon, je vois aussi un nom de projet avec des espaces (sketch_rgb take caire.ino). Je suggère de remplacer les espaces par des _ ce qui pourrait éviter des problèmes.
Tel qu'elle est construite, je ne suis pas certain que cette commande soit bien interprétée. Et je pense que avrdude doit voir un nom de fichier tronqué
"C:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\Mirouf\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -carduino "-PCOM3" -b115200 -D "-Uflash:w:C:\Users\Mirouf\AppData\Local\Temp\arduino-sketch-43A0259800D8490F6FECA7DF71EFE000/sketch_rgb take caire.ino.hex:i"
Bonjour, de retour de vacances je test la solution du nom fichier contenant des espaces.
Et en remplaçant les espaces par des _ fonctionne, merci pour tout.
j'ai fait un essai reel, et j'ai un probleme.
Le bandeau de LED reste toujours allumé et clignote un peu plus fort au rythme imposé par l'arduino
J'ai essayé en installant des resistances, le resultat est a peu pres le meme, le clignotement est juste moins fort.
auriez vous une idée ?
Au début, il était question d'une LED.
Là, on parle d'un bandeau. Il est raccordé comment à l'Arduino?
Effectivement c'est un bandeau. Désolé.
Il y a trois mofset irf530n pbf commandé par les pin 9.10.11 de l'arduino