文章目录
1.前言
这个实验教程献给所有大一想努力的新手
2.欣赏成果
Arduino 简单密码输入系统成果
3.安装对应软件
首先先安装对应软件Arduino
网址arduino.cc/en/software
4.学习软件的使用
安装结束,我们进入首页选择我们对应的开发板Arduino UNO

选择之后就会将UNO开发板作为默认**(UNO开发板适合初学者简单易上手)**

并将开发板连接到电脑**(注意:后面一定带有后缀,我前面买的盗版无法识别就没有后缀)**
如果没有出现开发板(com)请检查链接器是否连接好或者开发板是否接触不良。
5.知识准备
Serial.begin(9600); 设置波特率与电脑的保持一致(9600)
delay(500);是将灯泡延迟500毫秒
pinMode(2, OUTPUT)是通过pinMode()函数,你可以将Arduino的引脚配置为以下三种模式:
输出(OUTPUT)模式
输入(INPUT)模式
输入上拉(INPUT_PULLUP)模式
Serial.println() :
输出内容后,自动在末尾添加换行符(相当于按下“回车”)。
例如: Serial.println(“密码”); Serial.println(“验证”);
while(temp < 5)循环5次
Key_value = 0;
Key_press_cnt = 0;这两句是指将密码值和按键次数分别赋值为0:也就是重置。
while(digitalRead(Key) == HIGH);
Key_value++;
Serial.print(“输入密码=”);
Serial.println(Key_value);
Key_press_cnt++;这一段是while循环,指判断Key是否输出高电平
如果不输出则进行循环,使密码值不断加一直到达到正确的密码值或者达到上限
6.准备道具
– Arduino Uno控制器
– 1个LED
– 1个220 欧姆电阻
– 1个10k 欧姆电阻
– 1个按键
– 1个面包板
实物图

7.代码
#define INPUT_MAX_TIME 13
const int Password=12;
const int LedPin=9;
const int Key=4;
int Key_value=0;
int Key_press_cnt=0;
void KeyPressError(){
// 补充错误函数的实现(比如闪烁LED提示错误)
digitalWrite(LedPin, HIGH);
delay(300);
digitalWrite(LedPin, LOW);
delay(300);
}
void setup(){
pinMode(LedPin,OUTPUT);
pinMode(Key,INPUT);
digitalWrite(LedPin,LOW);
Serial.begin(9600);
Serial.println("密码验证就绪了");
}
void loop(){
if(digitalRead(Key)==HIGH){
delay(10); // 消抖
while(digitalRead(Key)==HIGH); // 等待按键松开
Key_value++; // 每次按键,密码值+1
Key_press_cnt++; // 记录按键次数
Serial.print("输入密码=");
Serial.println(Key_value);
// 新增:密码匹配验证
if(Key_value == Password){
Serial.println("密码正确!LED点亮");
digitalWrite(LedPin, HIGH); // 密码正确,点亮LED
}
// 输入次数超限的处理
if(Key_press_cnt>INPUT_MAX_TIME){
KeyPressError();
Serial.println("密码的,不正确输入次数过多,急什么又不是赶着投胎");
Key_value = 0; // 重置密码值
Key_press_cnt = 0; // 重置次数
}
}
}
接下验证 ,左上角的勾是验证符号

查看是否验证成功,然后上传

上传成功就可以欣赏到开头的结果了
8.心得
我认为这是个新的开始我也遇到了很多问题(见下面),但是当我成功做出来了后感到非常自豪,所以我认为在这个时代人类要不断走出自己的舒适圈,才能前进,如果觉得有帮助就请点一下赞,我火速更新下一章,我是FOX,励志做一个博学的萌新。
9.花絮
我写代码一直是个谜,老是错,所以你要真正理解他,不要贪杯,觉得自己很牛逼
for循环和whlie循环都是可以互通的,在简单的代码下两个意义相同
可以自己试试把for循环转换成whlie循环
练习
#include<stdio.h>
int main(){
int num;
printf("请输入一个数:");
scanf("%d", &num);
for(int num;num>1&&num%2==0;num/=2);
if (num ==1) {
printf("是2的幂次方");
}
else {
printf("不是2的幂次方");
}
return 0;
}
把他转换成whlie循环
答案
#include<stdio.h>
int main(){
int num;
printf("输入一个数:");
scanf("%d",&num);
while(num>1&&num%2==0){
num/=2;
}
if(num==1){
printf("正确");
}else
if(num==0){
printf("不正确");
}
}
1202

被折叠的 条评论
为什么被折叠?



