极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21317|回复: 10

付费求助:谁能帮我儿子写个自动浇花程序

[复制链接]
发表于 2013-2-23 19:00:07 | 显示全部楼层 |阅读模式
儿子喜欢制作,但年龄小,还不会编程,(我更不会)配件已经都买好,想做个自动浇花机。程序要求:基于Arduino的自动浇花程序,控制板是Arduino uno,通过土壤干湿感应器返回数据,控制板指令给继电器,启动潜水泵浇水,湿度达到后,水泵停止浇花。具体联系我的QQ810983492.急用。付费。谢谢。
回复

使用道具 举报

发表于 2013-2-23 19:15:33 | 显示全部楼层
这算是一个比较简单的程序,不过里面最主要的还是中间的数据最好能贴出来,连接图贴出来
回复 支持 反对

使用道具 举报

发表于 2013-2-23 20:31:01 | 显示全部楼层
儿子多大?
回复 支持 反对

使用道具 举报

发表于 2013-2-24 00:26:01 | 显示全部楼层
本帖最后由 沧海笑1122 于 2013-2-24 00:33 编辑

楼主这样做,是希望达到孩子喜爱、学习、运用arduino的目的,还是仅仅完成这样一个有点技术含量的“科技制作”?毕竟快开学了。
。可怜天下父母心,要是后者,真的不太建议这样做。
要是前者,这个项目对基础不足的孩子来说,还是有点难度的。涉及传感器部分,采集运算和判断、执行元件等三个部分,其实是一个完整的系统了。还有简单的支架、整体封装等。如果参数需要在运行中设定,还得有块液晶、有几个电位器吧。系统也需要不断地调试,因为土壤不同,传感器的位置以及达到湿度所要求的时间都是需要不断调试的。真不是花钱买成品,其实乐趣也在这个环节。

根据自己的菜鸟经历,一直主张选择一个力所能及的项目入手学习arduino,可以将兴趣与学习结合起来,取得不错的学习效果,但也应该是力所能及。
我看过楼主的三个主题,应该是刚刚起步,建议对照论坛的基础教程(倒不是全部教程,也没必要,和你的项目相关的),先从基础学起,然后再逐步进阶。
祝你好运。

评分

参与人数 1 +3 收起 理由
幻生幻灭 + 3 正解!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2013-2-24 08:57:24 | 显示全部楼层
感觉能说出这么多词儿的人,不像是写不出这程序的人啊……
自己动手丰衣足食。arduino的乐趣就在于折腾……
回复 支持 反对

使用道具 举报

发表于 2013-2-24 11:28:25 | 显示全部楼层
这程序很简单啊,等会发到你邮箱
回复 支持 反对

使用道具 举报

发表于 2013-2-24 18:16:16 | 显示全部楼层
说简单也是很简单的,不过需要一些细节的注意。回来QQ聊
回复 支持 反对

使用道具 举报

发表于 2013-2-24 21:08:59 | 显示全部楼层
土壤湿度传感器输出模拟量,就是读模拟口数值,数字口在输出给继电器控制水泵。
回复 支持 反对

使用道具 举报

