float t_last;
float f;
float t=0;
byte Wave[]={B00000001,B00000010,B00000100,B00001000};
byte Fullstep[]={B00000011,B00000110,B00001100,B00010001};
byte HalfStep[]= {B00000001,B00000010,B00000011,B00000100,B00000101,B00000110,B00000111,B00001000,B00001001,B00001010,B00001011,B00001100,B00001101,B00001111};
String msg="How many spin do u want?";
int num_spin=0;//number of spin
String msg2="which dircation do u want to spin?";
int dirct;//dircation
String msg3="what kind of spin that u want?";//wave/fullstep
int spin_mode;
String msg4="what is the frenquence that u want?";
int i=0;
int cnt=0;
int cnt1=3;
void setup()
{
Serial.begin(9600);
pinMode(8,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
Serial.println(msg3);
Serial.println(msg2);
Serial.println(msg4);
PORTB=0;
}
void loop()
{
if (Serial.available()>0)
{
cnt=0;
spin_mode=Serial.parseInt();
Serial.print(spin_mode);
dirct=Serial.parseInt();
Serial.print(dirct);
f=Serial.parseFloat();
}
if(cnt != num_spin)
{
t=millis();
if(t-t_last>=1000/f)
{
t_last=t;
if(spin_mode==1)
{
if(i==4)
{
i=0;
}
PORTB=Wave[i];
if(dirct==1)
{
i++;
}
else
{
i=cnt1;
cnt1--;
if(cnt1==-1)
{
cnt1=3;
}
}
cnt++;
}
if(spin_mode==2)
{
if(i==4)
{
i=0;
}
PORTB=Fullstep[i];
if(dirct==1)
{
i++;
}
else
{
i=cnt1;
cnt1--;
if(cnt1==-1)
{
cnt1=3;
}
}
cnt++;
}
}
if(spin_mode==3)
{
if(i==4)
{
i=0;
}
PORTB=HalfStep[i];
if(dirct==1)
{
i++;
}
else
{
i=cnt1;
cnt1--;
if(cnt1==-1)
{
cnt1=14;
}
}
cnt++;
}
}
}