يمكن عن طريق هذه الدائرة تصميم مقياس فولت بسيط بعد توصيل العناصر الالكترونية مع بعضها و تحميل الكود للاردوينو
اولا : العناصر المطلوبة
ثالثا : عند تغذية الدائرة بالجهد الكهربائي ستبدا الشاشة بالعمل و تكون جاهزة لقياس الفولت كما هو موضح بالشكل التالي
رابعا : عند تغير قيمة الفولت على الـ A0 من 0 الى 5 ستبدأ الشاشة بعرض قيمة الفولت على شكل مؤشر سطري
مثلا اذا كان الجهد على الـ A0 يساوي 0.95 فولت ستكون طريقة عرض الشاشة هكذا
مثلا اذا كان الجهد على الـ A0 يساوي 2.55 فولت ستكون طريقة عرض الشاشة هكذا
مثلا اذا كان الجهد على الـ A0 يساوي 5 فولت ستكون طريقة عرض الشاشة هكذا
خامسا : تعمل الدائرة بشكل كامل على جهد تغذية 5 فولت
سادسا : لتحميل كود الاردوينو يرجى نسخه من هنا
سابعا : لتحميل ملف محاكاة الدائرة على برنامج Proteus 8 Professional يرجى الضغط على الرابط التالي
Arduino LCD Bargraph Voltmeter - altonji.net تحميل ● مركز تحميل العلوم والهندسة
ثامنا : فيديو يوضح عمل الدائرة بشكل عملي واقعي
اولا : العناصر المطلوبة
- Arduino Mega 2560
- LCD 16*2
- مقاومة متغيرة 1 كيلو عدد 2

ثالثا : عند تغذية الدائرة بالجهد الكهربائي ستبدا الشاشة بالعمل و تكون جاهزة لقياس الفولت كما هو موضح بالشكل التالي

رابعا : عند تغير قيمة الفولت على الـ A0 من 0 الى 5 ستبدأ الشاشة بعرض قيمة الفولت على شكل مؤشر سطري
مثلا اذا كان الجهد على الـ A0 يساوي 0.95 فولت ستكون طريقة عرض الشاشة هكذا

مثلا اذا كان الجهد على الـ A0 يساوي 2.55 فولت ستكون طريقة عرض الشاشة هكذا

مثلا اذا كان الجهد على الـ A0 يساوي 5 فولت ستكون طريقة عرض الشاشة هكذا

