Krokový motor - Start/Stop
Napsal: 11. 8. 2020, 9:04
Zdravím,
podařilo se mi rozjet krokáč tak jak bych si to zhruba představoval, ale zjistil jsem, že budu potřebovat naprogramovat ještě jedno, nebo dvě funkční tlačítka ( to je celkem jedno).
Zkrátka jedno by sloužilo na start a druhé na pomalé zastavení až do nulové rychlosti.
Zkoušel jsem dost variant , ale zatím bez úspěchu...
nevím jestli jít cestou detekování náběžné hrany a pak následné vykonání podprogramu, nebo nějaký jiný způsob ?
viz tento NEFUNKČNÍ program
našel jsem i nějakou knihovnu, která by mohla být užitečná (máte sní někdo zkušenosti ?)
radši to shrnu
1. jak udělat, aby tlačítka (PushButtoon) fungovali tak, že po zmačknutí pojede podprogram "do nekončna"
2. jak vymyslet zpomalení až do nuly ?
(používám Arduino UNO rev.3)
Díky moc za rady !
podařilo se mi rozjet krokáč tak jak bych si to zhruba představoval, ale zjistil jsem, že budu potřebovat naprogramovat ještě jedno, nebo dvě funkční tlačítka ( to je celkem jedno).
Zkrátka jedno by sloužilo na start a druhé na pomalé zastavení až do nulové rychlosti.
Zkoušel jsem dost variant , ale zatím bez úspěchu...
nevím jestli jít cestou detekování náběžné hrany a pak následné vykonání podprogramu, nebo nějaký jiný způsob ?
viz tento NEFUNKČNÍ program
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
}
našel jsem i nějakou knihovnu, která by mohla být užitečná (máte sní někdo zkušenosti ?)
Kód: Vybrat vše
// zpomaleni.pde
// -*- mode: C++ -*-
//
// Make a single stepper bounce from one limit to another
//
// Copyright (C) 2012 Mike McCauley
// $Id: Random.pde,v 1.1 2011/01/05 01:51:01 mikem Exp mikem $
#include <AccelStepper.h>
// Define a stepper and the pins it will use
//AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
AccelStepper stepper(1,7,6);
void setup ()
{
stepper.setMaxSpeed (10800);
stepper.setSpeed (10800);
}
void loop ()
{
stepper.runSpeed ();
}

1. jak udělat, aby tlačítka (PushButtoon) fungovali tak, že po zmačknutí pojede podprogram "do nekončna"
2. jak vymyslet zpomalení až do nuly ?
(používám Arduino UNO rev.3)
Díky moc za rady !