Dans un premier temps j'espère que vous avez passé de bonnes fêtes.
Alors voilà mon projet est de créer un code Arduino d'un mélangeur de peinture rotatif.
Pour se faire j'utilise un moteur cc, et j'ai la chose suivante à faire :
Etat 0 ( allumage de la machine) : diode rouge allumée.
Etat 1 (déclenché par un bouton poussoir n°1) : diode verte allumée.
-Etat 2 (déclenché par un bouton poussoir n°2) : diode verte allumée+ une diode bleu allumée + moteur cc allumé en vitesse 1
Etat 3 (déclenché par un bouton poussoir n°3): diode verte allumée + deux diode bleu allumée + moteur cc allumé en vitesse 2
Le problème étant que mon niveau de codage est très limité, j'ai commencé par regarder comment allumé une diode via un bouton poussoir mais je ne comprend pas comment on fait pour changer d'état (et donc de vitesse) et si il faut tout écrire dans le void loop() ou si il faut créer plusieurs void loop().
Un énorme merci pour le temps que vous accorderez à m'aider,
je te dirais bien d'utiliser une biblio "button", mais vu la centaine qui existent avec le meme nom "button.h"...avec ou sans anti-rebonds
/*
@version 1.1
@author Alexander Brevig
@contact alexanderbrevig@gmail.com
Display the intuitive way of using a button when using this Hardware Abstraction class
@license
Copyright (c) 2009 Alexander Brevig. All rights reserved.
This code is subject to AlphaLicence.txt
alphabeta.alexanderbrevig.com/AlphaLicense.txt
pas de debounce software il faut ajouter des delay
*/
#include "Button.h" // fichiers h et cpp dans le dossier du croquis
create a Button object at pin X
/*
Wiring:
GND -----pushbutton ------ pin arduino
*/
// declaration des boutons en input pull up interne
Button button1 = Button(7,PULLUP); // bp1 pin 7
Button button2 = Button(8,PULLUP); // bp2 pin 8
Button button3 = Button(9,PULLUP); // bp3 pin 9
Button breset = Button(10,PULLUP); // bouton de reset soft sur pin 10
// 4 Led
int LedR = 2; // rouge sur pin 2
int LedV = 3; // verte sur pin 3
int LedB1 = 4; // bleu no 1 sur pin 4
int LedB2 = 5; // bleu no 2 sur pin 5
#define moteurCC 13 // sortie moteur
// software reset function
void(* resetFunc) (void) = 0; //declare reset function @ address 0
void setup(){
Serial.begin(9600);
pinMode(LedR,OUTPUT); // sorties leds
pinMode(LedV,OUTPUT); //
pinMode(LedB1,OUTPUT); //
pinMode(LedB2,OUTPUT); //
// pas de pinMode sur boutons la biblio le fait
digitalWrite(LedR,HIGH); // led rouge allumée
digitalWrite(LedV,LOW); // eteinte
digitalWrite(LedB1,LOW);
digitalWrite(LedB2,LOW);
Serial.println ("allume led rouge et moteur a l'arret");
delay(200);
}
void loop(){
if(button1.isPressed()){
digitalWrite(LedV,HIGH); // allume verte
digitalWrite(LedR,LOW); // eteint led rouge
digitalWrite(LedB1,LOW); // bleue no1 eteinte
digitalWrite(LedB2,LOW); // bleue no2 eteinte
Serial.println ("allume led verte et moteur a l'arret");
delay(200);
// code moteur ARRET
} // end of button 1
if(button2.isPressed())
{
digitalWrite(LedV,HIGH); //allume led verte
digitalWrite(LedR,LOW); // eteint led rouge
digitalWrite(LedB1,HIGH); // bleue no1 allume
digitalWrite(LedB2,LOW); // bleue no2 eteinte
Serial.println ("allume led verte+ bleue 1 et moteur V1");
delay(200);
// code /fonction concernant moteur V1
//
} // end of button 2
if(button3.isPressed())
{
digitalWrite(LedV,HIGH); //allume led verte
digitalWrite(LedR,LOW); // eteint led rouge
digitalWrite(LedB1,HIGH); // bleue no1 allume
digitalWrite(LedB2,HIGH); // bleue no2 allume
Serial.println ("allume led verte + 2 bleues et moteur V2");
delay(200);
// code /fonction concernant moteur V2
//
}// end of button 3
if(breset.isPressed())
{
resetFunc(); //call reset
// 100x plus rapide que appui bouton reset de l'uno
}
}// end of loop
code tres basique, des tas de simplifications possibles : tableaux, structures,...
en piece jointe le zip complet avec fichiers h et cpp de la biblio utilisée, il suffit de dézipper, aller dans le dossier et cliquer sur l'ino, ne pas déplacer les fichiers dans un dossier library etc...
tu n'expliques pas si on doit passer par les 3 etapes dans l'ordre : ici on appuie sur n'importe quel bouton, avec une latence de 200ms, le bouton reset fait double emploi avec le bouton1, excepté pour la led rouge boutonswitc.zip (3.6 KB)
Quelques petites questions pour compléter ton cahier des charges
comment est ce qu'on revient à l'état 0?
a quoi sert l'état 1?
est ce que les états doivent être déclenchés dans l'ordre? C'est à dire par exemple est ce qu'on peut passer de l'état 0 à l'état 3 ou faut-il passer par les états 1 puis 2
@ jpbricole,
oui bien sur, la biblio de Michael Adams (2016) est un fork de celle de Brevig (2009), noms fonctions différentes
manque aussi de détails de la part du demandeur : comment est commandé arret/vitesse1 et vitesse2 du moteur
@kamill : etat 0 : reset, comme j'ai écrit je ne vois pas de différence entre etat1 (arret moteur) et état 0,
A+