首先感谢太极创客平台提供的视频讲解和抖音名字不好取的雷老师的视频讲解 通过太极创客猜数字得到的灵感 先上代码
#include <LiquidCrystal_I2C.h> ?
//包含lcd头文件 LiquidCrystal_I2C lcd(0x27,16,2);
//实例化对象为lcd,地址,列,行 int randomNum; ? //声明一个整数变量,随机数 int Time = 0; ? ? ? ?
/*声明一个变量并赋值为零,这个变量是为了按键使用*/
void setup(){ ? pinMode(2,INPUT_PULLUP);
?//设置2引脚为输入上拉模式
? ?randomSeed(analogRead(A0)); ?/*生成随机种子,让每次结果不同*/ ? Serial.begin(9600);
?/*设置串口速率,这个可以不用,我是为了看看按键情况*/ ? lcd.init(); ? ?//初始化lcd ? lcd.backlight(); ? ?//开启lcd背光 ? ?}
void loop(){ ? ?? ? lcd.setCursor(5,0); ??//设置光标位置第6列第一行 ? ? /*show the name 第一次按下显示名字,两个if和while是按键消抖的软处理,用time来把控按键次数可循环*/ ? if(digitalRead(2) == 0 && Time == 0){ ? ? delay(5); ? if(digitalRead(2) == 0 && Time == 0){ ? ? ? lcd.clear(); ? ? Serial.println(digitalRead(2)); ?//这行可以不写 ? ? randomNum=displayrandomNum(1,4);
/*这里调用了displayrandomNum函数,其实也可以写成random(1,4)直接将随机数值赋值给randomNum,按照人数可以修改displayrandomNum中后面的数字,由于名字不onemore所以按照人数加1的数填写最大值就好了,如果加名字请到函数randomName中添加,现在的随机数是1-3,将得到的数赋值给randomNum*/ ? ? ? randomName(randomNum);
/*调用randomName并将随机得到的数值作为参数*/ ? ? ? Time = 1; ? ? ? while(digitalRead(2) == 0); ? ? ? ? } ? } ? /*show the chengfa 英文惩罚单词太难了哈哈哈 所以就这么写了,同样按键消抖还有time控制按键循环和次数,原理和上面一样,不一样的是👇请看*/ ? if(digitalRead(2) == 0 && Time == 1){ ? ? delay(5); ? if(digitalRead(2) == 0 && Time == 1){ ? ? ? lcd.clear(); ? ? Serial.println(digitalRead(2)); ?//这行可以不写 ? ? ? randomNum=displayrandomNum(1,5);
/*不一样的在这,现在设定的随机数是1-4 四就是最大数,往后看。因为惩罚现在就有三个,如果随机数是4,那么有机会可以one more一次,也可以自行添加惩罚方式,添加后想着最大数值需要加2,才能有机会onemore,添加惩罚具体看chengfa()函数注释*/ ? ? ? chengfa(randomNum);
//调用函数 同上 ? ? ? Time = 0; ? ? ? while(digitalRead(2) == 0); ? ? ? ? } ? } ? } ?? int displayrandomNum(int mini,int Max) //使用调用是给的参数产生随机数,并将值返回 ? ? { ? ? int result; ? ? result=random(mini,Max); ? ? return result; ? ? } ? ?? void randomName(int Num){ ? /*将随机的名字显示在屏幕上,如果需要增加人名添加case 4: Name4,case 5: Name5,…别忘了break,名字就不onemore了所以按照人数加1的值填写参数就行*/ ? switch(Num) ? { ? ? case 1:lcd.print("Name1"); ? ? break; ? ?? ? ? case 2:lcd.print("Name2"); ? ? break; ? ?? ? ? case 3:lcd.print("Name3"); ? ? break; ? ?? ? ? default:lcd.print("One More"); ? ? break; ?? ? } } ?? void chengfa(int iNum){ ? /*原理和上一个函数一样,记得要最大数加2才能有onemore,one more直接返回loop()函数,重新按键产生随机名字,也许可以免罚也许还是那个人,哈哈哈*/ ? switch(iNum) ? { ? ? case 1:lcd.print("TieTiao"); ? ? break; ? ?? ? ? case 2:lcd.print("TanNaobeng"); ? ? break;
? ? case 3:lcd.print("DunZheWan"); ? ? break; ? ?? ? ? default:lcd.print("One More"); ? ? loop(); ? ? break; ?? ? } }
希望这个小程序能给你带来一丝快乐,就这样,如果有错误或更好的代码方式请指出,谢谢阅读。
|