Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
#include <Arduino.h>
#include "Suteppa.h"
#define IN1 9
#define IN2 10
#define IN3 11
#define IN4 12
#define SW 2
Suteppa s;
void step(int d)
{
static const int hs[8] = {0b1000,0b1100,0b0100,0b0110,0b0010,0b0011,0b0001,0b1001};
static int i;
i += d;
if(i > 7) i = 0;
if(i < 0) i = 7;
byte b = hs[i];
digitalWrite(IN1, bitRead(b, 0));
digitalWrite(IN2, bitRead(b, 1));
digitalWrite(IN3, bitRead(b, 2));
digitalWrite(IN4, bitRead(b, 3));
}
void calibrate()
{
s.rotate(Suteppa::RELATIVE, -999, false);
while(digitalRead(SW) && s.tick());
s.setHome();
}
void setup()
{
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(SW, INPUT_PULLUP);
//初期化
s.init(4096, step);
//キャリブレーション用速度。最初は早く
s.setSpeed(2000);
//キャリブレーション
calibrate();
//一度スイッチから離して
delay(100);
s.rotate(Suteppa::RELATIVE, 20);
delay(100);
//キャリブレーション用速度。二回目は丁寧にゆっくり
s.setSpeed(4000);
//もう一度キャリブレーション
calibrate();
//スムージング有効
s.beginSmooth(50, 2000);
//通常速度は早めに
s.setSpeed(1200);
delay(100);
}
void loop()
{
//中心から+100の位置
s.rotate(Suteppa::ABSOLUTE, 488/2+100);
delay(10);
//中心から-100の位置
s.rotate(Suteppa::ABSOLUTE, 488/2-100);
delay(10);
//行ったり来たりするだけ。
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment