编辑器版本 ×
标准版

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

专业版 星空摄影|相机手机赤道仪 星河拍摄 拍木星

简介:浩瀚的宇宙,美丽的星空,令我无尽向往,为了拍出漂亮的星空进行了很多尝试,最终在B站大佬指引下,做出了可以追星的赤道仪。 用来抵消地球自转用的。

开源协议: GPL 3.0

发布时间: 2022-09-26 09:19:42
  • 2k
  • 40
  • 47
描述

手机追星拍摄效果https://www.bilibili.com/video/BV14g411m7Ut?vd_source=c748f0905deed633de7597d610ad91cc

3D模型文件在这个群里:681038889 里面保姆级教程

材料的购买:立创商城新人注册优惠券入口可以在这注册领30优惠券,在这里注册有时候还会有不定时的优惠券发放

手机拍摄效果:

手机直出,淡淡的银河系星河,实际上比这个好看一些。

快门速度:S,开到1分钟都不会有拖影。

AF对焦模式开到MF拉到无穷远拍星星

ISO是感光度,大晚上的不建议开超过400

加上了显示屏,使用方法看B站视频,

就是先用指星笔指到北极星,然后调整手机或者相机到你想拍的星星就行了。

大佬用照相机拍的木星

可能是仙女座吧

手机放外边可以打开自动点击器,这样可以间隔一段时间拍一张照片,后期叠加一下或者做个视频都是很方便的。

程序如下:

 

#include <MsTimer2.h>//定时器库的头文件
#include <Wire.h>

// 引入驱动OLED0.91所需的库
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // 设置OLED宽度,单位:像素
#define SCREEN_HEIGHT 32 // 设置OLED高度,单位:像素

// 自定义重置引脚,虽然教程未使用,但却是Adafruit_SSD1306库文件所必需的
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

#define NS  7     //南北半球(正反转) 
#define a   5     //a+
#define aa  6     //a-
#define b   9     //b+
#define bb  10     //b-
#define SS0  12   //速度编码1
#define SS1  11   //~2
#define SS2  8   //~3
#define scanMs   20   //定义扫描时间
const int tab[8][4] = {
  {1, 0, 0, 0},
  {1, 0, 1, 0},
  {0, 0, 1, 0},
  {0, 1, 1, 0}, \
  {0, 1, 0, 0},
  {0, 1, 0, 1},
  {0, 0, 0, 1},
  {1, 0, 0, 1}
};
static int tab_i = 0;//查表循环

//速度表: {{Ms},{Us}}    恒星速/5X/MAX /1h /2h /3h /5h /12h延时速度
//计算:恒星日:23:56:04 = 86164s /2916/96/2 ~ 153.899ms/step
//如需月亮速:89428s /2916/96/2~159.729ms/step
const int Sptab[2][8] = {
  {153 , 30 , 0  , 6  , 12 , 19 , 32 , 76 }, \
  {345 , 780, 800, 412, 824, 237, 162, 950}
};
void scanSp();
long double previousMillis = 0; //上一次转换电平绝对时间
int A = 0;
int Comtime = 0; //补偿恒星速中断、读写、判断耗时 us
int Comtimeset;
float ms = 0.0;
float us = 0.0;
int ctl[4]; //0N1S, 2-5Speed
int b1 = b;
int bb1 = bb;

//int time1 = 0;
//int time2;

void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  pinMode(a,  OUTPUT);
  pinMode(aa, OUTPUT);
  pinMode(b,  OUTPUT);
  pinMode(bb, OUTPUT);
  pinMode(NS, INPUT_PULLUP); //输入上拉 南北半球(正反转)
  pinMode(SS0, INPUT_PULLUP); //speed
  pinMode(SS1, INPUT_PULLUP); //
  pinMode(SS2,  INPUT_PULLUP); //
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);

  for (;;) {

    if (!digitalRead(A1))//增加补偿
    {
      delay(40);
      if (!digitalRead(A1))
      {
        Comtime++;
      }
      Comtimeset = Comtime;
    }
    else if (!digitalRead(A2))//减小补偿
    {
      delay(40);
      if (!digitalRead(A2))
      {
        Comtime--;
      }
      Comtimeset = Comtime;
    }


    words_display();
    display.display();

    if (digitalRead(2) && digitalRead(3)) //加减速按键同时按下,开始追星
    {
      break;
    }
  }
  MsTimer2::set(scanMs, scanSp);//中断扫描引脚
  MsTimer2::start();
}

