Je voudrais donc utiliser un seul poussoir pour allumer une led selon deux mode différent pour ensuite séparer mon programme en deux partit :
1er impulsion pour faire clignoter L1 jusqu’à déclenchement du prog 1
2éme impulsion pour que L1 passe au fixe jusqu’à déclenchement du prog 2
Ceci servirait à sélectionner le programme voulu.
Possible ? Car j'ai essayer quelque code mais j’arrive pas à obtenir ce que je veux !
Merci de m'avoir lu.
Merci pour vos réponses ! J'ai donc pousser mes recherches un peut plus loin et j'en suis arriver à ce code:
et maintenant mon problème et de faire revenir le compteur à 1 quand il arrive à 4 ! Comment faire ?
const int buttonPin = 2;
const int ledPin = 13;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH){
buttonPushCounter++;
Serial.println("APPUI");
Serial.print("nombre d'appuis: ");
Serial.println(buttonPushCounter, DEC);
}
else {
Serial.println("PAS D'APPUI");
}
lastButtonState = buttonState;
}
if (buttonPushCounter == 2) {
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(50); }
if (buttonPushCounter == 3)
digitalWrite(ledPin, HIGH);
else if (buttonPushCounter == 4)
buttonPushCounter == 1;
}
Merci pour vos réponses ! J'ai donc pousser mes recherches un peut plus loin et j'en suis arriver à ce code:
et maintenant mon problème et de faire revenir le compteur à 1 quand il arrive à 4 ! Comment faire ?
pas très compliqué
si compteur==4 alors compteur=1
impossible maintenant d’intégrer mon programme a celui que je viens de faire >:( ! pourquoi il veut pas me le prendre alors que les deux marche tres bien tout seul :
const int buttonPin = 2;
const int ledPin = 13;
int L1 = 8;
int L2 = 9;
int L3 = 10;
int L4 = 11;
int L5 = 12;
int EP = 7;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(EP, INPUT);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("----------------------Vibration demo------------------------");
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH){
buttonPushCounter++;
delay(500);
}
lastButtonState = buttonState;
}
if (buttonPushCounter == 1 ) {
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(50); }
if (buttonPushCounter == 2)
digitalWrite(ledPin, HIGH);
else if (buttonPushCounter == 3)
buttonPushCounter = 1;
{
long measurement =TP_init();
delay(10);
Serial.print("measurment = ");
Serial.println(measurement);
if (measurement > 1500){
delay(3000);
digitalWrite(L1, HIGH);
digitalWrite(L2, HIGH);
digitalWrite(L3, HIGH);
digitalWrite(L4, HIGH);
digitalWrite(L5, HIGH);
delay(40);
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
digitalWrite(L5, LOW);
delay(40);
}
long TP_init()
delay(10);
long measurement=pulseIn (EP, HIGH);
return measurement;
}
voici les messages d’erreur :
Blink.ino: In function 'void loop()':
Blink:57: error: 'TP_init' was not declared in this scope
Blink:80: error: expected initializer before 'delay'
Blink:81: error: redeclaration of 'long int measurement'
Blink:57: error: 'long int measurement' previously declared here
Blink:82: error: return-statement with a value, in function returning 'void' [-fpermissive]
Blink:86: error: expected '}' at end of input
'TP_init' was not declared in this scope
merci c'est cool tu ma bien fait avancer, j'ai re-modifier un peut tout sa et la première partit marche pas trop mal, la ou sa merde maintenant c'est quand j'appuis une deuxième fois sur le BP, il ne me prend pas ma commande !!!
const int buttonPin = 2;
const int ledPin = 13;
int L1 = 8;
int L2 = 9;
int L3 = 10;
int L4 = 11;
int L5 = 12;
int EP = 7;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
void setup() {
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(EP, INPUT);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("--------Mesure des Vibrations et Compteur Bouton-------");
}
long TP_init() {
delay(10);
long measurement = pulseIn (EP, HIGH);
return measurement;
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
delay(500);
Serial.println("APPUI");
Serial.print("nombre d'appuis: ");
Serial.println(buttonPushCounter, DEC);
}
else {
Serial.println("PAS D'APPUI");
}
lastButtonState = buttonState;
}
if (buttonPushCounter == 1 ) {
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(50);
{
long measurement = TP_init();
delay(10);
Serial.print("measurment = ");
Serial.println(measurement);
if (measurement > 1500) {
delay(3000);
digitalWrite(L1, HIGH);
digitalWrite(L2, HIGH);
digitalWrite(L3, HIGH);
digitalWrite(L4, HIGH);
digitalWrite(L5, HIGH);
delay(400);
digitalWrite(L1, LOW);
digitalWrite(L2, LOW);
digitalWrite(L3, LOW);
digitalWrite(L4, LOW);
digitalWrite(L5, LOW);
delay(400);
buttonPushCounter = 0;
}
}
if (buttonPushCounter == 2)
digitalWrite(ledPin, HIGH);
else if (buttonPushCounter == 3)
buttonPushCounter = 1;
}
}
j'ai reprit mon code depuis le début et le souci était les { } mal placer ou oublier, j'ai bien compris le truc maintenant !!! merci a vous de votre aide !!!
Je voudrais faire une petite modification mais je n'y arrive pas. Sur la deuxième partit de mon programme je voudrais rajouter la possibilité de rompre le delay en appuyant sur mon BP pour éteindre les Leds ! quelle fonction utiliser :