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 !