刚做了一个光线追踪系统,不太完美,请问大家有什么改进方法
本帖最后由 cyq456 于 2013-7-16 16:25 编辑#include<Servo.h>
Servo Pservo; //仰角
Servo Yservo;//旋转角
int PPosition=0;//用于记录最大光线的仰角
int YPosition=0;//用于记录最大光线的旋转角
int count;
float MaxV=0;//用于记录最大光线的电压值
void detection()//寻找最大光线的函数
{
float n=0;
for(int i=0;i<180;i=i+10)
{
Yservo.write(i);
delay(100);
for(int j=0;j<180;j=j+10)
{
Pservo.write(j);
delay(50);
while(count<10)//将光线电压值相加然后取平均值
{
n=n+analogRead(A0);
delay(10);
count=count+1;
}
Serial.print("count:");
Serial.print(count);
n=n/(count);
count=0;
// Serial.print("n:");
//Serial.print(n);
//Serial.println();
if(n>MaxV)//记录目前最大值的位置
{
MaxV=n;
YPosition=i;
PPosition=j;
}
// Serial.print("MaxV:");
// Serial.print(MaxV);
//Serial.print("Position:");
//Serial.print(Position);
//Serial.println();
n=0;
}
}
Yservo.write(YPosition);//返回最大值位置
Pservo.write(PPosition);//返回最大值位置
MaxV=0;
}
void setup()
{
Serial.begin(9600);
Pservo.attach(9);
Yservo.attach(10);
delay(100);
Pservo.write(90);
Yservo.write(90);
delay(1000);
}
void loop()
{
detection();
delay(10000);//每10秒进行一次
}这是代码,以下是图片
以这种方式实现,舵机会出现抖动,还有寻找最大光线过程时间比较长,大家有什么解决方法?
上传个视频看看 多个光敏管,推荐四个组成矩阵,然后加高遮光罩。。 迷你强 发表于 2013-7-16 22:17 static/image/common/back.gif
多个光敏管,推荐四个组成矩阵,然后加高遮光罩。。
请问如何摆,有实例吗? 矩阵,矩形的四个点 这么慢,不行的,应该采用图像识别的方法。OpenCV 来实现吧。 你的算法当中还有改进的地方的!比如你现在是扫描180度,扫一次后确认最大值,可以改为一边扫一边计算最大值,如果前进方向上扫到的值小于当前的值,就停止下来,就可以省去一部份扫描时间和重新定位时间! 用四个光敏管组成矩阵的话要用透镜来聚光,把光敏管放在焦点上,当四个管输入相等时就正好对准光源了. fish6823 发表于 2013-7-17 17:01 static/image/common/back.gif
用四个光敏管组成矩阵的话要用透镜来聚光,把光敏管放在焦点上,当四个管输入相等时就正好对准光源了.
不太懂,总共有四个光敏管,是把哪个光敏管放在焦点上? 拾瑞 发表于 2013-7-17 08:37 static/image/common/back.gif
你的算法当中还有改进的地方的!比如你现在是扫描180度,扫一次后确认最大值,可以改为一边扫一边计算最大值,如 ...
噢,这算法好,先谢啦,我回去试试 szpapas 发表于 2013-7-17 00:36 static/image/common/back.gif
这么慢,不行的,应该采用图像识别的方法。OpenCV 来实现吧。
我才刚入门,这个太复杂了吧:o 光线追踪系统!!!!! 光线还能追踪码???? 学慧放弃 发表于 2013-7-18 12:24 static/image/common/back.gif
光线还能追踪码????
就是探测周围最强光方向的系统 cyq456 发表于 2013-7-18 13:48 static/image/common/back.gif
就是探测周围最强光方向的系统
谢谢楼主!!!!!1
页:
[1]
2