|
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); // I2C / TWI
int t1 = 0 ;
int t2 = 0 ;
int t3 = 0 ;
int m1 = 100 ;
int n1 = 100 ;
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
u8g.setFont(u8g_font_unifont);
u8g.setPrintPos(0, 15);
u8g.print(t1);
u8g.setPrintPos(65, 15);
u8g.print(t2);
u8g.setPrintPos(65, 35);
u8g.print(t3);
u8g.setPrintPos(0, 55);
u8g.print(m1);
u8g.setPrintPos(65, 55);
u8g.print(n1);
}
// A4988連接Arduino引腳號
const int dirPin = 2; // Direction
const int stepPin = 3; // Step
const int sleepPin = 4; // Sleep
const int resetPin = 5; // Reset
const int ms2Pin = 6; // Ms3
const int ms1Pin = 7; // Ms2
const int ms0Pin = 8; // Ms1
const int enPin = 9; // Enable
// 電機每圈步數
const int STEPS_PER_REV = 982;
void setup() {
// 設置引腳模式
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(sleepPin,OUTPUT);
pinMode(resetPin,OUTPUT);
pinMode(ms2Pin,OUTPUT);
pinMode(ms1Pin,OUTPUT);
pinMode(ms0Pin,OUTPUT);
pinMode(enPin,OUTPUT);
pinMode(13,OUTPUT);
// 初始化引腳狀態
digitalWrite(sleepPin, HIGH);
digitalWrite(resetPin, HIGH);
digitalWrite(enPin, LOW);
// 初始化電機步進模式為1/4步進
digitalWrite(ms0Pin, LOW);
digitalWrite(ms1Pin, LOW);
digitalWrite(ms2Pin, LOW);
}
void loop() {
if (t2 < m1){
digitalWrite(sleepPin, HIGH); //開啟點擊驅動芯片
for(int i = 0; i < n1; i++)
{
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
delay(10);
digitalWrite(dirPin,LOW); //電機正轉,1/4步,執行一圈+延時共2.5秒
for(int x = 0; x < STEPS_PER_REV; x++)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(1500);
digitalWrite(stepPin,LOW);
delayMicroseconds(1500);
}
delay(500);
digitalWrite(dirPin,HIGH); //電機反轉,1/4步,執行一圈+延時共2.5秒
for(int x = 0; x < STEPS_PER_REV; x++)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(1500);
digitalWrite(stepPin,LOW);
delayMicroseconds(1500);
}
delay(500);
t1 = t1+1;
t3 = t2 * n1 + t1 ;
}
digitalWrite(sleepPin, LOW);
t1 = 0 ;//圈數歸零
t2 = t2+1;
t3 = t2 * n1 + t1 ;
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
delay(10);
for(int j = 0; j < 20; j++)
{
digitalWrite(13, HIGH);//指示燈閃爍
delay(3000);
digitalWrite(13, LOW);
delay(3000);
}
} else {
digitalWrite(13, HIGH);//指示燈閃爍
delay(500);
digitalWrite(13, LOW);
delay(500);
}
}
|
評分
-
查看全部評分
|