ovladanie krokoveho motora spuste kamery

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Uživatelský avatar
jede_robot
Příspěvky: 53
Registrován: 15 led 2020, 21:18
Reputation: 0

Re: ovladanie krokoveho motora spuste kamery

Příspěvek od jede_robot » 07 dub 2020, 12:37

Kód: Vybrat vše

/*
8mm.ino
JeDe Robot s.r.o., duben 2020

Potenciometr - A5
Tlačítko STOP - D2
Tlačítko VPŘED - D4
Tlačítko VZAD - D5
Signál STEP - D6
Signál DIR - D7
Spoušť - D13

Tlačítka jsou zapojena proti GND
Signál Spoušť je aktivní v log. 1

*/

// PŘIŘAZENÍ PINŮ
#define  SPEED_PIN 5
// potenciometr (1-10k) na pinu A5
#define  STOP 2
// tlačítko stop na pinu D2
#define  FWD 4
// tlačítko vpřed na pinu D4
#define  BWD 5
// tlačítko vzad na pinu D5
#define  STP 6
// signál STEP na pinu D6
#define  DIR 7
// signál DIR na pinu D7
#define  TRIG 13
// spoušť na pinu D13

// KONSTANTY
#define  SPR 400
// počet kroků na jednu otáčku motoru
#define  MAX_SPEED 500
// maximální rychlost otáčení
#define  MIN_SPEED 5000
// minimální rychlost otáčení

// PROMĚNNĚ
int spd = 0;
int hlt = 1;

// ZAČÁTEK PROGRAMU
void setup()
{
  pinMode(STOP, INPUT_PULLUP);
  // pin STOP vstup + pullUp
  pinMode(FWD, INPUT_PULLUP);
  // pin FWD vstup + pullUp
  pinMode(BWD, INPUT_PULLUP);
  // pin BWD vstup + pullUp
  pinMode(STP, OUTPUT);
  // pin STP výstup
  pinMode(DIR, OUTPUT);
  // pin DIR výstup
  pinMode(TRIG, OUTPUT);
  // pin TRIG výstup
  attachInterrupt(digitalPinToInterrupt(STOP), halt, FALLING);
}

void loop()
{
  while (hlt == 1)
  // pokud bylo stisknuto tlačítko stop, čeká se na...
  {
    if (digitalRead(FWD) == LOW)
    // stisk tlačítka FWD...
    {
      digitalWrite(DIR, HIGH);
      // směr otáčení
      rot();
    }
    
    if (digitalRead(BWD) == LOW)
    // ... nebo na stisk tlačítka BWD
    {
      digitalWrite(DIR, LOW);
      // opačný směr otáčení
      rot();
    }
  }
  while (hlt == 0)
  // pokud je otáčení povoleno
  {
    rot();
    // toč zvoleným směrem a rychlostí
  }
}

// FUNKCE
void rot()
//jedna otáčka o 360 st.
{
  hlt = 0;
  // nuluj příznak stisku tlačítka STOP
  
  spd = analogRead(SPEED_PIN);
  // přečteme napětí na pinu A5
  spd = map(spd,0,1023,MAX_SPEED,MIN_SPEED);
  // rozsah proměnné spd převedeme z 0 až 1023 na...
  // ... rozsah daný konstantami MAX_SPEED a MIN_SPEED
  
  for (int i=0; i<SPR; i++)
  // generuj počet kroků, určený konstantou SPR
  {
    digitalWrite(STP, HIGH);
    delayMicroseconds(50);
    // puls STP trvá 50 us
    digitalWrite(STP, LOW);
    delayMicroseconds(spd);
    // proměná spd určuje rychlost otáčení motoru
  }
  digitalWrite(TRIG, HIGH);
  // výstup TRIG nastav do log. 1 na...
  delay(500);
  // ... 0,5 sekundy
  digitalWrite(TRIG, LOW);
  // výstup TRIG nastav do log. 0...
  delay(500);
  // ... a čekej 0,5 sekundy
}

void halt()
// když je tlačítko stop stisknuto
{
  hlt = 1;  
}
jrt
jederobot.cz, robodoupe.cz

elis
Příspěvky: 6
Registrován: 02 dub 2020, 23:19
Reputation: 0

Re: ovladanie krokoveho motora spuste kamery

Příspěvek od elis » 07 dub 2020, 22:46

Medzi časom som prisiel na to že v arduine je priklad ktory som si pred tym nevšimol. Speedy stepper - example7_MovingWhileDoingOtherThingsToo ktory na moje potreby staci. Po drobnych upravach rychlosti a logiky led vystupu som ho uz testoval na premietacke a vsetko fungovalo OK. Bohate by mi to postacilo. ALE !!! dnes som otvoril program od JeDe_Robot a to je uuuplnaaaa bomba. Presne takto som si to predstavoval. Len som nechcel az tolko otravovat, myslel som si totižto že to bude programek tak na 20 riadkov a uz vidim ze som sa mylil. Nasiel som v programe malu nezrovnalost v Min a Max rychlosti motora ale po uprave uplna pecka. Dakujem velmi pekne. Toto by som nedal ani keby som tyzden sedel pri kompe, proste to programovanie musim skusat a cvicit od tych najjednoduchsich prikladov.
Rad by som sa podelil s vami z nejakymi obrazkami alebo videom z mojho projektu ale nejde mi sem pridat ziadna fotka. Neda sa to alebo mam niekde problem zase ja? Alebo to musi byt iba odkaz na obrazok ulozeny niekde na nete?
Este raz dakujem Jede_robot za program a pomoc.

Uživatelský avatar
jede_robot
Příspěvky: 53
Registrován: 15 led 2020, 21:18
Reputation: 0

Re: ovladanie krokoveho motora spuste kamery

Příspěvek od jede_robot » 08 dub 2020, 09:26

Když mi pošleš na mail info@jederobot.cz obrázky tvého řešení a pár řádků s popisem funkce, tak to zveřejním pod tvým jménem / nickem na www.robodoupe.cz a budeme vyrovnaní :)
jrt
jederobot.cz, robodoupe.cz

elis
Příspěvky: 6
Registrován: 02 dub 2020, 23:19
Reputation: 0

Re: ovladanie krokoveho motora spuste kamery

Příspěvek od elis » 08 dub 2020, 10:27

Tak super. Už mam nakreslene v 3D nejake držiaky motora a ine veci aby som už mohol na pevno vsetko zložit. Dnes to vylezie z tlaciarne a porobim este nejake foto, zpakujem to a urcite hodim do mailu.
Ešte raz velmi pekne dakujem.

Uživatelský avatar
jede_robot
Příspěvky: 53
Registrován: 15 led 2020, 21:18
Reputation: 0

Re: ovladanie krokoveho motora spuste kamery

Příspěvek od jede_robot » 08 dub 2020, 11:47

Rádo se stalo a budeme se těšit na zásilku.
jrt
jederobot.cz, robodoupe.cz

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů