とりあえずのArduinoのコードを載せておく。
int pin[4] = {10,11,12,13};
int TACpin = 2;
int MAGpin = 3;
void reverse(int rot){
for(int i=0;i<rot*120;i++){
for(int i=0;i<4;i++){
int prev = i-1;
int next = i+1;
if(prev < 0) prev = 3;
if(next > 3) next = 0;
digitalWrite(pin[prev], LOW);
digitalWrite(pin[i], HIGH);
digitalWrite(pin[next], HIGH);
delay(3);
}
}
}
void forward(int rot){
for(int i=0;i<rot*120;i++){
for(int i=3;i>=0;i--){
int prev = i+1;
int next = i-1;
if(prev > 3) prev = 0;
if(next < 0) next = 3;
digitalWrite(pin[prev], LOW);
digitalWrite(pin[i], HIGH);
digitalWrite(pin[next], HIGH);
delay(3);
}
}
}
void setup(){
for(int i=0;i<4;i++){
pinMode(pin[i], OUTPUT);
}
pinMode(2, INPUT);
pinMode(3, INPUT);
if (digitalRead(MAGpin) == HIGH) {
forward(1);
}
for(int job=0;job<112;job++){
if (digitalRead(TACpin) == HIGH && digitalRead(MAGpin) == LOW) {
reverse(4);
job = job - 2;
}
else {
forward(3);
reverse(1);
}
}
for(int job=0;job < 225;job++){
if (digitalRead(MAGpin) == LOW) {
reverse(1);
}
}
}
void loop (){}