Je viens de commencer avec Arduino. Je souhaiterai allumer 6 leds avec le meme bouton poussoir mais je ne sais pas s'il faut les brancher en parallèle ou en série et si je dois seulement ajouter les pins de leds au programme.
J'ai un premier programme pour allumer une led avec un bouton poussoir:
//le bouton est connecté à la broche 2 de la carte Adruino
const int bouton = 2;
//la LED à la broche 13
const int led = 13;
//variable qui enregistre l'état du bouton
int etatBouton;
void setup()
{
pinMode(led, OUTPUT); //la led est une sortie
pinMode(bouton, INPUT); //le bouton est une entrée
etatBouton = LOW; //on initialise l'état du bouton comme "relaché"
}
void loop()
{
etatBouton = digitalRead(bouton); //Rappel : bouton = 2
if(etatBouton == LOW) //test si le bouton a un niveau logique HAUT
{
digitalWrite(led,HIGH); //le bouton est relâché, la LED est allumée
}
else //test si le bouton a un niveau logique différent de HAUT (donc BAS)
{
digitalWrite(led,LOW); //la LED reste éteinte
}
}
je te donne un lien du site arduino... la seule difference entre ton application et celui du site, c'est qu'il y a un portard au lieu d'un bouton, mais rien de compliqué de réaliser le changement pour ton application
il y a 10 led branché sur les pins avec autant de resistance de 220ohm
tu as donner un programme pour 1 led, dans le lien tu as un exemple pour 10led..
donc maintenant a toi de faire une petite adaptation pour tes besoins.
Si tes 6 leds doivent toujours être commandées ensembles tu peux les mettre en parallèle, avec chacune leur résistance.
Comme l'intensité sera de l'ordre de 120mA, il te faudra un transistor pour les commander.
Si tu as des sorties de libre, la solution de hazerty565 te permet de te passer de transistor.
J’ai fait quelques modifications e nchangeant analogpin par bouton mais je ne sais pas par quoi remplacer “int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);”. Auriez-vous une idée ?
// these constants won't change:
const int bouton = 2; // the pin that the potentiometer is attached to
const int ledCount = 10; // the number of LEDs in the bar graph
int ledPins[] = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 11
}; // an array of pin numbers to which LEDs are attached
void setup() {
// loop over the pin array and set them all to output:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
// read the potentiometer:
int etatbouton = digitalRead(bouton);
// map the result to a range from 0 to the number of LEDs:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// loop over the LED array:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// if the array element's index is less than ledLevel,
// turn the pin for this element on:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// turn off all pins higher than the ledLevel:
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Il ne faut pas que tu partes du programme de vumetre.
Il faut que tu partes de ton programme, tu déclares un tableau de ledPins comme dans ce programme et au lieu d'allumer/éteindre une seule led, tu allumes/éteints toutes les leds avec une boucle.
//le bouton est connecté à la broche 2 de la carte Adruino
const int bouton = 2;
const int ledCount = 6;
int etatBouton;
int ledPins[] = {3, 4, 5, 6, 7, 8};
void setup()
{
pinMode(bouton, INPUT); //le bouton est une entrée
etatBouton = LOW; //on initialise l'état du bouton comme "relaché"
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop()
{
etatBouton = digitalRead(bouton); //Rappel : bouton = 2
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
if(etatBouton == LOW)
{
digitalWrite(ledPins[thisLed], HIGH);
}
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Les leds s’allument toutes d’un coup et lorsque j’appuie sur le bouton elles s’éteignent mais se rallument une fois que je lâche le bouton. En fait j’aimerai que quand j’appuie sur le bouton une led s’allume, j’appuie une 2eme fois sur le bouton, une 2eme s’allume et ainsi de suite…
Pour cela il faut que tu incrémente un compteur chaque fois que tu appuies sur le bouton.
Pour détecter l'appui sur le bouton (et non l'état), il faut que tu mémorises l'état précédent
Ensuite si etatBouton==LOW et etatBoutonPrecedent==HIGH tu vens d'appuyer donc tu incrémente le compteur.