グラフ描画機能付きの電流計
- 基板を起こすまでもなさそう
ロードマップ
試作できた
> oembed
<<
試作
- ターゲットはLEDと電源にしてみる
> code
Adafruit_INA219 ina219;
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
int index = 0;
void setup() {
Serial.begin(9600);
u8g2.begin();
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
u8g2.clearBuffer(); // clear the internal memory
}
void loop() {
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);
index = (index + 1)%128;
dtostrf(current_mA, 5,2, bbuf);
sprintf(currentbuf, "%smA", bbuf);
u8g2.setFont(u8g2_font_ncenB08_tr); // choose a suitable font
u8g2.setDrawColor(0);
u8g2.drawBox(0,0,128,10);
u8g2.drawBox(index,0,1,64);
u8g2.setDrawColor(1);
u8g2.drawBox((index + 128 + 1)%128,10,1,63-10);
u8g2.drawPixel(index, 63 - (int)(current_mA * 64/10)); // max 10mA
Serial.println(63 - (int)(current_mA * 64/10));
u8g2.drawStr(32,10,currentbuf);
u8g2.sendBuffer();
delay(10);
}
<<
要件・設計
- 構成
- Arduino Nano
- 乾電池(4本)
- スイッチ少し
- 機能
- 時系列でログが残る電流計
- といってもそこまで長いログは保持できない
- 2KB
- {{calc 2000/8}}pts
- OLEDの横幅である128くらいは取れるかな
- intervalを指定できる
- 測定終了を指定できる
> mermaid
graph LR
Arduino --I2C--> OLED
Arduino --I2C--> INA219
Battery --> Arduino
INA219 --> target
<<