一.    设备及要求

目的:制作一个可以自动根据事实的天气的状况进行对衣架上的衣服进行晾晒。

基础装置:可伸缩的晾衣架。

开发环境: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();
}
}

四.    缺陷与不足:

  1. 雨板模拟量干扰没有处理
  2. 按键干扰没有处理
  3. 没有电源检测
  4. 没有光线检测
  5. 没有衣物干燥度检测
  6. 没有备用电源
  7. 没有电源停电检

进阶之路(中级篇) - 018 基于arduino的简易版智能衣架的更多相关文章

  1. docker进阶之路-基础篇 | 二:portainer安装与基本使用

    转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061755.html ​简介 Portainer 是轻量级,跨平台,开源的管理D ...

  2. docker进阶之路-基础篇 | 一:环境搭建

    转载请注明作者及出处: 作者:银河架构师 原文链接:https://www.cnblogs.com/luas/p/12061747.html 一.准备工作 查看内核 Docker 要求 CentOS ...

  3. Netty(四)基于Netty 的简易版RPC

    3.1 RPC 概述 下面的这张图,大概很多小伙伴都见到过,这是 Dubbo 官网中的一张图描述了项目架构的演进过程 它描述了每一种架构需要的具体配置和组织形态.当网站流量很小时,只需一个应用,将所有 ...

  4. 基于djiango实现简易版的图书管理系统

    介绍: 本程序仅仅实现图书数据的增删查 树形结构如下   全部代码如下: url: from django.urls import path from front import views as fr ...

  5. 运维工程师打怪升级进阶之路 V2.0

    在此之前,发布过两个版本: 运维工程师打怪升级之路 V1.0 版本发布 运维工程师打怪升级必经之路 V1.0.1 很多读者伙伴们反应总结的很系统.很全面,无论是0基础初学者,还是有基础的入门者,或者是 ...

  6. 进阶之路(基础篇) - 021 arduino基础知识

    什么是arduino(翻译自arduino官方介绍)Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).她适用于艺术家. ...

  7. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  8. Scala进阶之路-并发编程模型Akka入门篇

    Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...

  9. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

随机推荐

  1. 怎样将 MySQL 迁移到 MariaDB 上

    自从甲骨文收购 MySQL 后,由于甲骨文对 MySQL 的开发和维护更多倾向于闭门的立场,很多 MySQL 的开发者和用户放弃了它.在社区驱动下,促使更多人移到 MySQL 的另一个叫 MariaD ...

  2. OpenWRT使用wifidog实现强制认证的WIFI热点

    首先安装wifidog到OpenWRT的路由器: opkg update opkg install wifidog wifidog依赖下面这些模块: iptables-mod-extra iptabl ...

  3. Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表

    本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...

  4. jdbc:initialize-database标签的研究

    在spring的applicationContext.xml中如果引入了:<?xml version="1.0" encoding="UTF-8"?> ...

  5. ScrollView嵌套ListView只显示一行解决方案

    在ScrollView里边嵌套了个ListView,后边就发现数据源里好多数据,但ListView只是显示1行. 各种debug,打log,数据什么的都没问题,上网百度了下,发现原来是ScrollVi ...

  6. SQL从一个表查询数据插入/更新到另一个表

    示例一: 从数据库表A中查询出数据插入到数据库表B 从数据库DataBaseA的表TDA中查询出数据插入到数据库DataBaseB的表TDB insert into [DataBaseA].[dbo] ...

  7. vsphere VAAI介绍

    VAAI:让特定的储存作业可以无需透过ESXi主机执行,而由储存设备来担纲 [TechTarget中国原创]目前,VAAI虽然已经成为虚拟化领域的标准语言之一,但是大多数人可能并不了解它还有隐藏的第四 ...

  8. 神器phpstorm功能具体解释

    phpstorm包括了webstorm的所有功能,更可以支持php代码. PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,高速导航以及即 ...

  9. iOS开发 - Core Animation 核心动画

    Core Animation Core Animation.中文翻译为核心动画,它是一组很强大的动画处理API,使用它能做出很炫丽的动画效果.并且往往是事半功倍. 也就是说,使用少量的代码就能够实现很 ...

  10. MobX快速入门教程(重要概念讲解)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7372119.html 一:Mobx工作流程图 二:MobX涉及到的概念 1:状态state 组件中的数据. 2 ...