Шаговый двигатель и сдвиговый регистр. Вот скетч думаю над скетчем управления двух шаговиков или шаговиком и Н мостом. Код (C++): // оно крутится /* 1 | + 2 | 0 3 | ds 2 4 | - 5 | st 3 6 | ch 4 7 | mr+ 8 | q7" */ int L = 0; byte fs = 0b00010000; byte x = 0; long vrema = 1000; const int data_pin = 2; const int sh_pin = 4; const int st_pin = 3; unsigned long senstime = 0; void setup() { pinMode(data_pin, OUTPUT); pinMode(sh_pin, OUTPUT); pinMode(st_pin, OUTPUT); Serial.begin(9600); Serial.println("hel"); } void loop() { if (analogRead(A3) > 700 ) { stepp(50); } if (analogRead(A3) < 400 ) { stepp(-50); } else { stepp(50); } } int stepp(int i) { L = i; if (i > 0) { i = abs(i); while (i > 0) { for (int z = 0; z < 4; z++ ) { senstime = micros(); x = fs << z; fire(x); Serial.print(" "); Serial.print(z); Serial.print(" "); Serial.print(x,BIN); delayMicroseconds(vrema); Serial.println(micros() - senstime); } i--; if (i == 0) { break; } } } else { i = abs(i); while (i > 0) { for (int y = 3; y > -1; y--) { senstime = micros(); x = fs << y; fire(x); Serial.print(" "); Serial.print(y); Serial.print(" "); Serial.print(x,BIN); delayMicroseconds(vrema); // Serial.print(" t "); Serial.println(micros() - senstime); } i--; Serial.println("shag "); Serial.println(i, DEC); if (i == 0) { break; } } } } void fire(byte v) { for (int i = 0; i < 8; i++) { digitalWrite(sh_pin, LOW); digitalWrite(data_pin, v & (1 << i )); digitalWrite(sh_pin, HIGH); } digitalWrite(st_pin, HIGH); digitalWrite(st_pin, LOW); }