void scanSp()
{
  if (digitalRead(3))//kj
  {
    for (int i = 0; i <= 7; i++) {
      tt(a, aa, b1, bb1, i);
      delay(1);
    }
  }

  if (digitalRead(2))//js
  {
    for (int i = 0; i <= 7; i++) {
      tt(a, aa, bb, b, i);
      delay(1000);
    }
    delay(100);
  }
  if (!digitalRead(A1))//kj
  {
    ctl[0] = digitalRead(NS);
    ctl[1] = digitalRead(SS0);
    ctl[2] = digitalRead(SS1);
    ctl[3] = digitalRead(SS2);
    Speed(ctl);//计算延时毫秒数
  }

}

void words_display()
{
  ctl[0] = digitalRead(NS);
  ctl[1] = digitalRead(SS0);
  ctl[2] = digitalRead(SS1);
  ctl[3] = digitalRead(SS2);
  Speed(ctl);//计算延时毫秒数
  int spp = ctl[3] + 2 * ctl[2] + 4 * ctl[1];
  display.clearDisplay();
  display.setTextColor(WHITE);
  display.setTextSize(1.5);
  display.setCursor(0, 0);
  display.print("speed:");
  display.print(spp);
  display.setCursor(50, 0);
  display.print("HS:");
  if (digitalRead(NS))
  {
    display.print("N");
  }
  else
  {
    display.print("S");
  }
  display.setCursor(83, 0);
  display.print("RT:");
  display.print(millis() / 1000);
  display.print("s");
  display.setCursor(0, 10);
  display.print("CT:");
  display.print(Comtime);
  display.setCursor(50, 10);
  display.print(int(ms));
  display.print("MS ");
  display.print(int(us));
  display.print("US");
}
void Speed(int ct[4]) //速度与方向
{
  int spp = ct[3] + 2 * ct[2] + 4 * ct[1]; // 0-7
  if (ct[0] == 0) {
    b1 = b;
    bb1 = bb;
  }
  else {
    b1 = bb;
    bb1 = b;
  }
  switch (spp) {
    case 0: {     //star000
        ms = Sptab[0][0];
        us = Sptab[1][0] - Comtime;
      } break;
    case 1: {     //5Xstar001
        ms = Sptab[0][1];
        us = Sptab[1][1];
      } break;
    case 7: {     //MAX111
        ms = Sptab[0][2];
        us = Sptab[1][2];
      } break;
    case 2: {     //1h 010
        ms = Sptab[0][3];
        us = Sptab[1][3];
      } break;
    case 3: {     //2h 011
        ms = Sptab[0][4];
        us = Sptab[1][4];
      } break;
    case 4: {     //3h 100
        ms = Sptab[0][5];
        us = Sptab[1][5];
      } break;
    case 5: {     //5h 101
        ms = Sptab[0][6];
        us = Sptab[1][6];
      } break;
    case 6: {     //12h 110
        ms = Sptab[0][7];
        us = Sptab[1][7];
      } break;
    default : {
      } break;
  }
  //Serial.println(ms);
  //Serial.println(us);
}

void tt(int a1, int aa1, int b1, int bb1, int tab_i) //一个电机循环
{
  digitalWrite(a1,  tab[tab_i][0]);
  digitalWrite(aa1, tab[tab_i][1]);
  digitalWrite(b1,  tab[tab_i][2]);
  digitalWrite(bb1, tab[tab_i][3]);
}

void loop() {

  if (ms >= 20) {       //大于20ms时才使用millis()计时
    long double currentMillis = millis();
    //time1 = micros();
    tt(a, aa, b1, bb1, tab_i);
    if (currentMillis - previousMillis >= ms) {
      delayMicroseconds (us);
      previousMillis = currentMillis + us / 1000;
      tab_i++;
      if (tab_i >= 8) tab_i = 0;
      //time2 = micros();
      //Serial.println(time2-time1);
    }

  }
  else {
    for (int i = 0; i <= 7; i++) {
      tt(a, aa, b1, bb1, i);
      delay(ms);
      delayMicroseconds (us);
    }
  }

}

 

设计图
原理图
1 /
PCB
1 /
暂无
工程附件
序号 文件名称 下载次数
1

IMG_20220922_105513.jpg

3
2

IMG_20220922_105154.jpg

3
工程成员
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

  • 开源平台公众号