加入交流群  

扫一扫,添加管理员微信
备注:参考设计,即可被拉入群
和也在搞设计小伙伴们碰一碰

收藏 

评论 

sigma 发布

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

 
设计简介

手机追星拍摄效果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);
    }
  }

}

 

参考设计图片
×

!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。

 
相关器件
器件 类型 描述 数据手册
rz7899 电机驱动 25V 4A 控制直流电机正反转 点击下载
0805B104K500NT 贴片电容 精度:±10% 容值:100nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
PESD0603-240 TVS二极管 箝位电压:45V 击穿电压(最小值):- 反向关断电压(典型值):24V 点击下载
CL10B223KB8NNNC 贴片电容 精度:±10% 容值:22nF 额定电压:50V 温漂系数(介质材料):X7R 材质:X7R 点击下载
0805W8J0102T5E 贴片电阻 阻值(欧姆):1K 精度:±5% 功率:1/8W 温度系数:±100ppm/°C 点击下载
RH6030 触摸芯片 单按键触摸感应开关 点击下载
19-217/R6C-AL1M2VY/3T 发光二极管 照明颜色:红色 主波长/色坐标:617.5~633.5nm 点击下载
XY126V-5.0-2P 螺钉式接线端子 点击下载
0603WAF1001T5E 贴片电阻 阻值(欧姆):1K 精度:±1% 功率:1/10W 温度系数:±100ppm/°C 点击下载
TS-1101-B-W 轻触开关 点击下载
X6511FV-04-C85D32 排母 点击下载
SK-3296S-01-L3 拨动开关 额定电压 DC:12V 触点额定电流:50mA @ 12VDC 开关功能:On-On 电路结构:SPDT 额定电压 AC:- 点击下载
XKB7070-Z 按键开关 自锁/无锁:自锁 开关高度:12.20mm 触点额定电流:100mA 作用力:160±80gf 安装类型:通孔 外形尺寸(长宽):7.00mm x 7.00mm 电路结构:DPDT 点击下载
HX25003-5A 线对板/线对线连接器 俗称: XH2.54 点击下载
CMFA103J3600HANT NTC热敏电阻 点击下载
群聊设计,与管理员及时沟通

欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。

 
查找数据手册?

EEWorld Datasheet 技术支持

论坛推荐 更多
更新时间2024-11-21 08:32:29

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD参考设计中心

站点相关: TI培训 德州仪器(TI)官方视频课程培训

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved