ربما أراد الجميع إنشاء الروبوت المستقل الخاص بهم ، لتحديد مستوى البطارية وعرضها على الشاشة أو في وحدة التحكم. هذه الوظيفة ضرورية بشكل أساسي لتصحيح الأخطاء ، ولكن في بعض الحالات ، يعد تحديد الرسوم جزءًا مهمًا من وظائف الروبوت. تتمثل صعوبة تنفيذ هذه المهمة في الحد من أقصى جهد دخل في المحول التناظري إلى الرقمي (5 فولت ) ، بالإضافة إلى القفزات الضخمة في القيمة التي تم الحصول عليها. في هذا المنشور ، أود أن أظهر طريقي لقراءة الجهد من البطاريات وتحديد الشحنة.1 Ω :

, 
10, 5, , - .
Arduino. 5. :
void setup() {
  Serial.begin(9600);
  pinMode(A5, INPUT);
}
void loop() {
  float k = 2;
  float voltage = k*analogRead(A5);
}
, . 1024:
void loop() {
  float k = 2/1024;
  float voltage = k*analogRead(A5);
}
, voltage :
  float k = 2*1.12;
  float voltage = k*4.5f/1024*analogRead(A5);
حصلنا على قفزة قوية لأعلى ولأسفل ، غالبًا ما لا تكون مشابهة لما هو مطلوب. لإصلاح هذا الخطأ ، أضف تصفية التمرير المنخفض باستخدام عامل التنعيم الأكثر ملاءمة لمشروعك:
void loop() {
  float k = 2*1.12;
  float voltage = k*4.5f/1024*analogRead(A5);
  float chargeLevel_procents;
  float chargeLevel;
  float y;
  int z;
  
  float A_v = voltage; 
  float A_K = 0.3; 
  static float A_y; 
  
  A_y = A_y - A_K * (A_y - A_v);
}
الآن يبقى قياس الجهد على البطاريات المشحونة بالكامل وتفريغها بالكامل. في حالتي ، الفرق هو بالضبط 1V.بعد ذلك ، تحتاج إلى العثور على شحن البطارية في المئة:  y = A_y / 8.4 * 100;
  
  chargeLevel_procents = y;
  chargeLevel = z;
نحن بحاجة فقط إلى ترجمة هذا إلى رمز البطارية (أو في المربعات ، مثل المنجم) وإخراجها إلى وحدة التحكم:
if(chargeLevel_procents >= 0 && chargeLevel_procents < 33) {
    z = 1; 
  }
  
  else if(chargeLevel_procents >= 33 && chargeLevel_procents < 66) {
    z = 2; 
  }
  
  else if(chargeLevel_procents >= 66 && chargeLevel_procents <= 100) {
    z = 3; 
  }
Serial.print("\t Voltage: ");
    Serial.print(A_y);
    Serial.print(" V ");
    Serial.print("\t Charge: ");
    if(z == 1) {
      Serial.print("■");
    }
    else if(z == 2) {
      Serial.print("■■");
    }
    else if(z == 3) {
      Serial.print("■■■");
    }
    else {
      Serial.print("ERROR");
    }
    Serial.print("\r\n");  
لعرض النتيجة ، أوصي باستخدام PuTTY ، لأنه يدعم أي ترميز ، على عكس "مراقب المنفذ" المعتاد في Arduino IDE.