进阶之路(中级篇) - 018 基于arduino的简易版智能衣架
2017-05-08 16:41
561 查看
一. 设备及要求
目的:制作一个可以自动根据事实的天气的状况进行对衣架上的衣服进行晾晒。
基础装置:可伸缩的晾衣架。
开发环境:Arduino1. 8.1
主控板:Arduino UNO
动力装置:二相四线步进电机、电机控制板
供电设备:5V/500mA电源、12V/2A电机供电电源
传感器:雨滴传感器、接触传感器
其它:双面胶若干(固定传接触感器)
二. 布线:
三.代码:
四. 缺陷与不足:
雨板模拟量干扰没有处理
按键干扰没有处理
没有电源检测
没有光线检测
没有衣物干燥度检测
没有备用电源
没有电源停电检
目的:制作一个可以自动根据事实的天气的状况进行对衣架上的衣服进行晾晒。
基础装置:可伸缩的晾衣架。
开发环境:Arduino1. 8.1
主控板:Arduino UNO
动力装置:二相四线步进电机、电机控制板
供电设备:5V/500mA电源、12V/2A电机供电电源
传感器:雨滴传感器、接触传感器
其它:双面胶若干(固定传接触感器)
二. 布线:
三.代码:
1 // I/O引脚定义 2 #define PUL 2 //电机时钟 3 #define L_ENA 3 //A电机使能 4 #define L_DIR 4 //A电机转向 5 #define L_key 5 //A电机复位按键(0) 6 #define R_ENA 6 //B电机使能 7 #define R_DIR 7 //B电机转向 8 #define R_key 8 //B电机复位按键(1) 9 #define Rain A0 //雨水 10 11 //宏定义 12 bool Clock_status = 0; 13 14 void set_init_pinMode(){ 15 pinMode(PUL,OUTPUT); //时钟 16 pinMode(L_ENA,OUTPUT); //L 17 pinMode(L_DIR,OUTPUT); 18 pinMode(L_key,INPUT); 19 pinMode(R_ENA,OUTPUT); //R 20 pinMode(R_DIR,OUTPUT); 21 pinMode(R_key,INPUT); 22 pinMode(Rain,INPUT); //雨水 23 } 24 /*************************************/ 25 //时钟函数 26 void Clock_function(void){ 27 delayMicroseconds(10000); //时钟 28 digitalWrite(PUL,Clock_status); 29 Clock_status = !Clock_status; 30 } 31 /***********************************/ 32 //电机使能关闭 33 void Close_motor(void){ 34 digitalWrite(L_ENA,1); 35 digitalWrite(R_ENA,1); 36 } 37 //电机使能开启 38 void start_motor(void){ 39 digitalWrite(L_ENA,0); 40 digitalWrite(R_ENA,0); 41 } 42 /**********************************/ 43 //拉回方向 44 void Pull_direction(){ 45 digitalWrite(L_DIR,0); 46 digitalWrite(R_DIR,0); 47 } 48 //推出方向 49 void Push_direction(){ 50 digitalWrite(L_DIR,1); 51 digitalWrite(R_DIR,1); 52 } 53 /********************************/ 54 //拉回电机 55 void Pull_motor(){ 56 start_motor(); //开启电机 57 Pull_direction(); //拉回电机凤方向设置 58 } 59 //推出电机 60 void Push_motor(){ 61 start_motor(); //开启电机 62 Push_direction(); //拉回电机凤方向设置 63 } 64 //无检验停止 65 void No_test_stop_motor(){ 66 Close_motor(); //关闭使能 67 } 68 //检验停止 69 void test_stop_motor(int key1,int key2){ 70 if(key1)digitalWrite(L_ENA,1); 71 else digitalWrite(L_ENA,0); 72 if(key2)digitalWrite(R_ENA,1); 73 else digitalWrite(L_ENA,0); 74 } 75 /********************************/ 76 void printf_all(int mode,unsigned int step1){ 77 Serial.print("mode ="); 78 Serial.print(mode); 79 Serial.print(" "); 80 Serial.print("PUL ="); 81 Serial.print(digitalRead(PUL)); 82 Serial.print(" "); 83 Serial.print("L_DIR ="); 84 Serial.print(digitalRead(L_DIR)); 85 Serial.print(" "); 86 Serial.print("L_ENA ="); 87 Serial.print(digitalRead(L_ENA)); 88 Serial.print(" "); 89 Serial.print("L_key ="); 90 Serial.print(digitalRead(L_key)); 91 Serial.print(" "); 92 Serial.print("R_DIR ="); 93 Serial.print(digitalRead(R_DIR)); 94 Serial.print(" "); 95 Serial.print("R_ENA ="); 96 Serial.print(digitalRead(R_ENA)); 97 Serial.print(" "); 98 Serial.print("R_key ="); 99 Serial.print(digitalRead(R_key)); 100 Serial.print(" "); 101 Serial.print("Rain ="); 102 Serial.print(analogRead(Rain)); 103 Serial.print(" "); 104 Serial.print("step1 ="); 105 Serial.println(step1); 106 } 107 //初始化 108 void setup(){ 109 set_init_pinMode(); 110 Serial.begin(19200); 111 Serial.println("DHTxx test!"); 112 } 113 void loop(){ 114 int mode = 0; //模式 115 int a,b; 116 unsigned int step1 = 0; 117 while(1){ 118 switch(mode){ 119 case 0:{ //拉回电机 120 Pull_motor(); 121 mode = 1; 122 }break; 123 case 1:{ //检测状态 124 a = digitalRead(L_key); 125 b = digitalRead(R_key); 126 digitalWrite(L_ENA,a); 127 digitalWrite(R_ENA,b-1); 128 step1--; 129 if((1==a)&&(0==b)&&(analogRead(Rain) > 850)){ 130 mode = 2; 131 step1 = 0; 132 Push_motor(); 133 } 134 }break; 135 case 2:{ //雨板检测 136 if(analogRead(Rain) < 850)mode = 0; 137 else if(7000 < step1++){ 138 Close_motor(); 139 step1 = 65000; 140 } 141 }break; 142 } 143 //printf_all(mode,step1); 144 Clock_function(); 145 } 146 }
四. 缺陷与不足:
雨板模拟量干扰没有处理
按键干扰没有处理
没有电源检测
没有光线检测
没有衣物干燥度检测
没有备用电源
没有电源停电检
相关文章推荐
- 基于arduino和蓝牙通信的智能窗户控制系统
- 【转】基于AT89C51单片机设计的简易智能机器人
- 进阶之路(中级篇) - 017 有关于Arduino 驱动舵机及相关问题
- [硬件项目] 1、汽车倒车雷达设计——基于API8108A芯片简易智能语音模块的设计与实现
- 基于arduino的智能小车底层系统开发
- 基于智能合约建立简易代币
- 基于dragonboard410c 智能门锁 开发
- Mac下基于testrpc和truffle的以太坊智能合约开发环境搭建
- 基于 Arduino 开发板,这款插座是可编程且开源的
- 基于SOA的设备智能维护系统架构设计及实现
- 通达OA 开发基于AJAX技术数据列表控件的智能表单(图文)
- 基于IBM Cognos 的商业智能分析方案
- 基于Arduino的开源四轴飞行器开发学习板
- JEECG 3.2版本发布,基于代码生成器的智能开发平台
- 基于javascript的机器智能框架:deeplearn.js
- [C语言] 基于Linux的一对一Socket简易聊天程序实例
- 基于MC9S12DGl28单片机的智能寻迹车设计
- 基于Android智能电视的应用程序的布局
- 基于DragonBoard410c的智能照明系统
- Python简易聊天工具-基于异步Socket通信