Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Arduino Power Monitor v1.2
- *
- * learnelectronics
- * 18 JUL 2017, 25 JULY 2017
- *
- * www.youtube.com/c/learnelectronics
- */
- #include <Wire.h> //wire library for I2C comms
- #include <INA219.h> //driver for the ina219
- #include <DS3231.h>
- #include <SPI.h> //Serial library for SD card shield
- #include <SD.h>
- INA219 monitor; //create instance of the INA219 called monitor
- DS3231 Clock;
- const int chipSelect = 4;
- byte year, month, date, DoW, hour, minute, second;
- void setup() {
- Serial.begin(9600);
- Wire.begin();
- monitor.begin(); //start the ina219
- Serial.print("Initializing SD card...");
- if (!SD.begin(chipSelect)) {
- Serial.println("Card failed, or not present");
- // don't do anything more:
- return;
- }
- Serial.println("card initialized.");
- }
- void loop() {
- Clock.getTime(year, month, date, DoW, hour, minute, second);
- Serial.print("shunt V: "); //send title to serial monitor
- Serial.print(monitor.shuntVoltage() * 1000, 2); //send shunt voltage to serial monitor in mV with 2 dec places
- Serial.println(" mV"); //send units to serial monitor
- Serial.print("shunt I: ");
- Serial.print(monitor.shuntCurrent() * 1000, 2);
- Serial.println(" mA");
- Serial.print("bus V: ");
- Serial.print(monitor.busVoltage(), 2);
- Serial.println(" V");
- Serial.print("bus P: ");
- Serial.print(monitor.busPower() * 1000, 2);
- Serial.println(" mW");
- Serial.println("");
- Serial.print(hour, DEC);
- Serial.print(":");
- Serial.print(minute, DEC);
- Serial.print(":");
- Serial.print(second, DEC);
- Serial.print(" ");
- Serial.print(date, DEC);
- Serial.print("/");
- Serial.print(month, DEC);
- Serial.print("/");
- Serial.println(year, DEC);
- String dataString = ""; //create an empty string var called dataString
- float shuntVolt = (monitor.shuntVoltage() * 1000); //hold value of monitor.shuntVoltage() in float var called shuntVolt
- float shuntCurr = (monitor.shuntCurrent() * 1000); //hold value of monitor.shuntCurent() in float var called shuntCurr
- float busVolt = (monitor.busVoltage()); //hold value of monitor.busVoltage() in float var called busVolt
- float busPow = (monitor.busPower() * 1000); //hold value of monitor.busPower() in float var called busPow
- dataString += String(date); //add the var date, cast as a string to the current dataString var
- dataString += ","; //add a comma to the current dataString
- dataString += String(month); //and so on
- dataString += ","; //and so forth
- dataString += String(year);
- dataString += ",";
- dataString += String(hour);
- dataString += ",";
- dataString += String(minute);
- dataString += ",";
- dataString += String(second);
- dataString += ",";
- dataString += String(shuntVolt);
- dataString += ",";
- dataString += String(shuntCurr);
- dataString += ",";
- dataString += String(busVolt);
- dataString += ",";
- dataString += String(busPow);
- File dataFile = SD.open("datalog.txt", FILE_WRITE); // if the file is available, write to it:
- if (dataFile) {
- dataFile.println(dataString);
- dataFile.close();
- Serial.println(dataString); // print to the serial port too:
- }
- else { // if the file isn't open, pop up an error:
- Serial.println("error opening datalog.txt");
- }
- delay(5000); //wait some amount of time between logging (you can set your own)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement