一.    设备及要求

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

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

开发环境: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. Git 以分支的方式同时管理多个项目

    你是否遇到过这样的问题: 你的客户在你们这边做了N个项目,而项目之间又存在着某些业务关联(数据库访问等) 之前你可能是这样处理的,为客户的每个项目创建单独的Git版本 PC项目 手机项目 微信项目 其 ...

  2. VS2013开发asmx接口返回一个自定义XML

    1:利用XmlDocument生成一个xml文档返回,代码如下 using System;using System.Collections.Generic;using System.Linq;usin ...

  3. java interface 默认值

    /* * Hibernate, Relational Persistence for Idiomatic Java * * Copyright (c) 2010, Red Hat Inc. or th ...

  4. oracle expdp/impdp 用法详解

    http://hi.baidu.com/hzfsai/item/4a4b3fc4b1cf7e51ad00efbd oracle expdp/impdp 用法详解 Data Pump 反映了整个导出/导 ...

  5. Windows 10 中的 Shell 指令

    这篇文章本无技术含量,也不高大上,不过想想,还是写下来吧,肯定有人会用得到的. 常玩系统的朋友,应该知道 Shell 指令,这是一个很好玩很神奇的指令.利用它,可以用简短的单词,轻易地打开系统中的一些 ...

  6. [Python]将Excel文件中的数据导入MySQL

    Github Link 需求 现有2000+文件夹,每个文件夹下有若干excel文件,现在要将这些excel文件中的数据导入mysql. 每个excel文件的第一行是无效数据. 除了excel文件中已 ...

  7. ZH奶酪:使用PHP调用REST API

    原文:http://yuguo.us/weblog/php-rest-api/ 表征状态转移(英文:REpresentational State Transfer,简称REST)是Roy Fieldi ...

  8. VMware vCloud Director network ports diagram

    see:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&exter ...

  9. 机器学习-分类器-Adaboost原理

    Adaboost原理 Adaboost(AdaptiveBoosting)是一种迭代算法,通过对训练集不断训练弱分类器,然后把这些弱分类器集合起来,构成强分类器.adaboost算法训练的过程中,初始 ...

  10. 在CentOS7(虚拟机)下通过源码安装Postgresql10以及基本配置

    操作系统:CentOS7 安装文件:postgresql-10.0.tar.gz 系统环境:gcc.Python 1:源码安装 [postgres@localhost ~]# tar zxvf pos ...