找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9529|回復(fù): 4
收起左側(cè)

Arduino追光器(光敏電阻+步進(jìn)電機)實驗

[復(fù)制鏈接]
ID:426684 發(fā)表于 2018-12-7 21:55 | 顯示全部樓層 |閱讀模式
效果:


硬件:
Arduino UNO
三相四線步進(jìn)電機 x1
光敏電阻 x2
電阻 x 2
LED X 2

接線圖:
連線圖.jpg


代碼:
//追光器(光敏電阻+步進(jìn)電機   利用光敏電阻阻值差控制步進(jìn)電機旋轉(zhuǎn))
#include <Arduino.h>
#define ADpin1 A0  //光敏電阻1
#define ADpin2 A1  //光敏電阻2
#define LED1 6  
#define LED2 7

//步進(jìn)電機
#define A 8      //引腳命名
#define B 9
#define C 10
#define D 11

int ADBuffer1 = 0;
int ADBuffer2 = 0;
int temp=0;
void setup()
{
//設(shè)置引腳為輸出引腳
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(A,OUTPUT);   
  pinMode(B,OUTPUT);
  pinMode(C,OUTPUT);
  pinMode(D,OUTPUT);
  Serial.begin(9600);                                //波特率9600
}

void loop(){
  ADBuffer1 = analogRead(ADpin1);                //讀取AD值
  Serial.print("AD1 = ");
  Serial.println(ADBuffer1);
  ADBuffer2 = analogRead(ADpin2);          //讀取AD值
  Serial.print("AD2 = ");
  Serial.println(ADBuffer2);
  temp=ADBuffer2-ADBuffer1;                     
  Serial.print("temp = ");
  Serial.println(temp);
  if(temp>0 and temp>5){
    digitalWrite(LED1,HIGH);                          //點亮LED
    digitalWrite(LED2,LOW);                         //熄滅LED
    delay(500);          //延時500ms
    bjdjzz();                                         //步進(jìn)電機正旋轉(zhuǎn)
    }else{
    digitalWrite(LED1,LOW);                          //熄滅LED
    digitalWrite(LED2,LOW);                           //熄滅LED
    delay(500);          //延時500ms
  }


  if(temp<0 and temp<-5) {
    digitalWrite(LED1,LOW);                //熄滅LED
    digitalWrite(LED2,HIGH);                //點亮LED
   delay(500);                                        //延時500ms
   bjdjfz();                                         //步進(jìn)電機反旋轉(zhuǎn)
     }else{
    digitalWrite(LED1,LOW);    //熄滅LED
    digitalWrite(LED2,LOW);    //熄滅LED
    delay(500);          //延時500ms
  }
}

void Phase_A()
{
  digitalWrite(A,HIGH);    //A1引腳高電平
  digitalWrite(B,LOW);
  digitalWrite(C,LOW);
  digitalWrite(D,LOW);
}

void Phase_B()
{
  digitalWrite(A,LOW);
  digitalWrite(B,HIGH);    //B1引腳高電平
  digitalWrite(C,LOW);
  digitalWrite(D,LOW);
}

void Phase_C()
{
  digitalWrite(A,LOW);
  digitalWrite(B,LOW);
  digitalWrite(C,HIGH);    //C1引腳高電平
  digitalWrite(D,LOW);
}

void Phase_D()
{
  digitalWrite(A,LOW);
  digitalWrite(B,LOW);
  digitalWrite(C,LOW);
  digitalWrite(D,HIGH);    //D1引腳高電平
}
//電機正轉(zhuǎn)
void bjdjzz(){
for(int i=1;i<35;i++){
  Phase_A();      //設(shè)置A相位
  delay(5);     //改變延時可改變旋轉(zhuǎn)速度
  Phase_B();      //設(shè)置B相位
  delay(5);
  Phase_C();      //設(shè)置C相位
  delay(5);
  Phase_D();      //設(shè)置D相位
  delay(5);
}
}
//電機反轉(zhuǎn)
void bjdjfz(){
for(int i=1;i<35;i++){
  Phase_D();      //設(shè)置A相位
  delay(5);         //改變延時可改變旋轉(zhuǎn)速度
  Phase_C();      //設(shè)置B相位
  delay(5);
  Phase_B();      //設(shè)置C相位
  delay(5);
  Phase_A();      //設(shè)置D相位
  delay(5);
}
}




評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:441552 發(fā)表于 2018-12-8 08:36 來自觸屏版 | 顯示全部樓層
豁然開朗
回復(fù)

使用道具 舉報

ID:536314 發(fā)表于 2019-5-12 18:11 | 顯示全部樓層
燒錄時出錯是怎么回事 樓主能告訴一下嗎
回復(fù)

使用道具 舉報

ID:452731 發(fā)表于 2019-5-22 00:05 | 顯示全部樓層
非常不錯
回復(fù)

使用道具 舉報

ID:171746 發(fā)表于 2019-12-18 17:21 | 顯示全部樓層
三相四線步進(jìn)電機是什么樣的?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表