本文主要介绍如何用Arduino开发板制作一个简单的智能电子表决器。这个项目的基本思路是做一个电子投票机,有助于消除人工投票系统和以往电子投票系统的舞弊现象。

该系统有n个键,其中n是政党的数量。在这里,选民将被允许继续从按钮面板中选择他们喜欢的候选人。然后在LCD上显示最终的投票结果,让投票者满意。最后,按下结果按钮,可以自动计算结果。

必需的组件

Arduino UNO开发板

1602液晶显示屏

4个按钮

10K电位计

连接线

面包板

功能框图

在本文中,我们为参加选举的四个不同的候选人使用了四个按钮。我们可以根据需要增加候选人的数量。当任何一个投票者按下四个按钮中的任何一个时,投票值将一次增加一个。整个投票过程结束后,可以按结果按钮显示结果。

示意电路图

如上所示组装电路。将五个按钮连接到Arduino7、6、5、4、3的数字引脚。同样,将LCD4、6、11、12、13、14的引脚连接到13、12、1: 00的Arduino的数字引脚。

项目的工作流程

Arduino是这个项目中系统的心脏和大脑。Arduino控制整个投票过程,如读取按钮、增加投票值、生成结果以及将投票和结果发送到液晶屏。

在这里,我们添加了五个按钮,分别代表A队、B队、C队和D队,最后一个按钮用于计算和显示结果。

这里有一些该项目的图片,清楚地说明了该项目的工作。

实现代码

#includeLiquidCrystal lcd(13,12,11,10,9,8);#定义S1 7 #定义S2 6 #定义S3 5 #定义S4 4 #定义S5 3 int vote 1=0;int vote 2=0;int vote 3=0;int vote 4=0;void setup(){pinMode(S1,输入);pinMode(S2,输入);pinMode(S3,输入);pinMode(S4,输入);pinMode(S5,输入);lcd.begin(16,2);lcd.print(“电子”);lcd.setCursor(0,1);lcd.print('投票机');延时(4000);digitalWrite(S1,高);digitalWrite(S2,高);digitalWrite(S3,高);digitalWrite(S4,高);digitalWrite(S5,高);LCD . clear();lcd.setCursor(1,0);LCD . print(' A ');lcd.setCursor(5,0);LCD . print(' B ');lcd.setCursor(9,0);LCD . print(' C ');lcd.setCursor(13,0);LCD . print(' D ');}void loop(){lcd.setCursor(1,0);LCD . print(' A ');lcd.setCursor(1,1);LCD . print(vote 1);lcd.setCursor(5,0);LCD . print(' B ');lcd.setCursor(5,1);LCD . print(vote 2);lcd.setCursor(9,0);LCD . print(' C ');lcd.setCursor(9,1);LCD . print(vote 3);lcd.setCursor(13,0);LCD . print(' D ');lcd.setCursor(13,1);LCD . print(vote 4);if(digital read(S1)==0)vote 1;while(digital read(S1)==0);if(digital read(S2)==0)vote 2;while(digital read(S2)==0);if(digital read(S3)==0)vote 3;while(digital read(S3)==0);if(digital read(S4)==0)vote 4;while(digital read(S4)==0);if(digital read(S5)==0){ int vote=vote 1 vote 2 vote 3 vote 4;if(vote){ if((vote 1 vote 2 vote 1 vote 3 vote 1 vote 4)){ LCD . clear();lcd.print('A是赢家');延时(3000);LCD . clear();} else if((vote 2 vote 1 vote 2 vote 3 vote 2 vote 4)){ LCD . clear();lcd.print('B是赢家');延时(3000);LCD . clear();} else if((vote 3 vote 1 vote 3 vote 2 vote 3 vote 4)){ LCD . clear();lcd.print('C是赢家');延时(3000);LCD . clear();} else if(vote 4 vote 1 vote 4 vote 2 vote 4 vote 3){ LCD . set cursor(0,0);LCD . clear();lcd.print('D是赢家');延时(3000);LCD . clear();} else if(vote 4 vote 1 vote 4 vote 2 vote 4 vote 3){ LCD . set cursor(0,0);LCD . clear();lcd.print('D是赢家');延时(3000);LCD . clear();} else { LCD . clear();lcd.print('捆绑或');lcd.setCursor(0,1);lcd.print(“无结果”);延时(3000);LCD . clear();} } else { LCD . clear();lcd.print('无投票…');延时(3000);LCD . clear();} vote 1=0;vote 2=0;vote 3=0;vote4=0,vote=0;LCD . clear();}}hfy