Update MightyBoost sketch with A0 (in place of D7)

This commit is contained in:
Felix Rusu 2014-11-08 18:57:51 -05:00
parent fce4d74efe
commit d6cadc7a96
1 changed files with 11 additions and 5 deletions

View File

@ -45,7 +45,10 @@
#define LED 5 // LED pin, should be analog for fading effect (PWM) #define LED 5 // LED pin, should be analog for fading effect (PWM)
#define BUTTON 3 // Power button pin #define BUTTON 3 // Power button pin
#define SIG_REQUESTHALT 6 // Signal to Pi to ask for a shutdown #define SIG_REQUESTHALT 6 // Signal to Pi to ask for a shutdown
#define SIG_OKTOCUTOFF 7 // Signal from Pi that it's OK to cutoff power #define SIG_OKTOCUTOFF A0 // Signal from Pi that it's OK to cutoff power
// !!NOTE!! Originally this was D7 but it was moved to A0 at least temporarily.
// On MightyBoost R1 you need to connect D7 and A0 with a jumper wire.
// The explanation for this is given here: http://lowpowerlab.com/mightyboost/#source
#define OUTPUT_5V 4 // HIGH on this pin will switch the "5V*" output ON #define OUTPUT_5V 4 // HIGH on this pin will switch the "5V*" output ON
#define BATTERYSENSE A7 // Sense VBAT_COND signal (when powered externally should read ~3.25v/3.3v (1000-1023), when external power is cutoff it should start reading around 2.85v/3.3v * 1023 ~= 880 (ratio given by 10k+4.7K divider from VBAT_COND = 1.47 multiplier) #define BATTERYSENSE A7 // Sense VBAT_COND signal (when powered externally should read ~3.25v/3.3v (1000-1023), when external power is cutoff it should start reading around 2.85v/3.3v * 1023 ~= 880 (ratio given by 10k+4.7K divider from VBAT_COND = 1.47 multiplier)
// hence the actual input voltage = analogRead(A7) * 0.00322 (3.3v/1024) * 1.47 (10k+4.7k voltage divider ratio) // hence the actual input voltage = analogRead(A7) * 0.00322 (3.3v/1024) * 1.47 (10k+4.7k voltage divider ratio)
@ -105,7 +108,8 @@ void loop() {
//SIG_OKTOCUTOFF must be HIGH when Pi is ON. During boot, this will take a while to happen (till it executes the "shutdowncheck" script //SIG_OKTOCUTOFF must be HIGH when Pi is ON. During boot, this will take a while to happen (till it executes the "shutdowncheck" script
//so I dont want to cutoff power before it had a chance to fully boot up //so I dont want to cutoff power before it had a chance to fully boot up
if (batteryLow || (PowerState == 1 && digitalRead(SIG_OKTOCUTOFF)==1)) //if (batteryLow || (PowerState == 1 && digitalRead(SIG_OKTOCUTOFF)==1))
if (batteryLow || (PowerState == 1 && analogRead(SIG_OKTOCUTOFF)>800))
{ {
// signal Pi to shutdown // signal Pi to shutdown
digitalWrite(SIG_REQUESTHALT, HIGH); digitalWrite(SIG_REQUESTHALT, HIGH);
@ -138,7 +142,8 @@ void loop() {
if (millis() - now > PIShutdownDelay_Min) if (millis() - now > PIShutdownDelay_Min)
{ {
// Pi signaling OK to turn off // Pi signaling OK to turn off
if (digitalRead(SIG_OKTOCUTOFF) == 0) //if (digitalRead(SIG_OKTOCUTOFF) == 0)
if (analogRead(SIG_OKTOCUTOFF) < 800)
{ {
PowerState = 0; PowerState = 0;
digitalWrite(LED, PowerState); //turn off LED to indicate power is being cutoff digitalWrite(LED, PowerState); //turn off LED to indicate power is being cutoff
@ -170,7 +175,8 @@ void loop() {
digitalWrite(SIG_REQUESTHALT, LOW); digitalWrite(SIG_REQUESTHALT, LOW);
} }
else if (PowerState == 1 && digitalRead(SIG_OKTOCUTOFF)==0) //else if (PowerState == 1 && digitalRead(SIG_OKTOCUTOFF)==0)
else if (PowerState == 1 && analogRead(SIG_OKTOCUTOFF)<800)
{ {
now = millis(); now = millis();
unsigned long now2 = millis(); unsigned long now2 = millis();
@ -212,4 +218,4 @@ void loop() {
Serial.println(" (plugged in)"); Serial.println(" (plugged in)");
else Serial.println(" (running from battery!)"); else Serial.println(" (running from battery!)");
} }
} }