自己写了一个dnspod 动态域名脚本

作者: 分类: 技术文章 时间: 2013-05-09

上次在《无需花生壳,dnspod实现ddns》里说到实现dnspod 的ddns,那是使用别人的代码,需要填写用户名、密码、域名id、记录id。其中域名id和记录id都需要自行通过dnspod 的api获得,使用上存在不方便。

于是自己写了个简单一点的,省略掉了这个2个不友好参数的填写。只需要填写用户名、密码、域名、要实现ddns的记录名。这样参数填写起来就直观多了。

使用方法和前面的文章一样,添加到系统的自启动就行了。

代码地址lixin-dnspod-ddns       https://github.com/topdogs/lixin-dnspod-ddns

Arduino 驱动28byj 步进电机

作者: 分类: 技术文章 时间: 2013-05-04

步进电机28byj

[caption id="attachment_29719" align="alignright" width="210"]28byj步进电机 28byj步进电机[/caption]

主要参数有:5V电压,步距角度5.625,减速比1:64

驱动方式有4拍和8拍。

4拍即:A-B-C-D

8拍即:A-AB-B-BC-C-CD-D-DA

 

 

 

 

步进电机驱动模块uln2003

[caption id="attachment_29720" align="alignright" width="282"]uln2003步进电机驱动模块 步进电机驱动模块[/caption]

arduino 或者单片机都无法直接驱动步进电机。需要一块驱动电路,这里选择了一块uln2003的模块。

模块最上面是4颗LED。

中间的白色卡座和步进电机的相连。

最下面的是4个与单片机等微处理器相连接的io口,当io口处为高电平时,对应的LED灯会亮。

右边有个黑色跳帽的地方是电源输入。

以最简单的4拍为例,只要按顺序轮流将ABCD这4个端口输入高电平,即可驱动电机转动。

 

让轴转一圈要多少拍

轴转一圈是360度,一步能旋转的角度是5.625,360/5.625=64,即要走64步,电机就转一圈,步进电机的组成包括电机和一组减速齿轮组成,根据减速比,电机每转64圈,外轴才转1圈。所以要轴转一圈就需要64*64=4096步。

 

示例代码

[codesyntax lang="cpp" lines="normal"]

#define A 4
#define B 5
#define C 6
#define D 7
//上面定义了4个io口对应的arduino引脚号

void setup(){
  for(int i=4;i<8;i++)
    pinMode(i,OUTPUT);
//将4个io口设置为输入状态
  int s=1;
  //让轴转动一圈
  for(int i=0;i<4096;i++)
  {
    motorStep(s++);
    if(s==9)
      s=1;
    delay(5);
  }

}
//8拍:A-AB-B-BC-C-CD-D-DA
void motorStep(int i){
  switch (i){
  case 1:
    digitalWrite(A,HIGH);
    digitalWrite(B,LOW);
    digitalWrite(C,LOW);
    digitalWrite(D,LOW);
    break;
  case 2:
    digitalWrite(A,HIGH);
    digitalWrite(B,HIGH);
    digitalWrite(C,LOW);
    digitalWrite(D,LOW);
    break;
  case 3:
    digitalWrite(A,LOW);
    digitalWrite(B,HIGH);
    digitalWrite(C,LOW);
    digitalWrite(D,LOW);
    break;
  case 4:
    digitalWrite(A,LOW);
    digitalWrite(B,HIGH);
    digitalWrite(C,HIGH);
    digitalWrite(D,LOW);
    break;
  case 5:
    digitalWrite(A,LOW);
    digitalWrite(B,LOW);
    digitalWrite(C,HIGH);
    digitalWrite(D,LOW);
    break;
  case 6:
    digitalWrite(A,LOW);
    digitalWrite(B,LOW);
    digitalWrite(C,HIGH);
    digitalWrite(D,HIGH);
    break;
  case 7:
    digitalWrite(A,LOW);
    digitalWrite(B,LOW);
    digitalWrite(C,LOW);
    digitalWrite(D,HIGH);
    break;
  case 8:
    digitalWrite(A,HIGH);
    digitalWrite(B,LOW);
    digitalWrite(C,LOW);
    digitalWrite(D,HIGH);
    break;
  }
}
void loop(){
//author:李鑫
}

[/codesyntax]