Arduino Polska Forum
prosty program ale gdzies jest blad. - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: "Projekt Arduino Polska" (https://forum.arduinopolska.pl/dzial-projekt-arduino-polska)
+--- Dział: Zarys "Projektu Arduino Polska" (https://forum.arduinopolska.pl/dzial-zarys-projektu-arduino-polska)
+--- Wątek: prosty program ale gdzies jest blad. (/watek-prosty-program-ale-gdzies-jest-blad)



prosty program ale gdzies jest blad. - feng - 22-03-2020

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;
  }
}



RE: prosty program ale gdzies jest blad. - Agregacik - 22-03-2020

Hm pewnie brakuje nawiasów klamrowych { } w loop w sekcji po else.


RE: prosty program ale gdzies jest blad. - feng - 23-03-2020

(22-03-2020, 20:03)Agregacik napisał(a): Hm pewnie brakuje nawiasów klamrowych  {  }  w loop w sekcji po else.
hej dzięki za reakcje ale nawiasy sa tam 2 chyba ze mówisz o dodatkowych ??


RE: prosty program ale gdzies jest blad. - Agregacik - 23-03-2020

Tak mówię o dodatkowych. Zapewne powinno być tam jeszcze if przed nawiasami okrągłymi i potem nawias { otwierający ciało funkcji i nawias } zamykający ciało funkcji. W pętli for też powinny być dwa nawiasy taki { i taki }.
Tu do poczytania o sterowaniu kodem https://plociennik.info/index.php/sterowanie-wykonywaniem-kodu


RE: prosty program ale gdzies jest blad. - kaczakat - 23-03-2020

Kod:
else{
    czas = millis ();
    (czas - poczatekCzasu >5000 ) ;

A to co to?


RE: prosty program ale gdzies jest blad. - Agregacik - 23-03-2020

Właśnie o to mi się rozchodziło. Pewnie if brakuje i jeszcze czegoś. No ale niech sam do tego dojdzie to bardziej zapisze się w pamięci.


RE: prosty program ale gdzies jest blad. - feng - 01-04-2020

wlasnie nad tym pracuje.. dzięki za pomoc wiem gdzie szukac :]