Étape 9: Mon SW (libre pour quiconque d’utiliser)
inclure le code de bibliothèque :#include
Innovente lcd (12, 11, 5, 4, 3, 2); / / Initialise la bibliothèque avec les numéros des broches interface
int sensorPin = 0 ; Sélectionnez l’entrée pin pour le potentiomètre (broche 23)
int sensor2Pin = 2 ; Sélectionnez l’entrée pin pour le potentiomètre (broche 23)
int ledPin = 13 ; Sélectionnez le code pin de la LED
int SPKPin = 6 ;
int sensorValue = 0 ; variable pour stocker la valeur provenant de la sonde
int sensor2Value = 0 ; variable pour stocker la valeur provenant de la sonde
float LiMinThreshold = 2700 ; Tension minimale au lithium pour l’enlèvement de la charge
float LiMaxThreshold = 4200 ; Max Voltage au lithium pour l’enlèvement de la charge
float NmhMinThreshold = 950 ; NMH tension minimale pour l’enlèvement de la charge
float NmhMaxThreshold = 1600 ; NMH Max Voltage pour l’enlèvement de la charge
float SelectedMinThreshold = 5000 ;
int i ;
int BatVoltage = 5000 ;
int FetVoltage = 5000 ;
long TotalCurrent = 0 ;
boolean = false ;
unsigned long PrevMillis ;
unsigned long MillisPassed ;
void CL2() {}
lcd.setCursor (0, 1); / / deuxième ligne premier char
LCD.Print("") ;
lcd.setCursor (0, 1); / / deuxième ligne premier char
}
void setup() {}
Serial.Begin(9600); / / start port série pour envoyer des données pendant la course vers le PC
pinMode (ledPin, sortie); //activation conduit et enable pour FET
pinMode (SPKPin, OUTPUT); //activation conduit et enable pour FET
LCD.Begin (24, 2); / / mettre en place nombre de l’écran LCD de lignes et de colonnes :
LCD.Print ("Bat PWR Tester[Active]") ; Imprimer un message à l’écran LCD.
lcd.setCursor (0, 1); / / deuxième ligne premier char
LCD.Print ("détection Bat Type...") ; imprimer la valeur de la tension
Delay(2000) ;
lcd.setCursor (0, 1); / / deuxième ligne premier char
LCD.Print("") ;
lcd.setCursor (0, 1); / / deuxième ligne premier char
digitalWrite (ledPin, HIGH) ; la valeur de la LED sur
sensorValue = analogRead(sensorPin) ; lire la valeur de la sonde :
digitalWrite (ledPin, basse) ; déclencher la LED
Détecter le type de batterie
BatVoltage = sensorValue * 4.887 ;
Si (BatVoltage > 4500) {}
LCD.Print ("avertissement haute-V!") ;
= true;}
ElseIf (BatVoltage > LiMinThreshold) {}
LCD.Print ("Type: Li-Ion Bat") ;
SelectedMinThreshold = LiMinThreshold;}
ElseIf (BatVoltage > NmhMinThreshold) {}
LCD.Print ("Type: NiMH/Cd Bat") ;
SelectedMinThreshold = NmhMinThreshold;}
else {}
LCD.Print ("Unknown Bat V < 1") ;
= true;}
LCD.Print("V=") ;
LCD.Print(sensorValue*4.887) ; imprimer la valeur de la tension
Serial.Print("DT[MS]") ;
Serial.Print("\t") ;
Serial.Print("bat[MV]") ;
Serial.Print("\t") ;
Serial.Print("FET[MV]") ;
Serial.println("") ;
Delay(3000) ;
CL2() ;
PrevMillis = millis() ;
}
void loop() {}
Si (BatVoltage > SelectedMinThreshold & &! fait) {}
digitalWrite (ledPin, HIGH) ; la valeur de la LED sur
sensorValue = analogRead(sensorPin) ; lire la valeur de la sonde :
sensor2Value = analogRead(sensor2Pin) ; lire la valeur de la FET :
FetVoltage = (sensor2Value * 4.887) ;
BatVoltage = (sensorValue * 4.887) ;
CL2() ;
LCD.Print("V=") ;
LCD.Print(BatVoltage) ; imprimer la valeur de la tension
LCD.Print("MV") ;
LCD.Print(FetVoltage) ; imprimer la valeur de la tension
TotalCurrent = TotalCurrent + MillisPassed/1000 *(BatVoltage-FetVoltage)/2.2/3.6 ;
LCD.Print ("J’ai =") ;
LCD.Print(TotalCurrent/1000) ;
LCD.Print ("mAH") ;
Delay(1000) ;
MillisPassed = millis()-PrevMillis ;
PrevMillis = millis() ;
Serial.Print(int(MillisPassed)) ;
Serial.Print("\t") ; imprime un onglet
Serial.Print(BatVoltage) ;
Serial.Print("\t") ; imprime un onglet
Serial.Print(FetVoltage) ;
Serial.println("") ; imprime un onglet
CL2() ;
}
d’autre
{
= true ;
digitalWrite (ledPin, basse) ; déclencher la LED - stop chargement
lcd.setCursor (0, 0); / / le premier char de première ligne
LCD.Print ("Bat pouvoir Tester [DONE]") ; Imprimer un message à l’écran LCD.
Cl2 (); //clear ligne 2
sensorValue = analogRead(sensorPin) ; lire la valeur de la sonde :
BatVoltage = (sensorValue * 4.887) ;
lcd.setCursor (0, 1); / / deuxième ligne premier char
LCD.Print("V=") ;
LCD.Print(BatVoltage) ; imprimer la valeur de la tension
LCD.Print ("mV je =") ;
LCD.Print(TotalCurrent/1000) ;
LCD.Print ("mAH") ;
pour (int i = 0; i < 100; i ++) {}
digitalWrite (SPKPin, élevé) ;
Delay(1) ;
digitalWrite (SPKPin, basse) ;
Delay(1) ;
}
Delay(1000) ;
}
}