极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21959|回复: 18

刚做了一个光线追踪系统,不太完美,请问大家有什么改进方法

[复制链接]
发表于 2013-7-16 16:25:20 | 显示全部楼层 |阅读模式
本帖最后由 cyq456 于 2013-7-16 16:25 编辑
  1. #include<Servo.h>
  2. Servo Pservo; //仰角
  3. Servo Yservo;//旋转角
  4. int PPosition=0;//用于记录最大光线的仰角
  5. int YPosition=0;//用于记录最大光线的旋转角
  6. int count;
  7. float MaxV=0;//用于记录最大光线的电压值


  8. void detection()//寻找最大光线的函数
  9. {
  10. float n=0;
  11. for(int i=0;i<180;i=i+10)
  12. {
  13. Yservo.write(i);
  14. delay(100);
  15. for(int j=0;j<180;j=j+10)
  16. {
  17. Pservo.write(j);
  18. delay(50);
  19. while(count<10)//将光线电压值相加然后取平均值
  20. {
  21. n=n+analogRead(A0);
  22. delay(10);
  23. count=count+1;
  24. }
  25. Serial.print("count:");
  26. Serial.print(count);
  27. n=n/(count);
  28. count=0;

  29. // Serial.print("n:");
  30. //Serial.print(n);
  31. //Serial.println();
  32. if(n>MaxV)//记录目前最大值的位置
  33. {
  34. MaxV=n;
  35. YPosition=i;
  36. PPosition=j;
  37. }
  38. // Serial.print("MaxV:");
  39. // Serial.print(MaxV);
  40. //Serial.print("Position:");
  41. //Serial.print(Position);
  42. //Serial.println();
  43. n=0;
  44. }
  45. }
  46. Yservo.write(YPosition);//返回最大值位置
  47. Pservo.write(PPosition);//返回最大值位置
  48. MaxV=0;
  49. }
  50. void setup()
  51. {
  52. Serial.begin(9600);
  53. Pservo.attach(9);
  54. Yservo.attach(10);
  55. delay(100);
  56. Pservo.write(90);
  57. Yservo.write(90);
  58. delay(1000);

  59. }
  60. void loop()
  61. {
  62. detection();
  63. delay(10000);//每10秒进行一次
  64. }
复制代码
这是代码,以下是图片




以这种方式实现,舵机会出现抖动,还有寻找最大光线过程时间比较长,大家有什么解决方法?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-7-16 20:52:37 | 显示全部楼层
上传个视频看看
回复 支持 反对

使用道具 举报

发表于 2013-7-16 22:17:05 | 显示全部楼层
多个光敏管,推荐四个组成矩阵,然后加高遮光罩。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 22:24:17 | 显示全部楼层
迷你强 发表于 2013-7-16 22:17
多个光敏管,推荐四个组成矩阵,然后加高遮光罩。。

请问如何摆,有实例吗?
回复 支持 反对

使用道具 举报

发表于 2013-7-16 23:08:35 | 显示全部楼层
矩阵,矩形的四个点
回复 支持 反对

使用道具 举报

发表于 2013-7-17 00:36:21 | 显示全部楼层
这么慢,不行的,应该采用图像识别的方法。OpenCV 来实现吧。
回复 支持 反对

使用道具 举报

发表于 2013-7-17 08:37:37 | 显示全部楼层
你的算法当中还有改进的地方的!比如你现在是扫描180度,扫一次后确认最大值,可以改为一边扫一边计算最大值,如果前进方向上扫到的值小于当前的值,就停止下来,就可以省去一部份扫描时间和重新定位时间!
回复 支持 反对

使用道具 举报

发表于 2013-7-17 17:01:55 | 显示全部楼层
用四个光敏管组成矩阵的话要用透镜来聚光,把光敏管放在焦点上,当四个管输入相等时就正好对准光源了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-17 22:37:02 | 显示全部楼层
fish6823 发表于 2013-7-17 17:01
用四个光敏管组成矩阵的话要用透镜来聚光,把光敏管放在焦点上,当四个管输入相等时就正好对准光源了.

不太懂,总共有四个光敏管,是把哪个光敏管放在焦点上?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-17 22:43:27 | 显示全部楼层
拾瑞 发表于 2013-7-17 08:37
你的算法当中还有改进的地方的!比如你现在是扫描180度,扫一次后确认最大值,可以改为一边扫一边计算最大值,如 ...

噢,这算法好,先谢啦,我回去试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-17 22:45:32 | 显示全部楼层
szpapas 发表于 2013-7-17 00:36
这么慢,不行的,应该采用图像识别的方法。OpenCV 来实现吧。

我才刚入门,这个太复杂了吧
回复 支持 反对

使用道具 举报

发表于 2013-7-18 12:24:09 | 显示全部楼层
光线追踪系统!!!!!
回复 支持 反对

使用道具 举报

发表于 2013-7-18 12:24:34 | 显示全部楼层
光线还能追踪码????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-18 13:48:37 | 显示全部楼层
学慧放弃 发表于 2013-7-18 12:24
光线还能追踪码????

就是探测周围最强光方向的系统
回复 支持 反对

使用道具 举报

发表于 2013-7-18 20:09:33 | 显示全部楼层
cyq456 发表于 2013-7-18 13:48
就是探测周围最强光方向的系统

谢谢楼主!!!!!1
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 20:50 , Processed in 0.043450 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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