极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9588|回复: 4

第一次做程序,,,两三个月之前做的摇头和扫描子程序,求指正

[复制链接]
发表于 2013-1-16 18:28:35 | 显示全部楼层 |阅读模式
本来是做小车的 好久没动了。。。要知道我们学校十月份开始考试考到现在了 怨念啊!!!!

这个程序用来扫描最近距离的,检测到最近距离了之后迅速摇头转向最近的地方。。。。但是有时候会卡。。。不知道为什么。

其实我知道这样做不怎么好,等暑假了我把它修改一下,应该先把扫描到的东西存数组的 但那时候就没想到。。。前段时间想到了懒得加。。。求大神帮优化~~~~
回复

使用道具 举报

 楼主| 发表于 2013-1-16 18:29:58 | 显示全部楼层
本帖最后由 cool2005tzh 于 2013-1-16 18:43 编辑

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-16 18:31:05 | 显示全部楼层
  1. #include <arduino.h>

  2. int trig = 2;
  3. int echo = 3;
  4. int servo=4;
  5. Servo frontservo;
  6. float nearest=99999;
  7. int angle=90;
  8. float lonth=9999;

  9. void scan(int pos);

  10. //--------------------------------------------------------------
  11. //---------------protect servo--------------------------------
  12. //----------------------------------------------------------------  
  13. void ahead()
  14. {
  15.   int npos=frontservo.read();
  16.   if (npos>90)
  17.   {
  18.     for(int pos=npos;pos>90;pos-=1)
  19.     {
  20.       frontservo.write(pos);
  21.       delay(5);
  22.     }
  23.   }
  24.   
  25.   if (npos<90)
  26.   {
  27.     for(int pos=npos;pos<90;pos+=1)
  28.     {
  29.       frontservo.write(pos);
  30.       delay(5);
  31.     }
  32.   }
  33.   
  34. }
  35. void research()
  36. {
  37. //--------------------------------------------------------------
  38. //---------------protect tuoji--------------------------------
  39. //----------------------------------------------------------------  
  40.   int npos=frontservo.read();
  41.   for(int pos=npos;pos>0;pos-=1)
  42.   {
  43.     frontservo.write(pos);
  44.     delay(5);
  45.   }
  46. //--------------------------------------------------------------
  47. //-------------------research 0--180--------------------------------
  48. //----------------------------------------------------------------
  49.   for(int pos=0;pos<180;pos+=5)
  50.   {
  51.     frontservo.write(pos);
  52.     scan(pos);
  53.   }
  54. //--------------------------------------------------------------
  55. //---------------research 180--0--------------------------------
  56. //----------------------------------------------------------------
  57.   for(int pos=180;pos>0;pos-=2)
  58.   {
  59.     frontservo.write(pos);
  60.     scan(pos);
  61.   }
  62. //--------------------------------------------------------------
  63. //---------------pot to the nearest eagle--------------------------------
  64. //----------------------------------------------------------------  
  65. for(int pos=0;pos<angle;pos+=2)
  66. {
  67.    frontservo.write(pos);
  68.    delay(5);
  69. }
  70. //Serial.print("it is the nearest");
  71. //delay(1000);
  72. }

  73. void scan(int pos)
  74. {
  75.     digitalWrite(trig,1);//sent signal
  76.     delay(10);
  77.     digitalWrite(trig,0);
  78.     float time=pulseIn(echo,HIGH);//resive signal
  79.     float lonth=((time)*340)/20000;
  80.     nearest=min(lonth,nearest);//nearest or not
  81.     if(nearest==lonth & lonth<15)
  82.     angle=pos;
  83.    
  84.     /*Serial.print("time:");
  85.     Serial.println(time);
  86.     Serial.print("lonth:");
  87.     Serial.print(lonth);
  88.     Serial.print("       neareat:");
  89.     Serial.println(nearest);
  90.     Serial.print("angle:");
  91.     Serial.print(pos);
  92.     Serial.print("       nearest angle:");
  93.     Serial.println(angle);*/
  94. }
复制代码

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-16 18:33:24 | 显示全部楼层
这个是一点不起作用的主程序和小车运动的程序。。。。纠结 就是只会摇头


  1. #include <Servo.h>
  2. #include "action.h"
  3. #include "research.h"

  4. void setup()
  5. {
  6.   pinMode(trig,OUTPUT);
  7.   pinMode(echo,INPUT);
  8.   //Serial.begin(9600);
  9.   frontservo.attach(servo);
  10. }

  11. void loop()
  12. {
  13.   ahead();
  14.   research();
  15.   while(1)
  16.   {
  17.     direction();
  18.   }  
  19. }

  20. void direction()
  21. {
  22.   scan(angle);
  23.   if(lonth>15)
  24.   {   
  25.     goahead();
  26.   }
  27.   else
  28.   {
  29.     research();
  30.     if (angle>100)
  31.     turnr();
  32.     if (angle<80)
  33.     turnl();
  34.   }

  35. }  
复制代码




前进后退什么的


  1. #include <arduino.h>
  2. int lmotor1=5;
  3. int lmotor2=6;
  4. int rmotor1=7;
  5. int rmotor2=8;

  6. void goahead()
  7. {
  8.   digitalWrite(lmotor1,HIGH);
  9.   digitalWrite(lmotor2,LOW);
  10.   digitalWrite(rmotor1,HIGH);
  11.   digitalWrite(rmotor2,LOW);
  12. }

  13. void back()
  14. {
  15.   digitalWrite(lmotor1,LOW);
  16.   digitalWrite(lmotor2,HIGH);
  17.   digitalWrite(rmotor1,LOW);
  18.   digitalWrite(rmotor2,HIGH);
  19. }

  20. void turnl()
  21. {
  22.   digitalWrite(lmotor1,LOW);
  23.   digitalWrite(lmotor2,HIGH);
  24.   digitalWrite(rmotor1,HIGH);
  25.   digitalWrite(rmotor2,LOW);
  26. }

  27. void turnr()
  28. {
  29.   digitalWrite(lmotor1,HIGH);
  30.   digitalWrite(lmotor2,LOW);
  31.   digitalWrite(rmotor1,LOW);
  32.   digitalWrite(rmotor2,HIGH);
  33. }
复制代码

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-16 18:36:39 | 显示全部楼层
我现在又买了6dof还有蓝牙模块。。。到时候做出来玩玩~~~~
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-28 01:45 , Processed in 0.048043 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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