// Tlacitka Vpred vzad promenné - jmena a stav
int butFw = HIGH;
int butBw = 0;
int ledFw = 0;
int ledBw = 0;
int DIR = 0;
// Function for reading the Potentiometer
int speedUp() {
int customDelay = analogRead(A7); // Reads the potentiometer
int newCustom = map(customDelay, 0, 1023, 300,4000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
return newCustom;
}
// Promenne pro ON/OFF - samozamikaci
int butOnOff = 0; //stav tlacitka
int butOnOffLast = 0; // predchozy stav tlacitka
int butOnOffCount = 0; // counter
int customDelay,customDelayMapped; // Promenne pro zmenu rychlosti
// Promenné nazvy PINu (OUT a INputy)
const int butPinFw = 3; // PIN tlacitko Fw - vpred
const int butPinBw = 4; // PIN tlacitko Bw - vpred
const int ledPinFw = 10; // PIN LED indikace Fw - vpred
const int ledPinBw = 9; // PIN LED indikace Bw - vzad
const int halPin1 = 6; // PIN Hal sonda MAX zmacknuti
const int halPin2 = 7; // PIN Hal sonda MIN max roztazeni
const int halLEDwarn = 2; // PIN LED WARNING
// Promenne nazvy pro ON/OFF nastaveni IN/OUT
const int butPinOnOff = 8; // PIN tlacitko ON/OFF
const int ledPinOnOff = 5; // PIN LED indikator ON/OFF
// Promenne nazvy pro STEP Controler
const int STEP1 = 12; // PIN STEP controler
const int dirMotPin = 11; // PIN k stepper controler - DIRECTION
void setup()
{
pinMode(butPinFw, INPUT); // tlacitko Fw - vpred
pinMode(butPinBw, INPUT); // tlacitko Bw - vzad
pinMode(ledPinFw, OUTPUT); // LED indikace Fw - vpred
pinMode(ledPinBw, OUTPUT); // LED indikace Bw - vzad
pinMode(dirMotPin, OUTPUT); // Step motor DIRECTION pin
pinMode(butPinOnOff, INPUT); // tlacitko ON/OFF
pinMode(ledPinOnOff, OUTPUT); // LED ON/OFF indikator
pinMode(STEP1, OUTPUT); // Step motor
pinMode(dirMotPin, OUTPUT); // Step motor
pinMode(halPin1, INPUT);
pinMode(halPin2, INPUT);
pinMode(halLEDwarn, OUTPUT);
digitalWrite(ledPinFw, HIGH); // nastavi Fw LED na sviceni uz na zacatku
digitalWrite(dirMotPin, HIGH); // nasavi DIR pin a smer motoru na Fw uz na zacatku
}
void loop()
{
//digitalWrite(ledPinFw, HIGH); //test LEDfw
//digitalWrite(dirMotPin, HIGH); //test LEDfw
//digitalWrite(12, HIGH); //test LEDfw
// Pojistka Hallova sonda 2x
// toto nejde
/*if (digitalRead(halPin1) == HIGH) {
digitalWrite(STEP1, LOW);
digitalWrite(ledPinOnOff, LOW);
//butOnOffCount += 1;
}*/
//Hallova sonda Test READ a WRITE LED
if (digitalRead(halPin1) == HIGH) { digitalWrite(halLEDwarn, HIGH); }
if (digitalRead(halPin1) == LOW) { digitalWrite(halLEDwarn, LOW);
}
// Fw a Bw
if (digitalRead(butPinFw)== HIGH) { // podminka ovladani Fw tlačítka * spusti pin vpřed a LED
butFw = HIGH; //zapise stav HIGH tlacitka do promenne
digitalWrite(dirMotPin,HIGH); // pošle HIGH na PIN motoru DIR
ledFw = butFw; digitalWrite(ledPinFw,HIGH); // rozsvítí diodu Fw pokud je stav Fw
digitalWrite(ledPinBw,LOW); // vypne Bw LED
}
if (digitalRead(butPinBw)== HIGH) { // podminka ovladani Bw tlačítka * vypne pin vpřed a LED
butBw = HIGH; //zapise stav HIGH tlacitka do promenne
digitalWrite(dirMotPin,LOW); // pošle LOW na PIN motoru DIR
ledBw = HIGH; digitalWrite(ledPinBw,HIGH); // rozsvítí diodu Fw pokud je stav Fw
digitalWrite(ledPinFw,LOW); // vypne Fw LED
}
// ON OFF tlacitko - nacte tlacitko do btl
butOnOff = digitalRead(butPinOnOff);
// porovna stav s predchozim stavem - pokud byla zmena (stisknuti tlacitka) 1) sepnutí= pocitadlo +1 pokud bylo vypnutí = nic se neděje
if (butOnOff != butOnOffLast) {
if (butOnOff == HIGH) {
// if the current state is HIGH, then the button
// went from off to on
butOnOffCount += 1;
}
// vyskání pro ostranění rezonance 5ms
delay(5);
}
// ulozí stav do promenné posledního stavu
butOnOffLast = butOnOff;
// modulo funkce vrací zbytek po dělení (pokud je 0 pak bylo děleno násobkem dělence
// tedy pokud se conter/2 nevná 0, bylo 2x (či násobkem 2) zmáčknuto tlačítko a bude se zapínat dioda (podmínka tedy nerovná vypnuto, rovná se 2x zmášknuto zapni
if (butOnOffCount % 2 != 0) {
digitalWrite(ledPinOnOff, HIGH);
//Funkce rizeni potenciometrem
customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
digitalWrite(STEP1, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(STEP1, LOW);
delayMicroseconds(customDelayMapped);
} else {
digitalWrite(STEP1, LOW);
digitalWrite(ledPinOnOff, LOW);
}
/*
if (ledPinFw == HIGH) { // Zapne DIR pin - tedy otoci chod motoru
digitalWrite(dirMotPin, HIGH);}
else {digitalWrite(dirMotPin, HIGH);}
*/
}