Generare segnale encoder

Ecco il codice:

// encoder virtuale 2.0

int a = 11;
int a- = 10;
int b = 9;
int b- = 8;
int MT_out = 7;
int acc = 6;
long timeBase;
int analogpin = 0;
volatile int state;
volatile int state1;
int mt;
int i;
long duration;

void setup(){
pinMode (a, OUTPUT);
pinMode (a-, OUTPUT);
pinMode (b, OUTPUT);
pinMode (b-, OUTPUT);
pinMode (MT_out, OUTPUT);
pinMode (acc, OUTPUT);
Serial.begin(9600);
}
void loop(){
Time();
state= !state;
digitalWrite(a,state); digitalWrite(a-,!state);
delayMicroseconds(timeBase);
digitalWrite(b,state);digitalWrite(b-,!state);
delayMicroseconds(timeBase);
mt++;
if (mt == 5){
meter();

}
}

void Time(){
timeBase= analogRead(analogpin);
timeBase= map (timeBase, 0, 1023, 0, 10000);
}
void meter(){
state1 = !state1;
digitalWrite(MT_out,state1);
//accelera();
mt = 0;
}

void accelera(){
if( i < 255){
for (int i ; i<255; i++){
analogWrite( acc, i);
delay(1);
}
}
else{
for (int i ; i>0; i--){
analogWrite( acc, i);
delay(1)
}
}
}