Stap 9: Mijn SW (gratis voor iedereen te gebruiken)
de code van de bibliotheek omvatten:#include
LiquidCrystal lcd (12, 11, 5, 4, 3, 2); / / de bibliotheek met de nummers van de interface pinnen initialiseren
int sensorPin = 0; Selecteer de invoer pin voor de potentiometer (pin 23)
int sensor2Pin = 2; Selecteer de invoer pin voor de potentiometer (pin 23)
int ledPin = 13; Selecteer de pin voor de LED
int SPKPin = 6;
int sensorValue = 0; variabele de waarde afkomstig van de sensor opslaan
int sensor2Value = 0; variabele de waarde afkomstig van de sensor opslaan
zweven LiMinThreshold = 2700; Lithium minimale Voltage voor lading verwijderen
zweven LiMaxThreshold = 4200; Lithium Max Voltage voor lading verwijderen
zweven NmhMinThreshold = 950; NMH minimale Voltage voor lading verwijderen
zweven NmhMaxThreshold = 1600; NMH Max Voltage voor lading verwijderen
zweven SelectedMinThreshold = 5000;
int i;
int BatVoltage = 5000;
int FetVoltage = 5000;
lange TotalCurrent = 0;
Boolean = false;
unsigned long PrevMillis;
unsigned long MillisPassed;
ongeldig CL2() {}
lcd.setCursor (0, 1); / / tweede lijn eerste char
LCD.Print("");
lcd.setCursor (0, 1); / / tweede lijn eerste char
}
VOID Setup {}
Serial.begin(9600); / / start seriële poort om gegevens te verzenden tijdens de run op de PC
pinMode (ledPin, OUTPUT); //activation geleid en inschakelen voor FET
pinMode (SPKPin, OUTPUT); //activation geleid en inschakelen voor FET
LCD.begin (24, 2); / / de LCD's aantal rijen en kolommen instellen:
LCD.Print ("Bat PWR Tester[Active]"); Een bericht op het LCD-scherm afdrukt.
lcd.setCursor (0, 1); / / tweede lijn eerste char
LCD.Print ("opsporen Bat Type..."); afdrukken van de waarde van de spanning
delay(2000);
lcd.setCursor (0, 1); / / tweede lijn eerste char
LCD.Print("");
lcd.setCursor (0, 1); / / tweede lijn eerste char
digitalWrite (ledPin, hoge); de LED aangezet
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor:
digitalWrite (ledPin, laag); verrekening van de LED
Batterijtype opsporen
BatVoltage = sensorValue * 4.887;
Als (BatVoltage > 4500) {}
LCD.Print ("waarschuwing hoog-V!");
= true;}
anders als (BatVoltage > LiMinThreshold) {}
LCD.Print ("Type: Li-Ion Bat");
SelectedMinThreshold = LiMinThreshold;}
anders als (BatVoltage > NmhMinThreshold) {}
LCD.Print ("Type: NiMH/Cd Bat");
SelectedMinThreshold = NmhMinThreshold;}
else {}
LCD.Print ("onbekende Bat V < 1");
= true;}
LCD.Print("V=");
LCD.Print(sensorValue*4.887); afdrukken van de waarde van de spanning
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 {}
Als (BatVoltage > SelectedMinThreshold & &! gedaan) {}
digitalWrite (ledPin, hoge); de LED aangezet
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor:
sensor2Value = analogRead(sensor2Pin); de waarde van de FET leest:
FetVoltage = (sensor2Value * 4.887);
BatVoltage = (sensorValue * 4.887);
CL2();
LCD.Print("V=");
LCD.Print(BatVoltage); afdrukken van de waarde van de spanning
LCD.Print("MV");
LCD.Print(FetVoltage); afdrukken van de waarde van de spanning
TotalCurrent = TotalCurrent + MillisPassed/1000 *(BatVoltage-FetVoltage)/2.2/3.6;
LCD.Print ("ik =");
LCD.Print(TotalCurrent/1000);
LCD.Print ("mAH");
delay(1000);
MillisPassed = millis()-PrevMillis;
PrevMillis = millis();
Serial.Print(int(MillisPassed));
Serial.Print("\t"); een tabblad Afdrukken
Serial.Print(BatVoltage);
Serial.Print("\t"); een tabblad Afdrukken
Serial.Print(FetVoltage);
Serial.println(""); een tabblad Afdrukken
CL2();
}
anders
{
= true;
digitalWrite (ledPin, laag); verrekening van de LED - laden stoppen
lcd.setCursor (0, 0); / / eerste lijn eerste char
LCD.Print ("Bat Power Tester [DONE]"); Een bericht op het LCD-scherm afdrukt.
Cl2 (); //clear lijn 2
sensorValue = analogRead(sensorPin); luiden naar de waarde van de sensor:
BatVoltage = (sensorValue * 4.887);
lcd.setCursor (0, 1); / / tweede lijn eerste char
LCD.Print("V=");
LCD.Print(BatVoltage); afdrukken van de waarde van de spanning
LCD.Print ("mV ik =");
LCD.Print(TotalCurrent/1000);
LCD.Print ("mAH");
for (int i = 0; ik < 100; i ++) {}
digitalWrite (SPKPin, hoge);
delay(1);
digitalWrite (SPKPin, laag);
delay(1);
}
delay(1000);
}
}