int stepCounter;
int steps = 1000;
int Speed = 500;
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);;
void setup() {
pinMode(2, OUTPUT); // Direction
pinMode(3, OUTPUT); // Step
pinMode(4, OUTPUT); // Enable
digitalWrite(4, LOW);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE, BLACK); // set text color to white and black background
display.setCursor(0, 0); // move cursor to position (15, 0) pixel
display.display(); // update the display
display.setTextSize(2); // text size = 2
display.clearDisplay();
}
void loop() {
digitalWrite(2, LOW); // Clockwise
for (stepCounter = 0; stepCounter < steps; stepCounter++) {
display.clearDisplay();
display.setTextSize(2);
display.setCursor(1, 15);
display.print(String("POS:") + stepCounter);
display.display();
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delayMicroseconds(Speed);
}
digitalWrite(4, HIGH);
delay(2000);
digitalWrite(4, LOW);
digitalWrite(2, HIGH); // Counterclockwise
for (stepCounter = 0; stepCounter < steps; stepCounter++) {
display.clearDisplay();
display.setTextSize(2);
display.setCursor(1, 15);
display.print(String("POS:") + stepCounter);
display.display();
digitalWrite(3, HIGH);
digitalWrite(3, LOW);
delayMicroseconds(Speed);
}
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
}