• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
prosty program ale gdzies jest blad.
#1
Wink 
witam, panowie prosty program z silnicxzkiem krokowym typowym arduino 28byj ,,dodam ze hobbistycznie się ucze arduino,,w ramach wolnej chwili. 
program ma dzialac tak ze jeśli wcisne przycisk silnik ma się obracać do czasu az ten przycisk zostanie zwolniony, a kolejna czesc programu ma odliczas czas ,,millis,, i po np. tu 5 sekundach ma obrucis cie o zadana liczbe krokow,, tutaj o 340.. ale cos niedziala w tej drugiej części ,,możecie zerknąć i poprawke wnieść..


Cytat:#define STEPPER_PIN_1 9
#define STEPPER_PIN_2 10
#define STEPPER_PIN_3 11
#define STEPPER_PIN_4 12
int step_number = 0;
const int  przycisk = 13 ;
unsigned long  poczatekCzasu = 0 ;
unsigned long  czas = 0 ;
void setup() {
  pinMode(STEPPER_PIN_1, OUTPUT);
  pinMode(STEPPER_PIN_2, OUTPUT);
  pinMode(STEPPER_PIN_3, OUTPUT);
  pinMode(STEPPER_PIN_4, OUTPUT);
  pinMode (przycisk, INPUT);
  
}

void loop() {
  if (digitalRead (przycisk) == HIGH)
  {
    OneStep(false);
    delay(2);
  }
  else{
    czas = millis ();
    (czas - poczatekCzasu >5000 ) ;
    for (int i=0 ; i <341 ; i++)
      OneStep (false);
    delay(2);
    poczatekCzasu = czas  ;
  }

}


void OneStep(bool dir){
  if(dir){
    switch(step_number){
    case 0:
      digitalWrite(STEPPER_PIN_1, HIGH);
      digitalWrite(STEPPER_PIN_2, LOW);
      digitalWrite(STEPPER_PIN_3, LOW);
      digitalWrite(STEPPER_PIN_4, LOW);
      break;
    case 1:
      digitalWrite(STEPPER_PIN_1, LOW);
      digitalWrite(STEPPER_PIN_2, HIGH);
      digitalWrite(STEPPER_PIN_3, LOW);
      digitalWrite(STEPPER_PIN_4, LOW);
      break;
    case 2:
      digitalWrite(STEPPER_PIN_1, LOW);
      digitalWrite(STEPPER_PIN_2, LOW);
      digitalWrite(STEPPER_PIN_3, HIGH);
      digitalWrite(STEPPER_PIN_4, LOW);
      break;
    case 3:
      digitalWrite(STEPPER_PIN_1, LOW);
      digitalWrite(STEPPER_PIN_2, LOW);
      digitalWrite(STEPPER_PIN_3, LOW);
      digitalWrite(STEPPER_PIN_4, HIGH);
      break;
    } 
  }
  else{
    switch(step_number){
    case 0:
      digitalWrite(STEPPER_PIN_1, LOW);
      digitalWrite(STEPPER_PIN_2, LOW);
      digitalWrite(STEPPER_PIN_3, LOW);
      digitalWrite(STEPPER_PIN_4, HIGH);
      break;
    case 1:
      digitalWrite(STEPPER_PIN_1, LOW);
      digitalWrite(STEPPER_PIN_2, LOW);
      digitalWrite(STEPPER_PIN_3, HIGH);
      digitalWrite(STEPPER_PIN_4, LOW);
      break;
    case 2:
      digitalWrite(STEPPER_PIN_1, LOW);
      digitalWrite(STEPPER_PIN_2, HIGH);
      digitalWrite(STEPPER_PIN_3, LOW);
      digitalWrite(STEPPER_PIN_4, LOW);
      break;
    case 3:
      digitalWrite(STEPPER_PIN_1, HIGH);
      digitalWrite(STEPPER_PIN_2, LOW);
      digitalWrite(STEPPER_PIN_3, LOW);
      digitalWrite(STEPPER_PIN_4, LOW);


    } 
  }
  step_number++;
  if(step_number > 3){
    step_number = 0;
  }
}
 
Odpowiedź
  


Wiadomości w tym wątku
prosty program ale gdzies jest blad. - przez feng - 22-03-2020, 14:54

Skocz do:


Przeglądający: 1 gości