123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #include <Servo.h>
- Servo servo1;
- Servo servo2;
- // Pin definitions
- #define DATA_PIN 4 // DS
- #define CLOCK_PIN 16 // SH_CP
- #define LATCH_PIN 17 // ST_CP
- void setup() {
- // Initialize pins
- pinMode(DATA_PIN, OUTPUT);
- pinMode(CLOCK_PIN, OUTPUT);
- pinMode(LATCH_PIN, OUTPUT);
- //Initialize servos
- servo1.attach(14);
- servo2.attach(27);
- }
- void writeStep(byte stepByte) {
- shiftOut(DATA_PIN, CLOCK_PIN, MSBFIRST, stepByte);
- digitalWrite(LATCH_PIN, HIGH);
- digitalWrite(LATCH_PIN, LOW);
- delayMicroseconds(840); //780 min
- }
- void forward(int rev) {
- for (int i = 0; i < rev; i++) {
- writeStep(0b00010001);
- writeStep(0b00110011);
- writeStep(0b00100010);
- writeStep(0b01100110);
- writeStep(0b01000100);
- writeStep(0b11001100);
- writeStep(0b10001000);
- writeStep(0b10011001);
- }
- }
- void backward(int rev) {
- for (int i = 0; i < rev; i++) {
- writeStep(0b10011001);
- writeStep(0b10001000);
- writeStep(0b11001100);
- writeStep(0b01000100);
- writeStep(0b01100110);
- writeStep(0b00100010);
- writeStep(0b00110011);
- writeStep(0b00010001);
- }
- }
- void rotateAntiClockwise(int rev) {
- for (int i = 0; i < rev; i++) {
- writeStep(0b00011001);
- writeStep(0b00111000);
- writeStep(0b00101100);
- writeStep(0b01100100);
- writeStep(0b01000110);
- writeStep(0b11000010);
- writeStep(0b10000011);
- writeStep(0b10010001);
- }
- }
- void rotateClockwise(int rev) {
- for (int i = 0; i < rev; i++) {
- writeStep(0b10010001);
- writeStep(0b10000011);
- writeStep(0b11000010);
- writeStep(0b01000110);
- writeStep(0b01100100);
- writeStep(0b00101100);
- writeStep(0b00111000);
- writeStep(0b00011001);
- }
- }
- void loop() {
- //Stepper test
- forward(50);
- delay(3000);
- backward(50);
- delay(3000);
- //Servo test
- servo1.write(90);
- delay(1000);
- servo2.write(180);
- delay(1000);
- servo1.write(0);
- servo2.write(0);
- delay(3000);
- //rotateClockwise(100);
- //delay(3000);
- //rotateAntiClockwise(100);
- //delay(3000);
- }
|