萌新学习Arduino 简单密码输入系统的捷进

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("不正确");
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值