付费求助:谁能帮我儿子写个自动浇花程序
儿子喜欢制作,但年龄小,还不会编程,(我更不会)配件已经都买好,想做个自动浇花机。程序要求:基于Arduino的自动浇花程序,控制板是Arduino uno,通过土壤干湿感应器返回数据,控制板指令给继电器,启动潜水泵浇水,湿度达到后,水泵停止浇花。具体联系我的QQ810983492.急用。付费。谢谢。 这算是一个比较简单的程序,不过里面最主要的还是中间的数据最好能贴出来,连接图贴出来 儿子多大? 本帖最后由 沧海笑1122 于 2013-2-24 00:33 编辑楼主这样做,是希望达到孩子喜爱、学习、运用arduino的目的,还是仅仅完成这样一个有点技术含量的“科技制作”?毕竟快开学了。
。可怜天下父母心,要是后者,真的不太建议这样做。
要是前者,这个项目对基础不足的孩子来说,还是有点难度的。涉及传感器部分,采集运算和判断、执行元件等三个部分,其实是一个完整的系统了。还有简单的支架、整体封装等。如果参数需要在运行中设定,还得有块液晶、有几个电位器吧。系统也需要不断地调试,因为土壤不同,传感器的位置以及达到湿度所要求的时间都是需要不断调试的。真不是花钱买成品,其实乐趣也在这个环节。
根据自己的菜鸟经历,一直主张选择一个力所能及的项目入手学习arduino,可以将兴趣与学习结合起来,取得不错的学习效果,但也应该是力所能及。
我看过楼主的三个主题,应该是刚刚起步,建议对照论坛的基础教程(倒不是全部教程,也没必要,和你的项目相关的),先从基础学起,然后再逐步进阶。
祝你好运。 感觉能说出这么多词儿的人,不像是写不出这程序的人啊……
自己动手丰衣足食。arduino的乐趣就在于折腾…… 这程序很简单啊,等会发到你邮箱 说简单也是很简单的,不过需要一些细节的注意。回来QQ聊 土壤湿度传感器输出模拟量,就是读模拟口数值,数字口在输出给继电器控制水泵。 #include "ST7920.h"
#include "PIC.h"
ST7920 lcd;
int time;
int liquid_level;
int resistance;
char text_liquid_level={0};
char text_resistance={0};
char *p;
int ultrasonic=7;
void setup()
{
lcd.LCD_Init();
lcd.LCD_ClearRam();
Serial.begin(9600);
pinMode(8,OUTPUT);
lcd.chsDisplay_16bit(0x80, 0xd2ba);//液
lcd.chsDisplay_16bit(0x81, 0xcebb);//位
lcd.chsDisplay_16bit(0x88, 0xb5e7);//电
lcd.chsDisplay_16bit(0x89, 0xd7e8);//阻
lcd.LCD_DisplayStrings_WithAddress(0x82,":");
lcd.LCD_DisplayStrings_WithAddress(0x8a,":");
}
void loop()
{
pinMode(ultrasonic,OUTPUT);
digitalWrite(ultrasonic,LOW);
delay(1);
digitalWrite(ultrasonic,HIGH);
delayMicroseconds(12);
digitalWrite(ultrasonic,LOW);
pinMode(ultrasonic,INPUT);
time=pulseIn(ultrasonic,HIGH);
Serial.println(time);
liquid_level=31.8-time*0.0001*340/2;
sprintf(text_liquid_level,"%d",liquid_level);
if (liquid_level<0){
lcd.LCD_DisplayStrings_WithAddress(0x83,"OVER");}
else if(liquid_level<10){
lcd.LCD_DisplayStrings_WithAddress(0x83,"");
lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
else{
lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
// lcd.LCD_DisplayStrings_WithAddress(0x83," Welcome to ");
resistance=analogRead(0);
sprintf(text_resistance,"%d",resistance);
lcd.LCD_DisplayStrings_WithAddress(0x8b," ");
lcd.LCD_DisplayStrings_WithAddress(0x8b,text_resistance);
if (resistance>500 and liquid_level>10){ //---------------
digitalWrite(8,HIGH);
delay(2000);
digitalWrite(8,LOW);
pinMode(ultrasonic,OUTPUT);
digitalWrite(ultrasonic,LOW);
delay(1);
digitalWrite(ultrasonic,HIGH);
delayMicroseconds(12);
digitalWrite(ultrasonic,LOW);
pinMode(ultrasonic,INPUT);
time=pulseIn(ultrasonic,HIGH);
Serial.println(time);
liquid_level=31.8-time*0.0001*340/2;
sprintf(text_liquid_level,"%d",liquid_level);
if (liquid_level<0){
lcd.LCD_DisplayStrings_WithAddress(0x83,"OVER");}
else if(liquid_level<10){
lcd.LCD_DisplayStrings_WithAddress(0x83,"");
lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
else{
lcd.LCD_DisplayStrings_WithAddress(0x83,text_liquid_level);
lcd.LCD_DisplayStrings_WithAddress(0x84,"cm"); }
// lcd.LCD_DisplayStrings_WithAddress(0x83," Welcome to ");
resistance=analogRead(0);
sprintf(text_resistance,"%d",resistance);
lcd.LCD_DisplayStrings_WithAddress(0x8b," ");
lcd.LCD_DisplayStrings_WithAddress(0x8b,text_resistance);
}
delay(2000);
}
前几年编的自动浇水的程序
带LCD12864液晶显示,液位高于10cm,电阻大于500,启动水泵浇水。
视频明天回单位的电脑上找找!
bacon6581 发表于 2013-2-24 21:16 static/image/common/back.gif
#include "ST7920.h"
#include "PIC.h"
厉害。但不是泡在水里,是检测湿度的 前段时间刚写了个自动浇花的教程。你可以到DFrobot的讨论区找一下,或者看《无线电》今年的第三期
页:
[1]