Шаговый двигатель и сдвиговый регистр.

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Un_ka, 19 авг 2018.

?

хорошее дело пригодиться

  1. да

    0 голосов
    0,0%
  2. нет

    1 голосов
    100,0%
  1. Un_ka

    Un_ka Гик

    Шаговый двигатель и сдвиговый регистр.
    Вот скетч думаю над скетчем управления двух шаговиков или
    шаговиком и Н мостом.
    Код (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);
    }
     
  2. Daniil

    Daniil Гуру

    Не та ветка
     
  3. Un_ka

    Un_ka Гик

    А какая должна быть?
     
  4. parovoZZ

    parovoZZ Гуру

    Глядите, что я сделал
     
  5. Un_ka

    Un_ka Гик

    то есть ?
     
  6. Mitrandir

    Mitrandir Гуру

    Ветка форума так называется
     
  7. Un_ka

    Un_ka Гик

    а понял спасибо