Arduino solcell testare (5 / 6 steg)
Steg 5: Programmet
/*
Solcell testare 15V-1A
av Mike Soniat
Den 8 september, 2012
*/
CONST int RxPin = 3;
#include < SoftwareSerial.h >
SoftwareSerial lcdPanel = SoftwareSerial (255, RxPin);
int voltPin = 1;
int ampPin = 2;
int readVolts = 0;
int readAmps = 0;
int maxVolts = 15. Måste matcha spänning krets motstånd
flyta voltageFactor = 0;
flyta spänning = 0;
flyta ström = 0;
flyta power = 0;
CONST int clearIt = 12.
CONST int cr = 13.
CONST int backLightOn = 17;
CONST int backLightOff = 18;
void setup() {
pinMode (RxPin, OUTPUT);
digitalWrite (RxPin, hög);
lcdPanel.begin(9600);
startUp();
}
void loop()
{
mäta spänning
readVolts = analogRead(voltPin);
om (readVolts > 0)
{
samtidigt (readVolts > 0)
{
readVolts = analogRead(voltPin);
om (readVolts > 0)
{
voltageFactor = 1024 / maxVolts;
spänning = readVolts / voltageFactor;
clearLCD();
lcdPanel.print ("behandlingen");
lcdPanel.print(voltage);
lcdPanel.print("V");
lcdPanel.write(cr);
lcdPanel.print ("flytta växla till A");
}
Delay(1000);
}
}
annat
{
startUp();
}
Växla till strömkretsen
readAmps = analogRead(ampPin);
samtidigt (readAmps > 0)
{
om (spänning > 0)
{
readAmps = analogRead(ampPin);
Nuvarande = readAmps;
Power = spänning * aktuell;
clearLCD();
lcdPanel.print(voltage);
lcdPanel.print ("V");
lcdPanel.print ("jag =");
lcdPanel.print(current);
lcdPanel.print("mA");
lcdPanel.write(cr);
lcdPanel.print(power);
lcdPanel.print("mW");
Delay(1000);
}
annat {
readAmps = analogRead(ampPin);
}
}
Delay(1000);
}
void clearLCD()
{
lcdPanel.write(clearIt); Klart
Delay(5);
}
void startUp()
{
clearLCD();
lcdPanel.write(backLightOn);
lcdPanel.print ("15V - 1A sol");
lcdPanel.write(cr);
lcdPanel.print ("Cell testare");
Delay(3000);
clearLCD();
lcdPanel.print ("flytta kopplas till V");
lcdPanel.print ("och ansluta Cell);
Delay(2000);
}