用Arduino扩展无人飞行器续集(飞行器自主避障篇).docVIP

  • 14
  • 0
  • 约3.2千字
  • 约 9页
  • 2021-03-18 发布于山东
  • 举报

用Arduino扩展无人飞行器续集(飞行器自主避障篇).doc

用Arduino扩展无人飞行器续集(飞行器自主避障篇) (本文原创归 魏宇科 所有,我只是搬运工By华科-求学) 在上一个帖子中(用Arduino扩展无人飞行器+普及无人机知识,不会算法的人必看 ) 我向大家介绍了多旋翼飞行器的基本知识和用Arduino扩展的方法,这一期我就向大家分享一个Arduino扩展无人机的重要应用:用超声波传感器实现自主避障的功能。在多次试验中,飞机已经能实现单方向的自主避障。下面我先从硬件开始。 硬件:我采用了QQ飞控和一块Arduino nano作为扩展控制器,添加了一个sr04的超声波传感器,这样就组成了一个前方区域的探测控制闭环系统。? code: // uav.ino #includeServo.h; #define AIL1??5? ?//AIL fuyi #define ELE2??6? ?//ELE shengjiang #define LED? ?13 unsigned long INAIL; unsigned long INELE; int OUTAIL; int OUTELE; int delta = 0; Servo AIL; Servo ELE; const int TrigPin = 2;? const int EchoPin = 3;? float distance;? void setup() {? ?? ??? ??pinMode(AIL1,0); ??pinMode(ELE2,0); ??pinMode(LED,1); ??AIL.attach(9); ??ELE.attach(10); ??Serial.begin(9600); ??pinMode(TrigPin, OUTPUT);? ??pinMode(EchoPin, INPUT);? }? void loop() { ??sr(); ??if(distance=130) ??{ ? ? delta = 130 - distance; ? ? delta = delta/4; ??} ??INAIL = pulseIn(AIL1, 1); ??INELE = pulseIn(ELE2, 1); ??OUTAIL = map(INAIL,1000,2000,47,144); ??OUTELE = map(INELE,1000,2000,47,144); ??OUTELE = OUTELE - delta; ??AIL.write(OUTAIL); ??ELE.write(OUTELE); ??Serial.print(AIL=); ??Serial.print(INAIL); ??Serial.print( ELE=); ??Serial.print(INELE); ??Serial.print(? ?); ? ?Serial.print(outail= ); ??Serial.print(OUTAIL); ??Serial.print( outele= ); ??Serial.print(OUTELE); ??Serial.print(? ?); ??Serial.print(delta= ); ??Serial.print(delta); ??Serial.print(? ?); ??digitalWrite(LED,0); ??delay(5); } void sr()? {? ??digitalWrite(TrigPin, LOW);? ??delayMicroseconds(2); ??digitalWrite(LED,1);? ??digitalWrite(TrigPin, HIGH);? ??delayMicroseconds(10); ??digitalWrite(TrigPin, LOW);? ??digitalWrite(LED,0); ??distance = pulseIn(EchoPin, HIGH , 8000) / 58.00; ??if(distance=130 || distance==0)//如果distance大于等于130或等于0,都让distance赋值130 ??{? ? ? distance=130; ??} ??Serial.print(distance);? ??Serial.print(cm);? ??Serial.println();? ??delay(50);? } 代码如有疑问可参考上一帖(用Arduino扩展无人飞行器+普及无人机知识,不会算法的人必看) 代码中的控制只选用了AIL 和ELE作为控制通道,独立了油门(THR)和方向通道,目的是若发生意外情况,飞手可操控油门通道让飞机停止工作,保证重要

文档评论(0)

1亿VIP精品文档

相关文档