If you need an Arduino to shut off from within your Sketch, this is the solution.
We will explore wiring the Pololu Pushbutton Power Switch, programming the Arduino to shut off the power, and making the unit "power on" only.
The Pololu Pushbutton Power Switch comes in two versions - the SV version geared towards 4.5V-20V range, and the LV which specifies 2.5V-7.0V range. I will use a 9V battery for this demo, and thus the SV version of the power switch.
Webpage for the Pololu Pushbutton Power Switch
1 - Arduino (I am using an UNO R3 for this Demo)
2 - Solderless Breadboard
3 - Pololu Pushbutton Power Switch SV
4 - 9V battery and holder with power leads
5 - 2.1mm male power jack to plug directly into the Arduino
Step 1: Getting Familiar With the Pololu Power Switch
The power switch has 2 connectors each for GND, VIN and VOUT, allowing multiple attachment points for your projects. A digital connection labeled OFF allows a 5V signal to turn the unit off. The kit comes with 0.1" headers, making insertion into a Solderless Breadboard effortless, or into a 18-pin DIP for your project.
It also sports 2 connectors for a momentary contact switch, allowing you to use the provided switch directly on the board, or solder your own leads for a switch (or switches) separate from the unit.
Step 2: Setting Up the Pololu Power Switch
Attach the 9V battery leads Red to VIN, Black to GND on the Pololu Power Switch
I used a 2.1mm male power jack to plug directly into the Arduino, which regulates the voltage to something the Arduino can handle easily. GND on the Pololu Power Switch goes to the outer connector on the power jack, and VOUT (Red) goes to the inner connector. (See photo)
Pressing the momentary contact switch should power up the Arduino. A second press should turn it off. This is the same behaviour as a standard On/Off switch.
You can choose to either solder the included momentary contact switch to the PCB, or wire it separately to the Breadboard. Wiring it separately means you can use a different momentary contact switch, and/or mount it to your project cabinet. In the early shots of this project, I mounted the momentary contact switch to the PCB for simplicity of the photos, but in the later shots the momentary contact switch is mounted on the Solderless breadboard.
Step 3: Connecting the Pololu Pushbutton Power Switch to the Arduino, Upload Sketch
Connect Digital pin 7 on the Arduino to the OFF pin of the Pololu Pushbutton Power Switch. Upload the sketch below.
The Pololu Power Switch will turn off the power anytime it gets a HIGH signal on the OFF pin. This simplistic Sketch does nothing more the wait 5 seconds before turning off the power. The same concept applies in any Sketch you are working on - when the conditions you have decided on are met...Set the pin connected to the Pololu Power Switch's OFF connector HIGH, and the power gets shut off.
You can connect the Pololu Power Switch to any of the Arduino Output pins, but you will need to modify the Sketch to use the same pin.
The photo shows the momentary contact switch mounted on the breadboard, and the OFF line coming from the Arduino
//Prepare Digital Pin 7 on the Arduino for output
//Set digital pin 7 LOW. HIGH turns off the Pololu Pushbutton Power Switch
//Wait 5 seconds
//Setting Digital pin 7 HIGH turns off the Pololu Pushbutton Power Switch
Step 4: Pololu Pushbutton Power Switch As a "Power On" Only Switch
In the application I was researching for the Pololu Pushbutton Power Switch, it was highly desirable to have the momentary contact switch only turn the power ON, and never OFF - the Arduino needed to "decide" in the Sketch when the correct time to power down was.
Fortunately there is a simple way to make this work.
Instead of wiring the momentary contact switch into the 2 spots marked on the PCB, instead wire one side of your momentary contact switch to the connector CLOSEST TO THE END of the board, and the other side to GND. This will allow the momentary contact switch to turn the power on, but not off again. To power the unit down, either remove the power, or have the Arduino shut it off using the OFF connector.