Bonjour,
Je suis sur un projet pour une asso d'escrime qui a une installation lumineuse mais pas de matériel pour piloter les lumières. C'est ma première expérience sur de la programmation Arduino.
Je veux contrôler les lumières avec une carte arduino Nano.
J'ai fait une ébauche de programme.
Mon problème qu'il est trop long a réagir entre deux actions.
Je vous mets mon programme:
// C++ code
//
int ledb = 4;
int ledV = 5;
int ledB = 6;
int ledJ = 7;
int ledR = 8;
int masseA = 9;
int toucheA = 10;
int masseB = 11;
int toucheB = 12;
int Sabre = A3;
int Epee = A4;
int Fleuret = A5;
unsigned long tempotouche = 50;
unsigned long tempoled = 3000;
int etattoucheA = LOW;
unsigned long tempsAppuiA = 0;
int etattoucheB = LOW;
unsigned long tempsAppuiB = 0;
int etatEpee = LOW;
void setup()
{
pinMode(ledb, OUTPUT);
pinMode(ledV, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledJ, OUTPUT);
pinMode(ledR, OUTPUT);
pinMode(masseA, INPUT_PULLUP);
pinMode(toucheA, INPUT);
pinMode(masseB, INPUT_PULLUP);
pinMode(toucheB, INPUT);
pinMode(Sabre, INPUT);
pinMode(Epee, INPUT);
pinMode(Fleuret, INPUT);
}
void loop()
// {
// etatEpee = analogRead(Epee);
// if (etatEpee == HIGH)
{
etattoucheA = digitalRead(toucheA);
if (etattoucheA == LOW) {
tempsAppuiA = millis();
}
etattoucheB = digitalRead(toucheB);
if (etattoucheB == LOW) {
tempsAppuiB = millis();
}
if (etattoucheA == HIGH && millis() - tempsAppuiA >= tempotouche)
{ digitalWrite(ledV, HIGH);
digitalWrite(ledb, HIGH);
delay(tempoled);
} else {
digitalWrite(ledV, LOW);
digitalWrite(ledb, LOW);
}
etattoucheB = digitalRead(toucheB);
if (etattoucheB == LOW) {
tempsAppuiB = millis();
}
if (etattoucheB == HIGH && millis() - tempsAppuiB >= tempotouche)
{ digitalWrite(ledR, HIGH);
digitalWrite(ledb, HIGH);
delay(tempoled);
} else {
digitalWrite(ledR, LOW);
digitalWrite(ledb, LOW);
}
if (etattoucheA == HIGH && etattoucheB == HIGH && (millis() - tempsAppuiA) < tempotouche)
{ digitalWrite(ledV, HIGH);
digitalWrite(ledR, HIGH);
delay(tempoled);
} else {
digitalWrite(ledV, LOW);
digitalWrite(ledR, LOW);
}
if (digitalRead(masseA) == LOW )
{ digitalWrite(ledB, HIGH);
delay(tempoled);
} else {
digitalWrite(ledB, LOW);
}
if (digitalRead(masseB) == LOW )
{ digitalWrite(ledJ, HIGH);
delay(tempoled);
} else {
digitalWrite(ledJ, LOW);
}
//}
if (digitalRead(ledB) == HIGH || digitalRead(ledV) == HIGH || digitalRead(ledJ) == HIGH ||digitalRead(ledR) == HIGH)
{ digitalWrite(ledb, HIGH);
delay(tempoled);
} else {
digitalWrite(ledb, LOW);
}
}
Avez vous une solution pour moi?
Est ce que un Arduino est adapter a mon projet?