Stránka 1 z 1
Uno + 2 krokové motory
Napsal: 24 črc 2019, 11:00
od Ferdosondo
Ahojte arduiňáci. Som začiatočník a chcel by som k arduinu pripojiť 2 krokové motory, ktorých polohu by som mohol ovládať pomocou PC. Slúžiť to bude k nastaveniu dvoch ladiacich prvkov anténneho tunera. Zatiaľ som našiel ovládanie na jeden motor pomocou Monitoru sériového portu. Ideálne by bolo, ak by sa dali oba krokové motory ovládať súčasne. Vie mi niekto pomôcť?
Kód: Vybrat vše
// Arduino stepper motor control code
#include <Stepper.h> // Include the header file
// change this to the number of steps on your motor
#define STEPS 32
// create an instance of the stepper class using the steps and pins
Stepper stepper(STEPS, 8, 10, 9, 11);
int val = 0;
void setup() {
Serial.begin(9600);
stepper.setSpeed(400);
}
void loop() {
if (Serial.available()>0)
{
val = Serial.parseInt();
stepper.step(val);
Serial.println(val); //for debugging
}
}
Re: Uno + 2 krokové motory
Napsal: 24 črc 2019, 12:27
od pavel1tu
Google
Na internetu je dost příkladů, dost knihoven které toto umožňují.
1) tak jak máš definovaný 1 motor, nadefinuj 2 motory - každý se musí jmenovat jinak
2) ovládání po SerialMonitor asi budeš muset předělat - prostě nadefinuješ 4 znaky, které odesíláním po SerialMonitor v programu rozhodneš který motor se kam pootočí. Já osobně bych šel do tlačítek, ale i po komunikaci to jde - já toto ovládání po Serialmonitor na jiný projekt okopíroval zde z projektu Arduino-Matrix-Clock
Re: Uno + 2 krokové motory
Napsal: 24 črc 2019, 14:37
od Ferdosondo
Dík za pomoc. Nadefinoval som aj druhý motor a funguje. Neviem však kde nadefinovať 4 znaky, aby sa pohol ten správny motor.
Kód: Vybrat vše
// Arduino stepper motor control code
#include <Stepper.h> // Include the header file
// change this to the number of steps on your motor
#define STEPS 32
// create an instance of the stepper class using the steps and pins
Stepper stepper1(STEPS, 9, 11, 10, 12);
Stepper stepper2(STEPS, 2, 4, 3, 5);
int val = 0;
void setup() {
Serial.begin(9600);
stepper1.setSpeed(400);
stepper2.setSpeed(400);
}
void loop() {
if (Serial.available()>0)
{
val = Serial.parseInt();
stepper1.step(val);
stepper2.step(val);
Serial.println(val); //for debugging
}
}
Re: Uno + 2 krokové motory
Napsal: 24 črc 2019, 17:41
od pavel1tu
Mosíš si nadefinovat nějaká pravidla (třeba):
- A je motor 1, B je motor 2
- F je dopředu, B je dozadu
- posílat počet kroků ve formátu "0000-9999"
AB0050 - motor 1 - dozadu o 50 kroků (toto je příklad, pravidla si musíš určit sám)
stepper1.step(-50);
Přečti si něco o SereiaRead()
To přijímá z komunikace znak po znaku "A" pak "B" pak "0" pak "0" pak "5" a "0", pak přijde konec řádku, to uložíš do řetězce "AB0050"
Ten musíš rozebrat a uložit do proměnnách číslo motoru, směr a kroky a z toho pak složíš ten povel pro motor.
PS: mohl bych ti to i napsat, ale najdi si to - když to pochopíš, zjistíš že je to sranda