potřeboval bych pomoct s jedním programem (zatím bohužel asi nejsem tak zkušený abych to zvládl sám ). 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
}