建网站建设,济南集团网站建设方案,网站制作自己,seo优化专员收集关键词的方法arduino程序-MC猜数字5、6#xff08;基础知识#xff09; 1-23 MC猜数字-5 自定义函数自定义函数自定义清理显示内容函数displayClear#xff08;#xff09;带参数函数displayNumber带参数、返回值的函数 1-24 MC猜数字-6 完成制作显示0~9数字函数改造产生随机数字函数改… arduino程序-MC猜数字5、6基础知识 1-23 MC猜数字-5 自定义函数自定义函数自定义清理显示内容函数displayClear带参数函数displayNumber带参数、返回值的函数 1-24 MC猜数字-6 完成制作显示0~9数字函数改造产生随机数字函数改造范围0~10升级getRandomNumber上传程序串口监视器RandomSeed意念控制办法解密最终程序 1-23 MC猜数字-5 自定义函数 上节课 random函数产生随机数字再使用switch case语句将数字显示到LED数码管上
自定义函数
目前写的代码调用函数都是arduino工程人员开发好了
如重复的输出高低电平 重复的程序代码使用自己的函数让arduino重复工作
自定义清理显示内容函数displayClear
在loop{}函数外面定义这里在最下方定义了也没有在最上方函数声明就可以直接调用
如下所示无参数、无返回值的函数
调用函数在loop函数中调用 如下所示
Void 表示空的返回值无参数和下方类似
带参数函数displayNumber
将loop函数中的switch语句用函数表示
在loop{}函数外面定义
输入参数int类型如下
在loop函数中调用 带参数、返回值的函数
输入两个int类型参数 返回int类型的参数
随机函数产生最小数字和最大数字之间的数值
返回给定的两个参数之间的随机数此用来学习自定义函数
在loop中调用
若下方return为空返回的默认数值为0
1-24 MC猜数字-6 完成制作 最后一节课如何通过意念控制显示数字
回顾上一节三个函数
分析工作内容分成各个模块每个模块实现功能结构性更好
升级改造猜数字
显示0~9数字函数改造 产生随机数字函数改造范围0~10 升级getRandomNumber
串口监视器显示数字用于调试
上传程序
上传程序后串口监视器的文字内容显示
Print和println不同后面会换行
可以让运行的程序各个变量运行更方便看
字符串简单了解 再次升级程序
延时先改成5秒方便调试
编译上传先随机 此处如何通过串口监视器了解程序运行状况
同时观察到程序运行状况
其他语言的IDE有断点调试
而arduino IDE只能串口监视器了解程序运行中的状态
看程序 增加变量i作为while循环判断条件每次增加1循环5次跳出循环
程序运行到while循环结束后
调用函数
串口监视器
其他语言的IDE有断点调试
而arduino IDE只能串口监视器了解程序运行中的状态
一般是先上传程序再点击串口监视器观察程序状态 每次点击串口监视器的按钮arduino都会复位操作从程序的最开始的地方重新运行
每次启动串口监视器看着里面随机数字但是其为顺序不变的一排
每次点击串口监视器复位后都是一样的7,9.。。
RandomSeed
如何破除每次复位都是同一组数字的让每次arduino复位后不会产生相同排列的随机数字
再次上传点击关闭点击串口监视器就不一样了 AnalogReadA0 A0做模拟输入的一个引脚
读取AO引脚模拟输入的一个数值
再次更改程序 2号引脚解按键开关输入上拉模式 意念控制办法解密
在arduino中加入了一段代码可以在产生数字前就能判断下一个数字是什么数字
每次按下按键都会在最后显示数字之前产生一个符号其将高速下一个产生的数字是几
这个符号是怎么写进去的怎么实现进去的可以看官网实际案例
最终程序
http://www.taichi-maker.com/homepage/arduino-basic-tutorial-index/arduino-basic-tutorial-24/
/** MC猜数字 Ver. 1.0* * 本程序用于太极创客制作的《零基础入门学用Arduino教程》中* MC猜数字小制作。通过学习和搭建这个小装置我们希望您能够* 学会以下内容* * - LED数码管的原理和使用* - if...else if的概念和应用* - while循环的概念和应用* - switch case控制语句* - random函数的使用* - 建立和使用自定义函数三种形式无参数无返回值有参数无返回值有参数有返回值* - 通过串口监视器观察调试程序运行状况* * 电路连接* 有关本制作的详细电路连接资料请参阅太极创客网站的《零基础入门学用Arduino教程》相关网页。* * * 太极创客网站地址* www.taichi-maker.com* * 如您对我们有任何建议或意见请发邮件至* taichimaker163.com* * 同时您也可以通过我们的微信公众号以及微博获得更多太极创客的最新信息。* * This example code is in the public domain.* * 2017-04-23** 注* 目前科学技术尚无法实现意念控制。* 科技可以改变世界,但也有心怀不轨的人会利用科技制作* 我们不宜察觉的装置。而这些装置会被用于赌博或诈骗。* 我们一定要远离赌博相信科学。
*/int thisResult; //存储按键按下以后显示在数码管的数字。
int nextResult; //存储作弊数字也就是下一次按键按下后即将显示的数字。void setup() {pinMode(2, INPUT_PULLUP); //2号引脚上连接有按键开关将2号引脚设置为输入上拉模式int pinNumber 3; //设置3-9号引脚为输出模式while(pinNumber 9){pinMode(pinNumber, OUTPUT);pinNumber pinNumber 1;}randomSeed(analogRead(A0)); //为了每一次复位或断电后产生不同顺序的随机数字
}// the loop function runs over and over again forever
void loop() {if (!digitalRead(2)){ //读取2号引脚电平状态getRandomNumber(0,10); //用户按下按键后开始新一次猜数字游戏}displayNumber(thisResult); //将猜数字游戏结果显示在数码管中
}/*
用户在每一次按下按键后随机产生的数字将存储于nextResult变量中。
而实际显示在数码管上的数字是thisResult变量。
当thisResult即将显示在数码管前程序会将下一次显示的数字通过
图形暗示的形式显示在数码管上。具体程序如何显示暗示图形
请参阅displayCheat()函数说明。
*/
void getRandomNumber(int minNumber, int maxNumber){thisResult nextResult; int i; while(i 15){i i 1;nextResult random(0, 10);displayRandom(); //显示随机图案混淆注意力delay(50 i * 10); //让随机图案显示时间由快到慢增加混淆displayClear();}displayCheat(nextResult); //显示作弊图案用户可通过此函数所显示的图案//获知下次按键后将要出现在LED数码管上的数字。 //此图案是在用户每次按下按键后显示新的数字//前的最后一次图案显示delay(500);displayClear();
}//根据参数数值在LED数码管上显示数字
void displayNumber(int ledNumber){ switch(ledNumber){case 1: //显示1digitalWrite(4, HIGH);digitalWrite(7, HIGH); break; case 2: //显示2digitalWrite(3, HIGH);digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break; case 3: //显示3digitalWrite(3, HIGH);digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); break; case 4: //显示4digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); break; case 5: //显示5digitalWrite(3, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); break;case 6: //显示6digitalWrite(3, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break; case 7: //显示7digitalWrite(3, HIGH);digitalWrite(4, HIGH); digitalWrite(7, HIGH); break;case 8: //显示8digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break;case 9: //显示9digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); break;case 0: //显示默认digitalWrite(3, HIGH);digitalWrite(4, HIGH);digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); break;default:digitalWrite(4, HIGH); digitalWrite(5, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); digitalWrite(9, HIGH); }
}//清理显示内容
void displayClear(){digitalWrite(3, LOW);digitalWrite(4, LOW);digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); digitalWrite(9, LOW);
}//显示随机图案以混淆注意力
//使作弊图案显示时不易察觉。
void displayRandom(){int randomPin random(3,9);digitalWrite(randomPin, HIGH);
}//显示作弊图案。
void displayCheat(int number){switch(number){case 1: // 显示数字1作弊图案digitalWrite(3, HIGH);break; case 2: // 显示数字2作弊图案digitalWrite(6, HIGH); break; case 3: // 显示数字3作弊图案digitalWrite(4, HIGH); ;break; case 4: // 显示数字4作弊图案digitalWrite(5, HIGH); break; case 5: // 显示数字5作弊图案digitalWrite(9, HIGH); break;case 6: // 显示数字6作弊图案digitalWrite(7, HIGH); break; case 7: // 显示数字7作弊图案digitalWrite(8, HIGH);break;case 8: // 显示数字8作弊图案digitalWrite(6, HIGH);digitalWrite(4, HIGH);break;case 9: // 显示数字9作弊图案digitalWrite(9, HIGH);digitalWrite(7, HIGH);break;case 0: // 显示数字0作弊图案digitalWrite(3, HIGH);digitalWrite(8, HIGH); break;}
}