الكود البرمجي
// 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); }