بنابراین در این آموزش قصد داریم ولتاژ باتری LiPo متصل به برد Adafruit nRF52 Feather Bluefruit را اندازه گیری کرده و در کنسول سریال نمایش دهیم. ابتدا این کد را از طریق آردوینو IDE روی برد آپلود کنید.
#define VBAT_PIN (A7)
#define VBAT_MV_PER_LSB (0.73242188F)
#define VBAT_DIVIDER (0.71275837F)
#define VBAT_DIVIDER_COMP (1.403F)
int vbat_raw;
uint8_t vbat_per;
float vbat_mv,vbat_v;
void setup(void) {
Serial.begin(115200);
analogReference(AR_INTERNAL_3_0);
analogReadResolution(12); // Can be 8, 10, 12 or 14
delay(1);
}
void loop(void) {
vbat_raw = analogRead(VBAT_PIN);
vbat_per = mv_to_percent(vbat_raw * VBAT_MV_PER_LSB);
vbat_mv = (float)vbat_raw * VBAT_MV_PER_LSB * VBAT_DIVIDER_COMP;
vbat_v = vbat_mv/1000;
Serial.print("ADC = ");
Serial.print(vbat_raw * VBAT_MV_PER_LSB);
Serial.print(" mV (");
Serial.print(vbat_raw);
Serial.print(") ");
Serial.print("LIPO = ");
Serial.print(vbat_v);
Serial.print(" V (");
Serial.print(vbat_per);
Serial.println("%)");
delay(4000);
}
uint8_t mv_to_percent(float mvolts) {
uint8_t battery_level;
if (mvolts >= 3000) {
battery_level = 100;
} else if (mvolts > 2900) {
battery_level = 100 - ((3000 - mvolts) * 58) / 100;
} else if (mvolts > 2740) {
battery_level = 42 - ((2900 - mvolts) * 24) / 160;
} else if (mvolts > 2440) {
battery_level = 18 - ((2740 - mvolts) * 12) / 300;
} else if (mvolts > 2100) {
battery_level = 6 - ((2440 - mvolts) * 6) / 340;
} else {
battery_level = 0;
}
return battery_level;
}
سپس یک باتری LiPo با کانکتور JST را به کانکتور برد Adafruit nRF52 وصل کنید. سپس از کابل USB برای شارژ برد استفاده کنید. اطمینان حاصل کنید که LED زرد رنگ CHG در هنگام شارژ روشن است. اکنون کنسول سریال را باز کنید تا وضعیت شارژ باتری را مشاهده کنید، هنگامی که LED زرد رنگ «CHG» خاموش شد که به این معنی است که شارژ باتری کامل شده است.