open 发表于 2016-3-9 13:29

从零开始打造一个GOTO系统(1)

   论坛上讨论的大神很多,贴出来的代码也很多,但是我压根就看不懂,往往看到这么大一串代码就觉得非常难,因为本人小白一个,往往看到这么大一串代码就觉得非常难,要学什么中断 时间 等等。为了让自己有个更好的积极性,就一步一个脚印由浅到深慢慢学习吧。至目前为止我只才学了两三句单片机语句,还望有大神指点。


   软件需求:Stellarium,Device Monitoring Studio(监听端口用),audunio 1.6.7 (写程序用),teensyduino(因为我用的是TEENSY所以要加装)
   硬件需求:TEENSY 2.0 ++ (之所以用这个,是我很早前就有了的直接拿来用) 同好可以在网上购 ardunio pro micro

   1、安装ardunio
   
2、设置Stellarium
       在设置Stellarium的时候就遇到一小问题,插件---望远镜控制----配置按钮灰色无法点击。解决方法。勾选启动时加载后关闭Stellarium重新开启就可以了。

想看日志的可以在选项勾上记录至文件。
   3、分析LX200协议,这里直接复制论坛上的资料。
         1、 stellarium 在没有任何操作的时候会不停的发送         
                #:GR#   (询问现在望远镜指向的RA值)
          2、当正确回复 stellarium时,会发送
            #:GD#(询问现在望远镜指向的DEC值)
          3、 当正确回复 GD时,stellarium中会出现一个黄色圆圈
          4、 当没有正确回复 GD时, stellarium 重复发送 GR# 来询问
          以上 1-4 是 不停止的, 回复 GR GD 是需要按照一定格式进行回复的,参看LX200串口协议

    4、在stellarium显示赤道仪的位置

代码:
String inputString = "";            
void setup() {
Serial.begin(9600);//端口波特比
}

void loop() {
   while (Serial.available()>0){
      char inChar = Serial.read();//读取端口数值
      inputString += String(inChar);
      delay(5);
    }
    if (inputString == "#:GR#"){   //stellarium询问现在望远镜指向的RA值
      Serial.print ("02:31:50#"); //返回赤道仪AR值给stellarium   取的是北极星的值
      inputString = "";
    }
    if (inputString == "#:GD#"){//stellarium询问现在望远镜指向的DEC值
      Serial.print ("+89*15:51#"); //返回赤道仪DEC值给stellarium 取的是北极星的值
      inputString = "";
    }
   }效果图:

         

殒落之殇 发表于 2016-3-9 13:50

不明觉厉啊!

sunshm 发表于 2016-3-9 14:11

不错,使用audunio开发的

xiaoguilink 发表于 2016-3-9 16:01

别用if,用switch case

sdlylzj 发表于 2016-3-9 17:04

不懂单片机,学不来

open 发表于 2016-3-10 11:17

xiaoguilink 发表于 2016-3-9 16:01
别用if,用switch case

有分别吗?

xiaoguilink 发表于 2016-3-10 11:39

open 发表于 2016-3-10 11:17
有分别吗?

从功能上,都可以。从优化上说,分支项多的话,switch case 快很多。

open 发表于 2016-3-10 12:56

xiaoguilink 发表于 2016-3-10 11:39
从功能上,都可以。从优化上说,分支项多的话,switch case 快很多。

到最后再考虑做优化。

ccqhms 发表于 2016-3-10 13:02

不懂的人问一下,没有这块板子,直接电脑USB转232串口连接赤道仪不行吗?
页: [1]
查看完整版本: 从零开始打造一个GOTO系统(1)