Changer de programme avec un bouton poussoir

Arduino

a marqué ce sujet comme résolu.

Bonjour à Tous, je suis nouveau sur votre site désolé si ma demande n’est pas au bon endroit.

Je cherche une aide à la programmation arduino avec un Pro micro. Je voudrais à l’aide d’un bouton poussoir changer de programme. Il s’agit de deux programmes imitant la flamme d’une bougie l’un imitant une flamme sans vent et l’autre avec vent. Ces deux programmes fonctionnent indépendamment. J’aimerai les programmer en un seul et effectuer mon choix à l’aide d’un bouton poussoir (sur le modèle des guirlandes de Noel et leurs différents clignotements). Quelqu’un pourrait-il m’aider à la programmation de ce bouton poussoir ? Merci pour votre retour. Dlpm

Ça n’est pas compliqué, tu as juste a regarder quand le bouton est pressé (et qu’il ne l’était pas avant), tu changes quelle fonction tu appelles.

int inPin = 7;    // pushbutton connected to digital pin 7

bool state      = false;      // variable to store the read value
bool prev_state = false;

bool wind = false;


void drawNormal() {}

void drawWind() {}


void setup() {
 pinMode(inPin, INPUT);    // sets the digital pin 7 as input
}

void loop() {
 state = digitalRead(inPin) == HIGH;   // read the input pin
 if (state && !prev_state) {
   wind = !wind;
 }
 prev_state = state;

 if (wind) {
   drawWind();
 } else {
   drawNormal();
 }
}

Merci pour ton retour j’ai quelques notions en programmation mais débutant néanmoins. je comprends en partie ton programme mais malheureusement pas complètement.

Voici mes deux programmes faisant fonctionner une led RGB

Le premier:

// Déclarations des sorties PWM int ledb = 7; int ledr = 9; int ledv = 8;

void setup() { // En mode sortie pinMode(ledb, OUTPUT); pinMode(ledv, OUTPUT); pinMode(ledr, OUTPUT); }

void loop() { analogWrite(ledb, 255); analogWrite(ledv, 0); analogWrite(ledr, random(20,80)); delay(random(30,100)); }

Le second :

// Project 9 - LED Fire Effect int ledPin1 = 7; int ledPin2 = 9; int ledPin3 = 8;

void setup() { pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); }

void loop() { analogWrite(ledPin1, random(132)+135); analogWrite(ledPin2, random(132)+135); analogWrite(ledPin3, random(132)+135); delay(random(400)); }

Comment relier ton programme à ces deux programmes ? C’est ma difficulté. Merci pour ton aide.

Après études de ta proposition et reflexions ++++ j’ai ecris ce programme qui dans l’IDE c’est bien compilé et televersé dans un nono pour les essais. Le programme fonctionne mais pas dans sa totalité la led RGB reste fixe le bouton poussoir repond.

Ci joint le programme qui je pense est à alléger car je pense qu’il y a des lignes redondantes dans la déclaration du setup. int inPin = 7; // pushbutton connected to digital pin 7

bool state = false; // variable to store the read value bool prev_state = false;

bool wind = false;

// Déclarations des sorties PWM Wind int ledb = 6; int ledr = 9; int ledv = 8;

// Déclarations des sorties PWM Normal int ledPin1 = 6; int ledPin2 = 9; int ledPin3 = 8;

void drawNormal() {}

void drawWind() {}

void setup() {

pinMode(inPin, INPUT); // sets the digital pin 7 as input

// Wind pinMode(ledb, OUTPUT); pinMode(ledv, OUTPUT); pinMode(ledr, OUTPUT);

// Normal pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT);

} void Normal() {

analogWrite(ledPin1, random(132) + 135); analogWrite(ledPin2, random(132) + 135); analogWrite(ledPin3, random(132) + 135); delay(random(400)); }

void Wind() {

analogWrite(ledr, 255); analogWrite(ledv, 0); analogWrite(ledb, random(20, 80)); delay(random(30, 100)); }

void loop() { state = digitalRead(inPin) == HIGH; // read the input pin if (state && !prev_state) { wind = !wind; } prev_state = state;

if (wind) { drawWind(); } else { drawNormal(); } }

merci pour ton aide

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte