Bonjour à tous,
Je suis actuellement en classe de 1ère S option Science de l'ingénieur. Fin février, nous avons à rendre un dossier (le TPE, travail pratique encadré). Avec mon groupe, nous avons choisi de travailler sur l'assistance du vélo électrique (V.A.E), et plus précisément le déclenchement de cette assistance. L'assistance doit se déclencher que dans certains cas :
- vitesse < 25km/h --> V
- action sur les pédales --> P
- niveau d'assistance choisi --> N
- Pas d'appui sur les freins --> F

Sur notre carte Arduino, chaque condition est "associé" à une variable binaire (0 ou 1), sauf la vitesse, que nous souhaitons faire varier à l'aide d'un potentiomètre (c'est donc une entrée analogue). Notre prof nous a dit d'utiliser une équation logique (que voici : Assistance=V¯.P.N.F¯), déduite d'une table de vérité. Or, les cases d'une table de vérité ne peuvent prendre que des états 0 ou 1, alors que notre potentiomètre peut prendre de multiples valeurs. Nous ne savons donc pas comment inclure cela dans notre équation logique.
Indépendament, nous avons réussi à faire fonctionner notre potentiomètre, mais évidement, lorsque nous introduisons le "programme potentiomètre" dans le programme simulant le déclenchement de l'assistance, cela ne fonctionne pas.
Voici notre programme en l'état actuel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const int nivAssist=4; //Associe la variable au pin 4
const int pedalage=5;  //Associe la variable au pin 5
const int frein=6;     //Associe la variable au pin 6
const int potpin=7;    //Associe la variable au pin 7
int val;
 
const int vitesseMoteurA=12; 
const int sensMoteurA=3;
 
const int avant=1; 
int vitesse=255;
 
boolean lect_vMax;
boolean lect_nivAssist;
boolean lect_pedalage;
boolean lect_frein;
boolean assistance;
 
void setup()
{
  //Définie les variables en entrée
  pinMode(potpin, INPUT);
  pinMode(nivAssist, INPUT);
  pinMode(pedalage, INPUT);
  pinMode(frein, INPUT);
 
  //Définie les variables en sortie
  pinMode(sensMoteurA, OUTPUT);
  pinMode(vitesseMoteurA, OUTPUT);
 
  Serial.begin(9600);
}
 
void loop()
{
  lect_nivAssist = digitalRead(nivAssist); 
  lect_pedalage = digitalRead(pedalage);
  lect_frein = digitalRead(frein);
  val = analogRead(A0);           //Associe la variable val à des valeurs analogiques de 0 à 1023
  val = map(val, 0, 1023, 0, 40); //Définie proportionnellement les valeurs 0 à 40 sur l'entrée analogique A0
  delay(15); 
 
  assistance=nivAssist&pedalage&!frein; 
 
  //Affiche sur le moniteur série l'état de chaque variable
  Serial.print("Vitesse=");
  Serial.println(val);
  Serial.print("Niveau d'assistance=");
  Serial.println(nivAssist);
  Serial.print("Pedalage=");
  Serial.println(pedalage);
  Serial.print("Frein=");
  Serial.println(frein);
  Serial.print("Assistance=");
  Serial.println(assistance);
  Serial.println(" ");
  delay(1000);
 
  if(assistance==1&val<=25)
    {
    digitalWrite(vitesseMoteurA, vitesse);
    digitalWrite(sensMoteurA, avant);
    }
  else
    {
    digitalWrite(sensMoteurA, LOW);
    }
}
En espérant une prompt réponse, merci