进阶之路(中级篇) - 018 基于arduino的简易版智能衣架
一. 设备及要求
目的:制作一个可以自动根据事实的天气的状况进行对衣架上的衣服进行晾晒。
基础装置:可伸缩的晾衣架。
开发环境:Arduino1. 8.1
主控板:Arduino UNO
动力装置:二相四线步进电机、电机控制板
供电设备:5V/500mA电源、12V/2A电机供电电源
传感器:雨滴传感器、接触传感器
其它:双面胶若干(固定传接触感器)
二. 布线:

三.代码:
// I/O引脚定义
#define PUL 2 //电机时钟
#define L_ENA 3 //A电机使能
#define L_DIR 4 //A电机转向
#define L_key 5 //A电机复位按键(0)
#define R_ENA 6 //B电机使能
#define R_DIR 7 //B电机转向
#define R_key 8 //B电机复位按键(1)
#define Rain A0 //雨水 //宏定义
bool Clock_status = ; void set_init_pinMode(){
pinMode(PUL,OUTPUT); //时钟
pinMode(L_ENA,OUTPUT); //L
pinMode(L_DIR,OUTPUT);
pinMode(L_key,INPUT);
pinMode(R_ENA,OUTPUT); //R
pinMode(R_DIR,OUTPUT);
pinMode(R_key,INPUT);
pinMode(Rain,INPUT); //雨水
}
/*************************************/
//时钟函数
void Clock_function(void){
delayMicroseconds(); //时钟
digitalWrite(PUL,Clock_status);
Clock_status = !Clock_status;
}
/***********************************/
//电机使能关闭
void Close_motor(void){
digitalWrite(L_ENA,);
digitalWrite(R_ENA,);
}
//电机使能开启
void start_motor(void){
digitalWrite(L_ENA,);
digitalWrite(R_ENA,);
}
/**********************************/
//拉回方向
void Pull_direction(){
digitalWrite(L_DIR,);
digitalWrite(R_DIR,);
}
//推出方向
void Push_direction(){
digitalWrite(L_DIR,);
digitalWrite(R_DIR,);
}
/********************************/
//拉回电机
void Pull_motor(){
start_motor(); //开启电机
Pull_direction(); //拉回电机凤方向设置
}
//推出电机
void Push_motor(){
start_motor(); //开启电机
Push_direction(); //拉回电机凤方向设置
}
//无检验停止
void No_test_stop_motor(){
Close_motor(); //关闭使能
}
//检验停止
void test_stop_motor(int key1,int key2){
if(key1)digitalWrite(L_ENA,);
else digitalWrite(L_ENA,);
if(key2)digitalWrite(R_ENA,);
else digitalWrite(L_ENA,);
}
/********************************/
void printf_all(int mode,unsigned int step1){
Serial.print("mode =");
Serial.print(mode);
Serial.print(" ");
Serial.print("PUL =");
Serial.print(digitalRead(PUL));
Serial.print(" ");
Serial.print("L_DIR =");
Serial.print(digitalRead(L_DIR));
Serial.print(" ");
Serial.print("L_ENA =");
Serial.print(digitalRead(L_ENA));
Serial.print(" ");
Serial.print("L_key =");
Serial.print(digitalRead(L_key));
Serial.print(" ");
Serial.print("R_DIR =");
Serial.print(digitalRead(R_DIR));
Serial.print(" ");
Serial.print("R_ENA =");
Serial.print(digitalRead(R_ENA));
Serial.print(" ");
Serial.print("R_key =");
Serial.print(digitalRead(R_key));
Serial.print(" ");
Serial.print("Rain =");
Serial.print(analogRead(Rain));
Serial.print(" ");
Serial.print("step1 =");
Serial.println(step1);
}
//初始化
void setup(){
set_init_pinMode();
Serial.begin();
Serial.println("DHTxx test!");
}
void loop(){
int mode = ; //模式
int a,b;
unsigned int step1 = ;
while(){
switch(mode){
case :{ //拉回电机
Pull_motor();
mode = ;
}break;
case :{ //检测状态
a = digitalRead(L_key);
b = digitalRead(R_key);
digitalWrite(L_ENA,a);
digitalWrite(R_ENA,b-);
step1--;
if((==a)&&(==b)&&(analogRead(Rain) > )){
mode = ;
step1 = ;
Push_motor();
}
}break;
case :{ //雨板检测
if(analogRead(Rain) < )mode = ;
else if( < step1++){
Close_motor();
step1 = ;
}
}break;
}
//printf_all(mode,step1);
Clock_function();
}
}
四. 缺陷与不足:
- 雨板模拟量干扰没有处理
- 按键干扰没有处理
- 没有电源检测
- 没有光线检测
- 没有衣物干燥度检测
- 没有备用电源
- 没有电源停电检
进阶之路(中级篇) - 018 基于arduino的简易版智能衣架的更多相关文章
- docker进阶之路-基础篇 | 二:portainer安装与基本使用
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061755.html 简介 Portainer 是轻量级,跨平台,开源的管理D ...
- docker进阶之路-基础篇 | 一:环境搭建
转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061747.html 一.准备工作 查看内核 Docker 要求 CentOS ...
- Netty(四)基于Netty 的简易版RPC
3.1 RPC 概述 下面的这张图,大概很多小伙伴都见到过,这是 Dubbo 官网中的一张图描述了项目架构的演进过程 它描述了每一种架构需要的具体配置和组织形态.当网站流量很小时,只需一个应用,将所有 ...
- 基于djiango实现简易版的图书管理系统
介绍: 本程序仅仅实现图书数据的增删查 树形结构如下 全部代码如下: url: from django.urls import path from front import views as fr ...
- 运维工程师打怪升级进阶之路 V2.0
在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...
- 进阶之路(基础篇) - 021 arduino基础知识
什么是arduino(翻译自arduino官方介绍)Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).她适用于艺术家. ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
随机推荐
- WPF装饰元素
Border: <Style TargetType="Border"> <Setter Property="CornerRadius" Val ...
- Mongo DB Sharding
Database Sharding is considered to be the horizontal partitioning of a database or the search engine ...
- 视图控制器生命周期中各个重要的方法(Swift) (Important Methods during the Lifecycle of a View Controller)
1. init(coder:) 它是视图控制器从故事板创建实例的默认初始化函数.(It is the initializer for UIViewController instances create ...
- 老周发布 UWP 应用的隐私策略(通用)
UWP 应用隐私策略 前注 本声明通用于老周所发布的所有 UWP 应用,下文简称“应用”.开发者全称:周家安,下文简称“老周”. 1.免责声明 您在使用应用过程中,请遵守<中华人民共和国宪法& ...
- MVC 之 解决MVC中使用BundleConfig.RegisterBundles引用Css及js文件发布后的丢失
在MVC3中我们这样引用资源文件: <link href="@Url.Content("~/Content/Site.css")" rel="s ...
- ng-class ng-style
https://docs.angularjs.org/api/ng/directive/ngClass 翻译 表达式生成一个空格饭分隔的class字符串 一个对象,它的每一个key在其值为true的时 ...
- directive完成UI渲染后执行JS
ui-view有相应的$viewContentLoaded http://blog.csdn.net/xinshangshangxin/article/details/44700813 ng-repe ...
- Zabbix,Nagios,OneAPM Servers 安装部署大比拼
怎样高速实现对 Linux server的监控? 做过server监控的开发人员差点儿都知道 Zabbix 和 Nagios ,他们都是提供系统监控以及网络监控功能的开源解决方式.资历比較老.在不久前 ...
- js 树结构数据遍历条件判断
代码: /** * 树结构数据条件过滤 * js 指定删除数组(树结构数据) */ function filter (data, id) { var newData = data.filter(x = ...
- 【Zookeeper】源码分析之持久化(一)之FileTxnLog
一.前言 前一篇已经分析了序列化,这篇接着分析Zookeeper的持久化过程源码,持久化对于数据的存储至关重要,下面进行详细分析. 二.持久化总体框架 持久化的类主要在包org.apache.zook ...