21471| 26
|
简易抢答器(老CASE,新器材) |
本帖最后由 hnyzcj 于 2015-2-7 21:15 编辑 【作品介绍】 在知识竞赛、文体娱乐活动(抢答赛活动)中,为了能准确、公正、直观地判断出抢答者的座位号,主办方通常会使用抢答器。而今抢答器可以通过数据来说明裁决结果的准确性、公平性。使比赛大大增加了娱乐性的同时,也更加公平、公正。我们今天就通过使用LED、蜂鸣器器和按钮来组建一个4路信号抢答器。 【作品展示】 孩子玩的很嗨皮。 视频展示 http://www.tudou.com/programs/view/LEeM4HzsA5w/ 【作品器材】
今天使用了DF的工程本,瞬间有种“攻城狮”的赶脚,哈哈,嘚瑟一下。 【制作步骤】 1.弄个盒子,作为抢答器,必须要有个像样的盒子,最起码看起来像个抢答器,嘿嘿,那就弄个如下图 怎么弄出来的……此处省去100字吧。恩,就这样吧。 2.作品设计图纸,草稿纸上没有做蜂鸣器,晚上才加上的。看看这工程本,就是有感觉,啧啧。 3.为了让LED在面板安装的位置大致合适,决定对其划线打孔。 画出大致的位置,并在孔位做上标记。下面开始打孔了,不过由于孔位较大,微转已经无法满足需要。从通用教师扒出来的工具 然后,然后,开始不停的打孔,由于第一次使用,孔位打的那个是,上上下下, 4.安装器材,将LED,按钮,主控板,安装在上面,就是这样下图自己看看, LED从左向右依次为数字口:4,5,6,7 按钮从左向右依次为数字口:8,9,10,11 噹噹噹噹噹 【项目连线】 LED从左向右依次为数字口:4,5,6,7 按钮从左向右依次为数字口:8,9,10,11 蜂鸣器数字口:3 【程序代码】 int yellowLed = 4; // 选择灯的引脚 int blueLed = 5; // 选择灯的引脚 int redLed = 6; // 选择灯的引脚 int whiteLed = 7; // 选择灯的引脚 int yellowPin =8; // 传感器连接引脚3 int bluePin =9; // 传感器连接引脚3 int redPin =10; // 传感器连接引脚3 int whitePin =11; // 传感器连接引脚3 void setup() { pinMode(yellowLed, OUTPUT); // 定义灯的引脚为输出引脚 pinMode(blueLed, OUTPUT); // 定义灯的引脚为输出引脚 pinMode(redLed, OUTPUT); // 定义灯的引脚为输出引脚 pinMode(whiteLed, OUTPUT); // 定义灯的引脚为输出引脚 pinMode(yellowPin, INPUT); // 定义按键引脚为输入引脚 pinMode(bluePin, INPUT); // 定义按键引脚为输入引脚 pinMode(redPin, INPUT); // 定义按键引脚为输入引脚 pinMode(whitePin, INPUT); // 定义按键引脚为输入引脚 } void buzzer()//蜂鸣器发出“嘀”声音子程序 { int i; for(i=0;i<180;i++) { digitalWrite(3,HIGH);//发声音 delay(1);//延时1ms digitalWrite(3,LOW);//不发声音 delay(1);//延时ms } } void loop() { int val1 = digitalRead(yellowPin); //读取输入值 int val2 = digitalRead(bluePin); //读取输入值 int val3 = digitalRead(redPin); //读取输入值 int val4 = digitalRead(whitePin); //读取输入值 //int val5 = digitalRead(inputPin); //读取输入值 if(val1==LOW&&val2==LOW&&val3==LOW&&val4==LOW) { return;//跳出本子函数 } if (val1 == HIGH&&val2==LOW&&val3==LOW&&val4==LOW) { // 检查输入是否为高,这里高为没有按下 buzzer(); digitalWrite(yellowLed, HIGH); // 灯关闭状态 digitalWrite(blueLed, LOW); // 灯关闭状态 digitalWrite(redLed, LOW); // 灯关闭状态 digitalWrite(whiteLed, LOW); // 灯关闭状态 } else{ if (val2 == HIGH&&val1 == LOW&&val3==LOW&&val4==LOW) { // 检查输入是否为高,这里高为没有按下 buzzer(); digitalWrite(yellowLed, LOW); // 灯关闭状态 digitalWrite(blueLed, HIGH); // 灯关闭状态 digitalWrite(redLed, LOW); // 灯关闭状态 digitalWrite(whiteLed, LOW); // 灯关闭状态 } else{ if (val3 == HIGH&&val1 == LOW&&val2==LOW&&val4==LOW) { // 检查输入是否为高,这里高为没有按下 buzzer(); digitalWrite(yellowLed, LOW); // 灯关闭状态 digitalWrite(blueLed, LOW); // 灯关闭状态 digitalWrite(redLed, HIGH); // 灯关闭状态 digitalWrite(whiteLed, LOW); // 灯关闭状态 } else{ if (val4 == HIGH&&val1==LOW&&val2==LOW&&val3==LOW) { // 检查输入是否为高,这里高为没有按下 buzzer(); digitalWrite(yellowLed, LOW); // 灯关闭状态 digitalWrite(blueLed, LOW); // 灯关闭状态 digitalWrite(redLed, LOW); // 灯关闭状态 digitalWrite(whiteLed, HIGH); // 灯关闭状态 } else{ return;//跳出本子函数 } } } } } 【总结】 这个CASE实际上并不复杂,有兴趣的朋友可以对其进行改造。例如在抢答器的上部加LCD屏,让主持人可以轻易的看到抢答的结果。而不用把脖子伸的老长去抢答器的前面看哦。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed