void bl3_motor_step(BL3MotorFD motor) { BL3Motor * mymot = bl3_motors->motors[motor]; bl3_motor_turn_off(motor); analog_write(mymot->pin_current, mymot->current); switch(mymot->status) { case (0): { write_pin(mymot->pin_1_H, HIGH); write_pin(mymot->pin_2_L, HIGH); mymot->status++; }break; case (1): { write_pin(mymot->pin_3_H, HIGH); write_pin(mymot->pin_2_L, HIGH); mymot->status++; }break; case (2): { write_pin(mymot->pin_3_H, HIGH); write_pin(mymot->pin_1_L, HIGH); mymot->status++; }break; case (3): { write_pin(mymot->pin_2_H, HIGH); write_pin(mymot->pin_1_L, HIGH); mymot->status++; }break; case (4): { write_pin(mymot->pin_2_H, HIGH); write_pin(mymot->pin_3_L, HIGH); mymot->status++; }break; case (5): { write_pin(mymot->pin_1_H, HIGH); write_pin(mymot->pin_3_L, HIGH); mymot->status = 0; }break; default: { // not good :-0 mymot->status = 0; } } }
int main(void) { setup(); while(1) { x = x + PI * 0.01; if(x >= PI)x = 0; y = 2000 - (sin(x) + 1) * 1000; analog_write(&PB8, y); delay_ms(10); } }