Bonjour, je suis élève en T°STI2D et j'ai pour projet de BAC de faire un kart électrique. Dans ce projet je suis en charge de créer un programme Arduino permettant de mesurer la tension des batteries et la vitesse de rotation moteur et du kart. J'ai fais les 2 programmes qui fonctionnent parfaitement indépendamment. Cependant mon but est de les fusionner dans un seul programme. J'ai essayé mais le programme ne fonctionne pas. Pouvez-vous m'aider ? Merci
Programme tension :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//----- Adressage matériel -----
// En cas de non fonctionnement, mettez la ligne 8 en
// commentaire et retirez le commentaire à la ligne 9.
LiquidCrystal_I2C lcd(0x27, 20, 4);
//LiquidCrystal_I2C lcd(0x3F,20,4);
float vPow = 4.7;
float r1 = 30000;
float r2 = 7500;
void setup()
{
lcd.init(); // initialisation de l'afficheur
Serial.begin(9600);
Serial.println("-----------------------");
Serial.println("Theo");
Serial.println("-----------------------");
Serial.println("DC Voltmetre");
Serial.println("Tension Maximum: ");
Serial.print((int)(vPow / (r2 / (r1 + r2))));
Serial.println("V");
Serial.println("-----------------------");
Serial.println("");
delay(2000);
}
void loop()
{
float v = (analogRead(0) * vPow) / 1024.0;
float v2 = v / (r2 / (r1 + r2));
Serial.print(v2);
Serial.println("V");
delay(2000);
lcd.backlight();
// Envoi du message
lcd.setCursor(0, 0); // Positionnement à la première ligne
lcd.print("Tension:"); // Afficher tensio devant la valeur
lcd.print(v2); lcd.write(byte(0)); // Affichage de la tension.
}
Programme Vitesse :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int cbon = 1;
int tempo = millis();
int temp;
int freqN;
int deltat;
int trmin;
int vroueang;
int vrouems;
int vrouekmh;
int vitang;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
pinMode(2, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
lcd.init();
}
void loop() {
if (digitalRead(2) == LOW) {
if (cbon) {
cbon = 0 ;
temp = millis() ;
deltat = temp - tempo ;
tempo = temp ;
freqN = 60000/deltat ;
trmin = freqN*11/85 ;
vitang = freqN/60 ;
vroueang = vitang*27/2 ;
vrouems = vroueang*27/100 ;
vrouekmh = vrouems*36/100 ;
Serial.print("deltat ms : ");
Serial.println(deltat);
Serial.print(" N : ");
Serial.println(freqN) ;
Serial.print("tour/min : ") ;
Serial.println(trmin) ;
Serial.print("km/h : ") ;
Serial.println(vrouekmh) ;
Serial.print("m/s : ") ;
Serial.println(vrouems) ;
}
digitalWrite(13, HIGH) ;
} else {
cbon = 1 ;
digitalWrite(13, LOW) ;
}
{
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Vitesse tr/min:");
lcd.print(trmin);
lcd.setCursor(0,1);
lcd.print("Vitesse km/h:");
lcd.print(vrouekmh);
}
}
Programmes réunis :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
int cbon = 1;
int tempo = millis();
int temp;
int freqN;
int deltat;
int trmin;
int vroueang;
int vrouems;
int vrouekmh;
int vitang;
LiquidCrystal_I2C lcd(0x27, 20, 4);
float vPow = 4.7;
float r1 = 30000;
float r2 = 7500;
void setup()
{
pinMode(2, INPUT);
pinMode(13, OUTPUT);
Serial.begin(9600);
Serial.println("-----------------------");
Serial.println("Theo");
Serial.println("-----------------------");
Serial.println("DC Voltmetre");
Serial.println("Tension Maximum: ");
Serial.print((int)(vPow / (r2 / (r1 + r2))));
Serial.println("V");
Serial.println("-----------------------");
Serial.println("");
delay(2000);
lcd.init();
}
void loop()
{
float v = (analogRead(0) * vPow) / 1024.0;
float v2 = v / (r2 / (r1 + r2));
Serial.print(v2);
Serial.println("V");
delay(2000);
if (digitalRead(2) == LOW) {
if (cbon) {
cbon = 0 ;
temp = millis() ;
deltat = temp - tempo ;
tempo = temp ;
freqN = 60000/deltat ;
trmin = freqN*11/85 ;
vitang = freqN/60 ;
vroueang = vitang*27/2 ;
vrouems = vroueang*27/100 ;
vrouekmh = vrouems*36/100 ;
Serial.print("deltat ms : ");
Serial.println(deltat);
Serial.print(" N : ");
Serial.println(freqN) ;
Serial.print("tour/min : ") ;
Serial.println(trmin) ;
Serial.print("km/h : ") ;
Serial.println(vrouekmh) ;
Serial.print("m/s : ") ;
Serial.println(vrouems) ;
}
digitalWrite(13, HIGH) ;
} else {
cbon = 1 ;
digitalWrite(13, LOW) ;
}
{
lcd.backlight();
// Envoi du message
lcd.setCursor(0,0);
lcd.print("Vitesse tr/min:");
lcd.print(trmin);
lcd.setCursor(0,1);
lcd.print("Vitesse km/h:");
lcd.print(vrouekmh);
lcd.setCursor(0, 2); // Positionnement à la première ligne
lcd.print("Tension:"); // Afficher tensio devant la valeur
lcd.print(v2); // Affichage de la tension.
}
}