发表于 2013-2-24 21:16:31 | 显示全部楼层
  1. #include "ST7920.h"
  2. #include "PIC.h"

  3. ST7920 lcd;
  4. int time;
  5. int liquid_level;
  6. int resistance;
  7. char text_liquid_level[2]={0};
  8. char text_resistance[4]={0};
  9. char *p;
  10. int ultrasonic=7;
  11. void setup()
  12. {
  13.         lcd.LCD_Init();
  14.         lcd.LCD_ClearRam();
  15.         Serial.begin(9600);
  16.         pinMode(8,OUTPUT);
  17.         lcd.chsDisplay_16bit(0x80, 0xd2ba);//液
  18.         lcd.chsDisplay_16bit(0x81, 0xcebb);//位
  19.         lcd.chsDisplay_16bit(0x88, 0xb5e7);//电
  20.         lcd.chsDisplay_16bit(0x89, 0xd7e8);//阻
  21.         lcd.LCD_DisplayStrings_WithAddress(0x82,":");
  22.         lcd.LCD_DisplayStrings_WithAddress(0x8a,":");
  23.       }

  24. void loop()
  25. {
  26.         pinMode(ultrasonic,OUTPUT);
  27.         digitalWrite(ultrasonic,LOW);
  28.         delay(1);
  29.         digitalWrite(ultrasonic,HIGH);
  30.         delayMicroseconds(12);
  31.         digitalWrite(ultrasonic,LOW);
  32.         pinMode(ultrasonic,INPUT);
  33.         time=pulseIn(ultrasonic,HIGH);





  34.         Serial.println(time);
  35.         liquid_level=31.8-time*0.0001*340/2;
  36.         sprintf(text_liquid_level,"%d",liquid_level);
  37.         if (liquid_level<0){
  38.         lcd.LCD_DisplayStrings_WithAddress(0x83,"OVER");  }
  39.         else if(liquid_level<10){
  40.         lcd.LCD_DisplayStrings_WithAddress(0x83,"  ");        
  41.         lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
  42.         lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
  43.         else{      
  44.         lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
  45.         lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
  46.        // lcd.LCD_DisplayStrings_WithAddress(0x83,"   Welcome to   ");
  47.        
  48.         resistance=analogRead(0);
  49.         sprintf(text_resistance,"%d",resistance);
  50.         lcd.LCD_DisplayStrings_WithAddress(0x8b,"    ");
  51.         lcd.LCD_DisplayStrings_WithAddress(0x8b,text_resistance);

  52.         if (resistance>500 and liquid_level>10){       //---------------
  53.         digitalWrite(8,HIGH);
  54.         delay(2000);
  55.         digitalWrite(8,LOW);
  56.         
  57.         pinMode(ultrasonic,OUTPUT);
  58.         digitalWrite(ultrasonic,LOW);
  59.         delay(1);
  60.         digitalWrite(ultrasonic,HIGH);
  61.         delayMicroseconds(12);
  62.         digitalWrite(ultrasonic,LOW);
  63.         pinMode(ultrasonic,INPUT);
  64.         time=pulseIn(ultrasonic,HIGH);





  65.         Serial.println(time);
  66.         liquid_level=31.8-time*0.0001*340/2;
  67.         sprintf(text_liquid_level,"%d",liquid_level);
  68.         if (liquid_level<0){
  69.         lcd.LCD_DisplayStrings_WithAddress(0x83,"OVER");  }
  70.         else if(liquid_level<10){
  71.         lcd.LCD_DisplayStrings_WithAddress(0x83,"  ");        
  72.         lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
  73.         lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
  74.         else{      
  75.         lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
  76.         lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
  77.        // lcd.LCD_DisplayStrings_WithAddress(0x83,"   Welcome to   ");
  78.        
  79.         resistance=analogRead(0);
  80.         sprintf(text_resistance,"%d",resistance);
  81.         lcd.LCD_DisplayStrings_WithAddress(0x8b,"    ");
  82.         lcd.LCD_DisplayStrings_WithAddress(0x8b,text_resistance);
  83.         }
  84.         
  85.         delay(2000);
  86.        
  87. }
复制代码

前几年编的自动浇水的程序
带LCD12864液晶显示,液位高于10cm,电阻大于500,启动水泵浇水。

视频明天回单位的电脑上找找!

评分

参与人数 1 +6 收起 理由
Ansifa + 6

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2013-4-4 21:27:26 | 显示全部楼层
bacon6581 发表于 2013-2-24 21:16
#include "ST7920.h"
#include "PIC.h"

厉害。但不是泡在水里,是检测湿度的
回复 支持 反对

使用道具 举报

发表于 2013-4-23 19:21:21 | 显示全部楼层
前段时间刚写了个自动浇花的教程。你可以到DFrobot的讨论区找一下,或者看《无线电》今年的第三期
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 01:19 , Processed in 0.059537 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表