Bonjour à toutes et à tous,
Je travaille actuellement sur un projet faisant appel à une carte Arduino, ce qui m'a amené à découvrir la programmation. Malheureusement mon premier programme ne fait pas ce que j'aimerais qu'il fasse, j'espère donc qu'en m'adressant à vous je réussirai à résoudre le problème. Pour vous aider à mieux comprendre le but du programme voilà une petite explication en français:
Composants: Un switch, trois boutons-poussoirs A,B,C, une électrovanne
Si le micro switch est en position enfoncée, quoi qu'il arrive, le microprocesseur ordonne à l'électrovanne de s'ouvrir et de l'eau coule.
Si un bouton poussoir (détection A, B ou C) est en position enfoncée au moment où le micro switch est enfoncé aussi, le microprocesseur ordonne à l'électrovanne de s'ouvrir et doit compter le temps pendant lequel l'eau coule. Une fois ce temps déterminé, le microprocesseur peut définir la quantité d'eau qui a été versée grâce à un calcul de débit qu'il est capable de réaliser. Finalement l'information du volume d'eau servi est envoyée à l'ordinateur, relié à la carte Arduino.
Voilà le programme que j'ai rédigé, mais qui ne fonctionne pas:
unsigned long debut_A = 0;
unsigned long debut_B = 0;
unsigned long debut_C = 0;
unsigned long temps_A = 0;
unsigned long temps_B = 0;
unsigned long temps_C = 0;
int volume_A = 0;
int volume_B = 0;
int volume_C = 0;
int volume_total_A = 0;
int volume_total_B = 0;
int volume_total_C = 0;
const int switch_tlm = 0; //<-- Interrupteur général sur la Pin 0
const int switchA = 1; //<-- Interrupteur A sur la Pin 1
const int switchB = 2; //<-- Interrupteur B sur la Pin 2
const int switchC = 3; //<-- Interrupteur C sur la Pin 3
const int vanne = 4; //<-- Vanne sur la Pin 4
void setup ()
{
Serial.begin(9600); //<-- Lancement de l'intéraction entre l'Arduino et le PC à 9600 Bits par Secondes
pinMode(switch_tlm, INPUT);
pinMode(switchA, INPUT);
pinMode(switchB, INPUT);
pinMode(switchC, INPUT);
pinMode(vanne, OUTPUT);
}
void loop ()
{
while(digitalRead(switch_tlm == 1))
{
digitalWrite(vanne, HIGH); //<-- On ouvre la vanne quoi qu'il arrive
if(digitalRead(switchA == 1))
{
debut_A = millis(); //<-- Si A est pressé on lance le Timer
while (digitalRead(switchA == 1))
{/*Tant que A est pressé...*/}
temps_A = ((millis() - debut_A) / 1000); //<-- A n'est plus pressé, on fait les calculs, et on repasse le temps en Secondes
Serial.print("Temps de remplissage: ");
Serial.println(temps_A);
Serial.print("Volume servi: ");
volume_A = temps_A*3.33;
Serial.println(volume_A);
volume_total_A = volume_total_A + volume_A; //<-- Volume total de la personne A
Serial.print("Volume total A: ");
Serial.println(volume_total_A);
temps_A = debut_A = 0; //<-- Remise à 0 des variables Temps
}
if(digitalRead(switchB == 1))
{
debut_B = millis(); //<-- Si B est pressé on lance le Timer
while (digitalRead(switchB == 1))
{/*Tant que B est pressé...*/}
temps_B = ((millis() - debut_B) / 1000); //<-- B n'est plus pressé, on fait les calculs, et on repasse le temps en Secondes
Serial.print("Temps de remplissage: ");
Serial.println(temps_B);
Serial.print("Volume servi: ");
volume_B = temps_B*3.33;
Serial.println(volume_B);
volume_total_B = volume_total_B + volume_B; //<-- Volume total de la personne B
Serial.print("Volume total B: ");
Serial.println(volume_total_B);
temps_B = debut_B = 0; //<-- Remise à 0 des variables Temps
}
if(digitalRead(switchC == 1))
{
debut_C = millis(); //<-- Si C est pressé on lance le Timer
while (digitalRead(switchC == 1))
{/*Tant que C est pressé...*/}
temps_C = ((millis() - debut_C) / 1000); //<-- A n'est plus pressé, on fait les calculs, et on repasse le temps en Secondes
Serial.print("Temps de remplissage: ");
Serial.println(temps_C);
Serial.print("Volume servi: ");
volume_C = temps_C*3.33;
Serial.println(volume_C);
volume_total_C = volume_total_C + volume_C; //<-- Volume total de la personne C
Serial.print("Volume total C: ");
Serial.println(volume_total_C);
temps_C = debut_C = 0; //<-- Remise à 0 des variables Temps
}
}
digitalWrite(vanne, LOW); //<-- Fermeture de la Vanne si le switch_tlm n'est plus pressé
}
Voilà, j'espère que vous allez pouvoir m'aider car je ne vois vraiment pas pourquoi ça ne marche pas. La compilation et le téléversement se font sans problème, cependant le programme ne fait absolument rien de ce que je lui demande.