Krokový motor - start/stop tlačitko

Odpovědět
User34
Příspěvky: 1
Registrován: 10 srp 2020, 09:14
Reputation: 0

Krokový motor - start/stop tlačitko

Příspěvek od User34 » 10 srp 2020, 11:25

Dobrý den,
potřeboval bych pomoct s jedním programem (zatím bohužel asi nejsem tak zkušený abych to zvládl sám :D ). Potřebuji ovládat krokový motor pomocí 2, nebo jednoho tlačítka to je celkem jedno. Krokový motor mám odladěn a točí se požadovanými otáčkami. Jde mi o to, aby po zmačknutí jednoho tlačítka se motor roztočil a po zmáčknutí druhého pozvolna zpomalovat až do úplného zastavení. Zkoušel jsem už celkem dost variant, ale žádná mi nejde. Přikládám nefunkční program, ale myslím si, že principiálně by to tak nějak mohlo fungovat..... (načítaní náběžné hrany)
- používám Arduino Uno rev. 3
díky za pomoc!

Kód: Vybrat vše

bool lastInput2; //proměnná s minulým stavem vstupu 2
bool lastInput3; //proměnná s minulým stavem vstupu 3
bool presentInput2; //proměnná s aktuálním stavem vstupu2 
bool presentInput3; //proměnná s aktuálním stavem vstupu 3
void setup() {
pinMode(2, INPUT); //vstup 1 (tlačítko ON)
pinMode(3, INPUT); //vstup 2 (tlačítko OFF)
//pinMode(13, OUTPUT); //výstup (signalizační LED)
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(6, HIGH);
}
void loop() {
//načtení vstupů do proměnných
presentInput2 = digitalRead(2);
presentInput3 = digitalRead(3);
if (presentInput2 != lastInput2) {
//aktuální a minulý stav tlačítka není stejný
//bylo stisknuto, nebo povoleno tlačítko na pinu 2
if (presentInput2 == HIGH) {
//aktuální stav je HIGH, tlačítko je stisknuto
//je detekována náběžná hrana

digitalWrite(7, LOW);
 digitalWrite(7, HIGH);
 delayMicroseconds(100);
}
else {
//aktuální stav je LOW, tlačítko je povoleno
//je detekována sestupná hrana
}
}

if (presentInput3 != lastInput3) {
//aktální a minulý stav tlačítka není stejný
//bylo stisknuto, nebo povoleno tlačítko na pinu 3
if (presentInput3 == HIGH) {
//aktuální stav je HIGH, tlačítko je stisknuto
//je detekována náběžná hrana
//nahradit zpomalením !!!!!
digitalWrite(7, LOW);
 digitalWrite(7, HIGH);
 delayMicroseconds(800);
}
}
lastInput2 = presentInput2; //uložení aktuálního stavu tlačítka do minulého stavu
lastInput3 = presentInput3; //uložení aktuálního stavu tlačítka do minulého stavu
}

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Krokový motor - start/stop tlačitko

Příspěvek od pavel1tu » 13 srp 2020, 17:46

Pokud plaveš ve zpracování stisku tlačítka,
použij knihovnu (asi mne místní pěkně seřvou, ono tu je v MNOHA příspěvcích jak zpracovat stisk tlačítka)
https://github.com/JChristensen/JC_Button

Ale rozhodně si i počti a udělej HW ošetření odpror/kondik

Tady je to pěkně popsané včetně programu kdyby jsi zavrhnul knihovnu
https://learn.adafruit.com/make-it-switch/debouncing

je i spooousta článků v češtině, ale schválně odkazy nedávám - určitě ti funguje Google
PS: včetně skvělých článků minimálně dvou lidí z tohoto fora ;) a tam lze čerpat mnoho dalších věcí, děkujem !!!
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

Odpovědět

Kdo je online

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