切换到宽版
爱科技/爱创意/爱折腾/爱极致;技术知识分享平台,点击进入新版数码之家网站
  • 28847阅读
  • 143回复

[另类]DIY乐高+单片机+舵机=另类密码门锁 [复制链接]

上一主题 下一主题
离线huangyixiang
 

发帖
2239
M币
1192
专家
22
粉丝
128
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2014-08-18
— 本帖被 發騷友 设置为精华,作者+3000M币+5专家(2014-08-22) —
最近学了点C语言,手头上又有很多单片机,想做个门锁,买了舵机,开工。。


测试舵机的。舵机是用PWM的占空比来控制目标位置,很精准,但行程只有180度



舵机+乐高积木做的门锁



热熔胶沾上



皮肤颜色的零件是专门用来滑动的塑料,表面很光滑,几乎没有磨损



几条积木把旋钮扣住



锁住



壳子



这种壳子一般是做移动电源的



画好开孔位置



电键



打孔






方形






装好






热熔胶粘好



LED



共阳



焊线



单片机 12C2052



测试LED



连线



做好了



现在要把程序口和输出口,电源接口接出来



打洞



插针



热熔胶



粘好板子



盒盖


写程序



搞定了。。

今天有时间顺便装上。。


铝箔纸,剪成小段,正极和负极。



做个USB做供电



焊线



外壳



做好了



铝箔纸



用胶纸粘在门框











门上用很厚(大概2mm)的那种白色的双面胶也粘上,和门框的对准



控制器



测试



铝箔纸相当电极,接触就接通5V电源



关上门通电后自动运行锁门程序。



把舵机的线也连上



门背面



锁门



解锁

电路图:


============================下面附上源代码============================


#include<reg51.h>
#define keyboard P1
sbit KEY=P3^2;
sbit Red=P3^3;
sbit Yellow=P3^4;
sbit Green=P3^5;
sbit MOTOR=P3^7;

void delay(unsigned int t)
{
while(t--);
}

void LOCK()
{
unsigned int a,b,c;
a=990;
b=2000-a;
Yellow=0;
for(c=0;c<200;c++)
{
MOTOR=1;
delay(a);
MOTOR=0;
delay(b);
}
MOTOR=1;
Yellow=1;
Red=0;
Green=1;
}

void UNLOCK()
{
unsigned int a,b,c;
a=600;
b=2000-a;
Yellow=0;
for(c=0;c<200;c++)
{
MOTOR=1;
delay(a);
MOTOR=0;
delay(b);
}
MOTOR=1;
Yellow=1;
Green=0;
Red=1;
}


void main()
{
unsigned int a,b,y,z;
unsigned char password[8]={1,2,4,3,6,5,7,8};
unsigned char word[8]="00000000";
for(z=0;z<6;z++)
{
delay(50000);
Red=!Red;
}
while(1)
{
LOCK();
for(y=0;y<8;y++)
{
keyboard=0xff;
while(keyboard==0xff);
switch(keyboard)
{
case(0x7f):a=1;Yellow=0;delay(5000);Yellow=1;break;
case(0xbf):a=2;Yellow=0;delay(5000);Yellow=1;break;
case(0xdf):a=3;Yellow=0;delay(5000);Yellow=1;break;
case(0xef):a=4;Yellow=0;delay(5000);Yellow=1;break;
case(0xf7):a=5;Yellow=0;delay(5000);Yellow=1;break;
case(0xfb):a=6;Yellow=0;delay(5000);Yellow=1;break;
case(0xfd):a=7;Yellow=0;delay(5000);Yellow=1;break;
case(0xfe):a=8;Yellow=0;delay(5000);Yellow=1;break;
}
delay(50000);
word[y]=a;
while(keyboard!=0xff);
}
b=0;
for(y=0;y<8;y++)
{
if(word[y]==password[y])
{
b=b+1;
}
}
if(b==8)
{
UNLOCK();
while(KEY==1);
}
}
}

如果使用过程发现bug,欢迎提出探讨!
THE END
如果大家觉得帖子不错,请点击下方“喜欢”!
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共83条打赏M币+276专家+3
123456...9下一页
到第

发帖
690
M币
4712
专家
1
粉丝
26
只看该作者 1楼 发表于: 2014-08-18
请登录后查看
本帖最近打赏记录:共1条打赏M币+3
离线ma10851051y

发帖
1084
M币
3520
专家
1
粉丝
35
只看该作者 2楼 发表于: 2014-08-18
请登录后查看
离线dlsu

发帖
341
M币
3091
专家
9
粉丝
71
只看该作者 3楼 发表于: 2014-08-18
请登录后查看
离线强力磁铁

发帖
6605
M币
635
专家
10
粉丝
61
只看该作者 4楼 发表于: 2014-08-18
请登录后查看
离线huangyixiang

发帖
2239
M币
1192
专家
22
粉丝
128
只看该作者 5楼 发表于: 2014-08-18
回 强力磁铁 的帖子
请登录后查看
本帖最近打赏记录:共2条打赏M币+5
离线stm32

发帖
1479
M币
4
专家
50
粉丝
78
只看该作者 6楼 发表于: 2014-08-18
请登录后查看
离线snowrose2000

发帖
77840
M币
335752
专家
1072
粉丝
35251
只看该作者 7楼 发表于: 2014-08-18
请登录后查看
本帖最近打赏记录:共1条打赏M币+3
离线leafchy

发帖
46544
M币
14542
专家
2
粉丝
175
只看该作者 8楼 发表于: 2014-08-18
请登录后查看
离线huangyixiang

发帖
2239
M币
1192
专家
22
粉丝
128
只看该作者 9楼 发表于: 2014-08-18
本帖最近打赏记录:共1条打赏M币+4
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个