5752| 4
|
徐州•智能校园•喜羊羊智能草坪机 |
本帖最后由 gggnui 于 2017-4-27 17:39 编辑 大家好,我为大家展示的是智能草坪机。随着学校绿化越来越被重视,草坪的种植越来越广泛,给老师同学带来了清新的环境。而随之带来的草坪养护工作维护成本高。为了减少维护成本,减轻学校园艺工作人员劳动强度。我们设计了集自动修剪草坪、智能浇水、智能施肥于一体的智能型机器人。 我们为它起了一个可爱的名字----喜羊羊。 设计思路:1.智能行走机构:我们用减速电机设为机器人行走动力设备,用超声波传感器和碰撞传感器来检测障碍物,实现壁障和转向功能,达到巡剪草坪和避开障碍的功能。 2.自动修剪机构:利用电机做成电剪刀,实现剪草功能。 3.自动施肥浇水功能:利用机械设备把剪掉的草屑收集并于水性肥料混合搅拌粉碎后与水混合,混合后从后侧均匀喷出,达到施肥浇水的目的。 制作过程: 1.安装转动机构:先把减速电机置于平台内,用螺丝固定于平台内侧两侧,安装上胶轮。 2.安装电池板:把电池板用胶贴贴好固定于平台上面中间。 3.安装主控板:用4根长铜柱把主控板固定于平台。 4.安装剪草机构:先把电机扇叶取下,换成锯片,安装到电机上,再固定于平台前侧。 5.安装水肥机构:水肥收集搅拌设备安装于平台内,水肥喷洒设备安装于平台尾部。 6.安装超声波测距传感器和速度控制传感器:设计智能控制程序,实现智能控制功能。 7、调试。 8、美化。 代码: int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int trigPin, int echoPin) { long duration; pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); digitalWrite(trigPin, LOW); digitalWrite(trigPin, HIGH); duration = pulseIn(echoPin, LOW); duration = duration / 59; if ((duration <=0) || (duration > 45000)) return false; delay(50); return duration; } void setRomeoMotor(int motorId, int speed) { int speedPin, directionPin; if (motorId == 1) { speedPin = 6; directionPin = 7; } else { if (motorId == 2) { speedPin = 5; directionPin = 4; } else { return; } } if (speed == 0) { digitalWrite(speedPin, LOW); } if (speed > 0) { digitalWrite(directionPin, HIGH); analogWrite(speedPin, speed); } else { digitalWrite(directionPin, LOW); analogWrite(speedPin, -speed); } } void __ardublockDigitalWrite(int pinNumber, boolean status) { pinMode(pinNumber, OUTPUT); digitalWrite(pinNumber, status); } void setup() { pinMode( 7 , OUTPUT); pinMode( 6 , OUTPUT); pinMode( 5 , OUTPUT); pinMode( 4 , OUTPUT); Serial.begin(9600); pinMode( 8 , OUTPUT ); pinMode( 12 , INPUT ); digitalWrite( 8 , HIGH ); delay(500); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); } void loop() { Serial.print(map ( analogRead(0) , 0 , 850 , 0 , 100 ) ); Serial.println(); delay( 1000 ); if (( ( map ( analogRead(0) , 0 , 850 , 0 , 100 ) ) > ( 30 ) )) { if (( ( ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 8 , 12 ) ) > ( 30 ) )) { setRomeoMotor(1, 100); setRomeoMotor(2, 100); __ardublockDigitalWrite(3, HIGH); delay( 10 ); } else { setRomeoMotor(1, -50); setRomeoMotor(2, 50); delay( 10 ); __ardublockDigitalWrite(3, LOW); } } } 有待完善 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed