一.    设备及要求

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

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

开发环境: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. Spark(十二)--性能调优篇

    一段程序只能完成功能是没有用的,只能能够稳定.高效率地运行才是生成环境所需要的. 本篇记录了Spark各个角度的调优技巧,以备不时之需. 一.配置参数的方式和观察性能的方式 额...从最基本的开始讲, ...

  2. w3cscholl的在线代码编辑工具2

    https://www.w3cschool.cn/tryrun/runcode?lang=c

  3. Google声明机器学习在自己定制的芯片比方普通的GPU和CPU快15到30倍

    GOOGLE开发自己的加速机器学习的芯片已经不是什么秘密了,最先发布出来的是TPU(Tensor Processing Units),在2016年5月I/O开发大会上发布的.可是没有发布相关的细节情况 ...

  4. Mongo DB Sharding

    Database Sharding is considered to be the horizontal partitioning of a database or the search engine ...

  5. Redis实战总结-配置、持久化、复制

    Redis的配置主要放置在redis.conf,可以通过修改配置文件实现Redis许多特性,比如复制,持久化,集群等. redis.conf部分配置详解 # 启动redis,显示加载配置redis.c ...

  6. codeforces 551 C GukiZ hates Boxes

    --睡太晚了. ..脑子就傻了-- 这个题想的时候并没有想到该这样-- 题意大概是有n堆箱子从左往右依次排列,每堆ai个箱子,有m个人,最開始都站在第一个箱子的左边, 每个人在每一秒钟都必须做出两种选 ...

  7. insta经典滤镜下载

    好不容易找到的Insta的经典滤镜源码,贴出来帮大家学习. // // IFImageFilter.m // InstaFilters // // Created by Di Wu on 2/28/1 ...

  8. 夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸

    夏天就要过去啦, 特别在这个时候,分享几套来自smashingmagazine的秋天主题壁纸,如果,你也喜欢的话, 可以去下载哈~ 更多尺寸壁纸下载 日历版本: 320×480, 640×480, 8 ...

  9. Python+H5py实现将SVHN样本库转换为FasterRcnn训练样本

    一.上代码 import os import h5py svhnPath = 'D:\\Project\\AIProject\\SVHNClassifier\\data' def loadSvhn(p ...

  10. 转:初探nginx架构(一)

    来源:http://tengine.taobao.org/book/chapter_02.html 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢? ...