标题:
Arduino开关键控锁程序,自动门
[打印本页]
作者:
Mr-Sa
时间:
2019-11-18 16:00
标题:
Arduino开关键控锁程序,自动门
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include<Stepper.h>
LiquidCrystal_I2C lcd(0x27,16,2); //配置LCD地址及行列
Servo myservo; //创建一个舵机控制对象
int led1=3; //定义LED1引脚
int led2=4; //定义LED2引脚
int buzzer=5; //定义蜂鸣器引脚
int button=6; //定义按键引脚
int length; //定义一个变量用来表示共有多少个音符
int steps=512;
Stepper myStepper(steps, 8, 9, 10, 11);
int song[] =
{
/* 歌曲频率*/
589, 495, 441, 495,
-1, 589, 495, 441, 589,
495, -1, 495, 495, 495, 441, 495, -1, 495,
589, 495, 441, 589, 495, -1,
};
float duration[]=
{
/* 持续的时间 单位 ms */
1, 1, 0.5, 0.5,
1, 0.5, 0.5, 0.5, 0.5,
1, 0.5, 0.5, 0.5, 1, 0.5, 1, 0.5, 0.5,
0.5,0.5, 0.5, 0.5, 1, 1,
};
void setup()
{
{
pinMode(led1,OUTPUT); //3号数字口设置为输出状态
pinMode(led2,OUTPUT); //4号数字口设置为输出状态
}
pinMode(buzzer,OUTPUT);
length = sizeof(song) / sizeof(song[0]); //这里用了一个sizeof函数,查出数组里有多少个音符
for (int x = 0; x < length; x++) //循环音符的次数
{
tone(buzzer, song[x]); //依次播放tune数组元素,即每个音符
delay(400 * duration[x]); //每个音符持续的时间,即节拍duration,400是调整时间的越大,曲子速度越慢,越小曲子速度越快
noTone(buzzer); //停止当前音符,进入下一音符
}
{
Serial.begin(9600);
myservo.attach(2); //绑定对象至D7
}
{
// 设置转速,单位r/min
myStepper.setSpeed(20);
// 初始化串口
Serial.begin(9600);
}
}
void duoji1()
{
myservo.write(150); //写入角度
Serial.println(myservo.read()); //打印舵机角度
}
void duoji2()
{
myservo.write(0); //写入角度
Serial.println(myservo.read()); //打印舵机角度
}
void duoji3()
{
myservo.write(10); //写入角度
Serial.println(myservo.read()); //打印舵机角度
}
void clockwise()
{
// 顺时针一次旋转
Serial.println();
myStepper.step(520);
delay(1000);
}
void clockwises()
{
// 顺时针一次旋转
Serial.println();
myStepper.step(-520);
delay(1000);
}
void xianshi1()
{
lcd.init(); //初始化LCD
lcd.backlight(); //打开背光
lcd.setCursor(3,0); //设置显示位置
lcd.print("Welcome to "); //显示字符数据
lcd.setCursor(5,1); //设置显示位置
lcd.print("Home !"); //显示字符数据
}
void xianshi2()
{
lcd.init(); //初始化LCD
lcd.backlight(); //打开背光
lcd.setCursor(4,0); //设置显示位置
lcd.print("Good Bye"); //显示字符数据
lcd.setCursor(4,1); //设置显示位置
lcd.print("*Locked*"); //显示字符数据
}
void loop()
{
jiance();
}
void jiance()
{
int buttonState = digitalRead(button); // 检测按键
delay(1000);
int n =digitalRead(button); //创建一个变量n,按键状态采集出来赋值给他。
if (n==HIGH) //判断n是否为高电平,如果是执行下面的语句,不是则跳过。
{
digitalWrite(led2,LOW); //LED2灭
digitalWrite(led1,HIGH); //LED1亮
xianshi1(); //运行xianshi
delay(1000);
duoji1(); //运行xianshi
setup();
delay(1000);
clockwise(); //运行xianshi
delay(11000);
digitalWrite(led1,LOW); //LED1灭
digitalWrite(led2,HIGH); //LED2亮
xianshi2(); //运行xianshi2
setup();
clockwises();
delay(1000);
duoji2(); //运行xianshi
delay(1000);
duoji3(); //运行duoji3
}
}
复制代码
作者:
admin
时间:
2019-11-20 14:55
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1