Tady je ten slíbený nástřel prográmku pro Arduino, sorry že až teď, ale Flešku s ním jsem nechal v práci.
#define LEDP 5 // zadefinovani pinu 5 pro signal DIR
#define LEDL 6 // zadefinovani pinu 6 pro signal STEP
#define ENABLE 7 // zadefinovani pinu 7 pro signal ENABLE
#define DIR 8 // zadefinovani pinu 8 pro signal LEDL (levaLED)
#define STEP 9 // zadefinovani pinu 9 pro signal LEDP (prava LED)
#define AUTOMATIKA 12 // zadefinovani pinu 10 pro vypinac AUTOMATIKY
#define LEVA 11 // zadefinovani pinu 11 pro tlacitko LEVA
#define PRAVA 10 // zadefinovani pinu 12 pro tlacitko PRAVA
#define ZARAZKA 13 // zadefinovani pinu 13 pro tlacitko ZARAZKA
#define PERIODA 10 // zadefinovani promenne periody jedna se o generalni cesovani
void setup() {
pinMode(STEP, OUTPUT); // inicializace pin 9 jako vystup STEP
pinMode(DIR, OUTPUT); // inicializace pin 8 jako vystup DIRECTION
pinMode(ENABLE, OUTPUT); // inicializace pin 7 jako vystup ENABLE
pinMode(AUTOMATIKA, INPUT_PULLUP); // inicializace vstupu spinace AUTOMATIKY pro PULL-UP
pinMode(LEVA, INPUT_PULLUP); // inicializace vstupu spinace LEVA pro PULL-UP
pinMode(PRAVA, INPUT_PULLUP); // inicializace vstupu spinace PRAVA pro PULL-UP
pinMode(ZARAZKA, INPUT_PULLUP); // inicializace vstupu spinace ZARAZKA pro PULL-UP
pinMode(LEDP, OUTPUT); // inicializace pin 5 jako vystup LEDL
pinMode(LEDL, OUTPUT); // inicializace pin 6 jako vystup LEDP
}
void loop() { // loop smycka pobezi dokola a dokola opakovane
if (digitalRead(AUTOMATIKA) == LOW){ // pokud je vypinac AUTOMATIKA zapnut, tak se generuji signaly
digitalWrite(ENABLE,HIGH); // signal ENABLE vynulovani prevodniku
delay(PERIODA);
digitalWrite(ENABLE,LOW);
for (int i=0; i<=100; i++){ // cyklus kde se zadává počet pulzů signálu STEP
if (digitalRead(ZARAZKA) == HIGH) { // pokud dojde k sepnuti spinace yarayka, tak se smycka predcasne ukonci
digitalWrite(STEP,HIGH); // zapnuti signalu STEP
digitalWrite(DIR,HIGH); // zapnuti signalu DIR
digitalWrite(LEDP,HIGH); // rozsviceni LEDP
delay(PERIODA); // casovani by pak melo byt v intervalu 5-10
digitalWrite(STEP,LOW);
digitalWrite(DIR,LOW);
digitalWrite(LEDP,LOW); // zhasnuti LEDP
delay(PERIODA); // casovani by pak melo byt v intervalu 5-10
} else { }
}
digitalWrite(ENABLE,HIGH); // signal ENABLE vynulovani prevodniku
delay(PERIODA);
digitalWrite(ENABLE,LOW);
for (int i=0; i<=100; i++){ // cyklus kde se zadává počet pulzů signálu STEP
digitalWrite(LEDL,HIGH); // rozsviceni LEDL
digitalWrite(STEP,HIGH); // zapnuti signalu STEP
digitalWrite(DIR,LOW); // zapnuti signalu DIR
delay(PERIODA); // casovani by pak melo byt v intervalu 5-10
digitalWrite(LEDL,LOW); // zhasnuti LEDL
digitalWrite(STEP,LOW);
digitalWrite(DIR,LOW);
delay(PERIODA); // casovani by pak melo byt v intervalu 5-10
}
} else { // pokud je vypinac AUTOMATIKA vypnut nastava manualni rizeni
if (digitalRead(LEVA) == LOW){ // pokud je spinac LEVA zapnut
digitalWrite(ENABLE, HIGH); // vynulovani driveru pomoci signalu ENABLE
delay(PERIODA);
digitalWrite(ENABLE,LOW);
digitalWrite(STEP,HIGH); // sled signalu STEP a DIR funkcni pokud je zmacknuto tlacitko leva
digitalWrite(DIR,HIGH);
digitalWrite(LEDL,HIGH); // rozsviceni LEDL
delay(PERIODA);
digitalWrite(STEP,LOW);
digitalWrite(DIR,LOW);
digitalWrite(LEDL,LOW); // zhasnuti LEDL
delay(PERIODA);
} else {
}
if (digitalRead(PRAVA) == LOW){ // pokud je spinac PRAVA zapnut
digitalWrite(ENABLE, HIGH); // vynulovani driveru pomoci signalu ENABLE
delay(PERIODA);
digitalWrite(ENABLE,LOW);
digitalWrite(STEP,HIGH); // sled signalu STEP a DIR funkcni pokud je zmacknuto tlacitko leva
digitalWrite(DIR,LOW);
digitalWrite(LEDP,HIGH); // rozsviceni LEDP
delay(PERIODA);
digitalWrite(STEP,LOW);
digitalWrite(DIR,LOW);
digitalWrite(LEDP,LOW); // zhasnuti LEDP
delay(PERIODA);
} else {
}
}
} // konec programu
máš tam jen jeden doraz, takže musíš dopsat druhý a předělat to tak, aby se ti celý systém zastavil. Popsané to máš, tak se na to zkus podívat. Jak s nastavováním potenciometrů délky vážně nevím, ale snad ti poradí zkušenější, tedy pokud je netrefí z té mé prasárny, která sice funguje jak má, ale asi by snesla značné vylepšení, na to však teď nějak nemám čas
