I use the LED bubble as a test to see if the INA219 can measure the current and voltage, and turns out work out just fine.

The top part is when the bubble light up, the bottom part is when the bubble is off.
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
// constants won't change. They're used here to set pin numbers:
const int buttonPin = 2; // the number of the pushbutton pin
const int ledPin = 12; // the number of the LED pin
// variables will change:
int buttonState = 0; // variable for reading the pushbutton status
void setup(void)
{
Serial.begin(115200);
while (!Serial) {
// will pause Zero, Leonardo, etc until serial console opens
delay(1);
}
uint32_t currentFrequency;
Serial.println("Hello!");
// Initialize the INA219.
// By default the initialization will use the largest range (32V, 2A). However
// you can call a setCalibration function to change this range (see comments).
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
// To use a slightly lower 32V, 1A range (higher precision on amps):
//ina219.setCalibration_32V_1A();
// Or to use a lower 16V, 400mA range (higher precision on volts and amps):
//ina219.setCalibration_16V_400mA();
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
Serial.println("Measuring voltage and current with INA219 ...");
}
void loop(void)
{
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(1000);
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
digitalWrite(ledPin, HIGH);
} else {
// turn LED off:
digitalWrite(ledPin, LOW);
}
}
This is the code I use to read the above data from the bubble
I use the same wiring as the video shows at "6:24"
Then I use the exact same method, want to measure the current and voltage change of the motor
The only difference is I connect the power source (blue arrow: 12V, 1A) to the qwiic step board to run the motor,
then I use the same wiring method to connect INA219 (purple board) to the motor power wire.
INA219 turns out extremely hot right after I run the program.
I was afraid I would burn out the board so I stop everything right away.
{
Serial.begin(115200);
Wire.begin();
//Check if Qwiic Step is correctly connected to I2C
if (motor.begin() == false)
{
Serial.println("Device did not acknowledge! Freezing.");
while (1)
;
}
Serial.println("Motor acknowledged.");
pinMode(buttonpin, INPUT);
while (!Serial) {
// will pause Zero, Leonardo, etc until serial console opens
delay(1);
}
uint32_t currentFrequency;
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
}
void loop()
{
buttonstate = digitalRead(buttonpin);
buttonstate2 = digitalRead(buttonpin2);
if (buttonstate == HIGH){
motor.setModeRunContinuous(); //Tell the motor to run at the given speed... forever
motor.setSpeed(-350); // give the motor a speed
//Speeds are in steps per second.
//Positive is clockwise, negative is counter clockwise.
//Speeds of more than 1000 are unreliable.
//Decimal values are allowed. 0.1 = 1 step every ten seconds.
}
delay (2000);
{
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(500);
}
if (buttonstate2 == HIGH){
motor.stop();
}
}
This is the code I run with, but never actually read the data because I stop it immediately.
Blackboad, Qwiic Step
redboard
INA219
power source: 12v, 1A
motor: random motor, can't find much information.