الكود البرمجي
// Max Voltage ( reference voltage )
float vPow = 5.0;
// first resistor 10K ohm
float r1 = 10000;
// second resistor 1k Ohm
float r2 = 1000;
void setup() {
Serial.begin(9600);
Serial.println("--------------------");
Serial.println("DC VOLTMETER");
Serial.print("Maximum Voltage: ");
Serial.print((int)(vPow / (r1 / (r1 + r2))));
Serial.println("V");
Serial.println("--------------------");
Serial.println("");
delay(2000); //wait 2000 ms before starting
}
void loop() {
float v = (analogRead(0) * vPow) / 1024.0;
float v2 = v / (r1 / (r1 + r2));
Serial.print("Voltage (Volts) = ");
Serial.println(v2);
}
شرح الكود :
في البداية نقوم بالإعلان عن المتغيرات التي سيتم استخدامها في البرمجة. سيتم استخدام المتغير vPow لتسجيل قيمة الجهد المرجعي المستخدم في هذه الحالة 5 فولت. والمتغير r1 لتسجيل قيمة المقاومة الأولى المستخدمة في الـ Voltage Divider . والمتغير r2 لتسجيل قيمة المقاومة الثانية المستخدمة في voltage Divider.
// Max Voltage ( reference voltage ) float vPow = 5.0; // first resistor 10K ohm float r1 = 10000; // second resistor 1k Ohm float r2 = 1000;
في الدالة ()setup نقوم بضبط الإعدادات، وهي تشغيل الشاشة التسلسلية لنستطيع عرض قيمة الجهد المقاس.كما نقوم بعرض اقصى قيمة يمكن قياسها ومن ثم الإنتظار لمدة ثانيتين قبل البدء في الحسابات ( من الممكن اهمال هذا التأخير الزمني).
void setup() {
Serial.begin(9600);
Serial.println("--------------------");
Serial.println("DC VOLTMETER");
Serial.print("Maximum Voltage: ");
Serial.print((int)(vPow / (r1 / (r1 + r2))));
Serial.println("V");
Serial.println("--------------------");
Serial.println("");
delay(2000); //wait 2000 ms before starting
}
في الدالة ()loop، نقوم بقراءة قيمة الجهد على المقاومة 10k ohm، ثم عن طريق استخدام قانون Voltage Divider نقوم بحساب الجهد الكلي وعرضة على الشاشة التسلسلية.
void loop() {
float v = (analogRead(0) * vPow) / 1024.0;
float v2 = v / (r1 / (r1 + r2));
Serial.print("Voltage (Volts) = ");
Serial.println(v2);
}