خامسا : تعمل الدائرة بشكل كامل على جهد تغذية 5 فولت
سادسا : لتحميل كود الاردوينو يرجى نسخه من هنا
PHP:
/*This code
* download from https://www.al-nassim.net
***************************************************************************************************************
Arduino LCD Bargraph Voltmeter Sketch
Input Voltage - A0; 0-5v
//Ahmad Altonji
//syria
//Mob:+963935888592
*/
int Bit_0 = 2;
int Bit_1 = 3;
int Bit_2 = 4;
int Bit_3 = 5;
int Bit_4 = 6;
int Bit_5 = 7;
int Bit_6 = 8;
int Bit_7 = 9;
int RS = 10;
int EN = 11;
//int BinaryValue = 0;
int VoltageBarValue = 0;
int LCD_Address = 0x80;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize I/O as output.
pinMode(Bit_0, OUTPUT); //Bit_0
pinMode(Bit_1, OUTPUT); //Bit_1
pinMode(Bit_2, OUTPUT); //Bit_2
pinMode(Bit_3, OUTPUT); //Bit_3
pinMode(Bit_4, OUTPUT); //Bit_4
pinMode(Bit_5, OUTPUT); //Bit_5
pinMode(Bit_6, OUTPUT); //Bit_6
pinMode(Bit_7, OUTPUT); //Bit_7
pinMode(RS, OUTPUT); //Bit_10
pinMode(EN, OUTPUT); //Bit_11
InitLCD();
}
void loop()
{
int analog_input = analogRead(A0);
ShowLCD_BarGraph (analog_input / 4.0 );//Normalize voltage full scale to 256
//to show 16 segments at Max = 5v;
}
void ShowLCD_BarGraph (int VoltageBarValue)
{
LCD_Address = 0x80;
while(VoltageBarValue > 0)
{
LCDC(LCD_Address);
LCDD(0xff);
VoltageBarValue=VoltageBarValue-15;
LCD_Address++;
}
// https://www.al-nassim.net
//-----------------Clear previous locations----
while(LCD_Address <= 0x8f)
{
LCDD(0xfe);
LCD_Address++;
}
}
void ConvertNumToBinary(int digit)
{
//--------------BIT_0------------
if(bitRead(digit, 0)== 1)
digitalWrite(Bit_0, HIGH);
if(bitRead(digit, 0)== 0)
digitalWrite(Bit_0, LOW);
//-------------------------------
//--------------BIT_1------------
if(bitRead(digit, 1) == 1)
digitalWrite(Bit_1, HIGH);
if(bitRead(digit, 1) == 0)
digitalWrite(Bit_1, LOW);
//-------------------------------
//--------------BIT_2------------
if(bitRead(digit, 2) == 1)
digitalWrite(Bit_2, HIGH);
if(bitRead(digit, 2) == 0)
digitalWrite(Bit_2, LOW);
//-------------------------------
//--------------BIT_3------------
if(bitRead(digit, 3) == 1)
digitalWrite(Bit_3, HIGH);
if(bitRead(digit, 3) == 0)
digitalWrite(Bit_3, LOW);
//-------------------------------
//--------------BIT_4------------
if(bitRead(digit, 4) == 1)
digitalWrite(Bit_4, HIGH);
if(bitRead(digit, 4) == 0)
digitalWrite(Bit_4, LOW);
//-------------------------------
// https://www.al-nassim.net
//--------------BIT_5------------
if(bitRead(digit, 5) == 1)
digitalWrite(Bit_5, HIGH);
if(bitRead(digit, 5) == 0)
digitalWrite(Bit_5, LOW);
//-------------------------------
//--------------BIT_6------------
if(bitRead(digit, 6) == 1)
digitalWrite(Bit_6, HIGH);
if(bitRead(digit, 6) == 0)
digitalWrite(Bit_6, LOW);
//-------------------------------
//--------------BIT_7------------
if(bitRead(digit, 7) == 1)
digitalWrite(Bit_7, HIGH);
if(bitRead(digit, 7) == 0)
digitalWrite(Bit_7, LOW);
//-------------------------------
}
void InitLCD()
{
delay(20);
//ConvertNumToBinary(0x30);
LCDC(0x30);
delay(5);
//-----------------
LCDC(0x30);
delay(5);
//-----------------
LCDC(0x30);
delay(1);
//-----------------
//; display clear
LCDC(0x01);
delay(1);
//-----------------
// ID=1,S=0 increment,no shift 000001 ID S
LCDC(0x06);
delay(1);
//-----------------
//D=1,C=B=0 set display ,no cursor, no blinking
LCDC(0x0c);
delay(1);
//------------------
// dl=1 ( 8 bits interface,n=12 lines,f=05x8 dots)
LCDC(0x38);
delay(1);
//------------------
}
void LCDC(int command)
{
//RS = 0 ;EN = 0 ;
digitalWrite(RS, LOW);
digitalWrite(EN, LOW);
ConvertNumToBinary(command);
//; EN=1,RS=0
digitalWrite(RS, LOW);
digitalWrite(EN, HIGH);
delay(1);
//; EN=0,RS=0
digitalWrite(RS, LOW);
digitalWrite(EN, LOW);
delay(1);
}
//https://www.al-nassim.net
void LCDD(int data)
{
//RS = 1 ;EN = 0 ;
digitalWrite(RS, HIGH);
digitalWrite(EN, LOW);
ConvertNumToBinary(data);
//; EN=1,RS=1
digitalWrite(RS, HIGH);
digitalWrite(EN, HIGH);
delay(1);
//; EN=0,RS=1
digitalWrite(RS, HIGH);
digitalWrite(EN, LOW);
delay(1);
}
سابعا : لتحميل ملف محاكاة الدائرة على برنامج Proteus 8 Professional يرجى الضغط على الرابط التالي
Arduino LCD Bargraph Voltmeter - altonji.net تحميل ● مركز تحميل العلوم والهندسة
ثامنا : فيديو يوضح عمل الدائرة بشكل عملي واقعي
التعديل الأخير: