NEMA17 - ruční krokování

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Uživatelský avatar
kiRRow
Příspěvky: 1272
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: NEMA17 - ruční krokování

Příspěvek od kiRRow » 08 lis 2024, 20:20

nikde v programu nemáš digitalRead(STEP_pin ) ...

Uživatelský avatar
gilhad
Příspěvky: 837
Registrován: 07 bře 2018, 11:22

Re: NEMA17 - ruční krokování

Příspěvek od gilhad » 08 lis 2024, 21:00

STEP_pin je celočíselná proměnná, která má na začátku hodnotu 10, což zcela jistě není číselně rovno hodnotě HIGH (definované v Arduino.h jako 0x1 (čili 1)).
takže příkaz if (STEP_pin == HIGH) porovná hodnoty 10 a 1 a protože se to samozřejmě nerovná, tak tak podmíněný příkaz neprovede. A v dalším průchodu taky ne, bez ohledu na nějaká napětí na nožičkách se to číslo nožiky nezmění.

Naopak příkaz if (STEP_pin = HIGH) znamená, že se do té tvojí proměnné přiřadí hodnota 1 a výsledkem přiřazení je ta hodnota 1, takže se podmíněný příkaz provede vždy (opět bez ohledu na nějaká napětí kdesi). A je to tak oblíbená chyba/překlep, že překladač u toho většinou vypíše i nějaké varování.

Asi jsi měl spíš na mysli něco jako if (digitalRead(STEP_pin) == HIGH), kde přečteš hodnotu napětí na 10. nožičce (digitalRead) a pokud je dost vysoká, tak další příkaz provedeš, jinak ne.

Uživatelský avatar
kiRRow
Příspěvky: 1272
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: NEMA17 - ruční krokování

Příspěvek od kiRRow » 08 lis 2024, 22:46

kiRRow píše:
08 lis 2024, 20:20
nikde v programu nemáš digitalRead(STEP_pin ) ...
nerad cituji sám sebe ... digitalRead(STEP_pin) tam nikde není ......

hafca
Příspěvky: 103
Registrován: 23 říj 2017, 23:05

Re: NEMA17 - ruční krokování

Příspěvek od hafca » 08 lis 2024, 22:48

Zítra budu pokračovat.

hafca
Příspěvky: 103
Registrován: 23 říj 2017, 23:05

Re: NEMA17 - ruční krokování

Příspěvek od hafca » 09 lis 2024, 10:04

Dopsal jsem to tam, ale stejně nic. Je to celé divné. Místo stavu portu mi to vypisuje číslo co má přiřazené v deklaraci.

Kód: Vybrat vše

 digitalWrite(STEP_pin, HIGH);
  // Set target motor RPM to and microstepping setting
  stepper.begin(RPM, Microsteps);
}
void loop() {
digitalRead(STEP_pin);
Serial.print (int(STEP_pin));
if (STEP_pin == HIGH){

Uživatelský avatar
kiRRow
Příspěvky: 1272
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: NEMA17 - ruční krokování

Příspěvek od kiRRow » 09 lis 2024, 10:15

Kód: Vybrat vše

if(digitalRead(STEP_pin) == HIGH){

}
nebo

Kód: Vybrat vše

boolean STEP_pin_stav = digitalRead(STEP_pin);
if(STEP_pin_stav == HIGH){

}

hafca
Příspěvky: 103
Registrován: 23 říj 2017, 23:05

Re: NEMA17 - ruční krokování

Příspěvek od hafca » 09 lis 2024, 11:46

Tak jsem zvítězil. Sice je to dost zjednodušené, ale funguje to.
Ještě jednou moc dík za pomoc.

Kód: Vybrat vše

else {
digitalWrite(Sleep, HIGH);

  if(digitalRead(BUTT_pin) == LOW)
  {
       delay(600);
    stepper.move(40);//Move  steps clockwise
    digitalWrite(Sleep, LOW);
}

Uživatelský avatar
kiRRow
Příspěvky: 1272
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: NEMA17 - ruční krokování

Příspěvek od kiRRow » 10 lis 2024, 13:55

Kód: Vybrat vše

else {
  if(digitalRead(BUTT_pin) == LOW)
  {
    digitalWrite(Sleep, HIGH);
    delay(600);
    stepper.move(40);//Move  steps clockwise
    digitalWrite(Sleep, LOW);
  }
}

hafca
Příspěvky: 103
Registrován: 23 říj 2017, 23:05

Re: NEMA17 - ruční krokování

Příspěvek od hafca » 10 lis 2024, 17:00

Nepoznal jsem žádný rozdíl. Je to "jen" programátorsky čistější nebo je v tom něco jiného?

Uživatelský avatar
kiRRow
Příspěvky: 1272
Registrován: 07 kvě 2019, 07:03
Bydliště: Opava

Re: NEMA17 - ruční krokování

Příspěvek od kiRRow » 10 lis 2024, 17:46

Ano v mém kódu ... digitalWrite(Sleep, HIGH); se provede pouze když je stisknuto tlačítko ..... v tvém pokaždé když je něco else ... v důsledku to nemusí znamenat nic, jen se ti z nepochopitelných důvodů bude zapínat (nebude vypínat) driver krokového motoru a pokud se bude motor nacházet v nějakém stavu mezi full stepem, tak se nepatrně pohne libovolným směrem

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host