FS1000a, радиоуправление и запуск шагового двигателя
- Войдите на сайт для отправки комментариев
Ср, 26/08/2015 - 16:41
Здравствуйте! Помогите, пожалуйста, разобраться, почему моточик 28BYJ-48 5VDC не крутится против часовой стрелки, если добавить настройки для осуществления радиосвязи FS1000a
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_set_rx_pin(7);
vw_rx_start(); // Start the receiver PLL running
При добавлении этих строк команда
for(i=0;i<512;i++){
counterclockwiserotate();}
delay(1000); // wait for a second
Делает так, что моторчик только вибрирует, но вал не движется
Вот весь код:
#include <VirtualWire.h>
void setup() {
// initialize the digital pin as an output.
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec
vw_set_rx_pin(7);
vw_rx_start(); // Start the receiver PLL running
}
void loop() {
int i=0;
//revolve one revolution clockwise
for(i=0;i<512;i++){
counterclockwiserotate();}
delay(1000); // wait for a second
}
void clockwiserotate() { //revolve clockwise
step1();
step2();
step3();
step4();
step5();
step6();
step7();
step8();
}
void counterclockwiserotate() { //revolve counterclockwise
step1();
step7();
step6();
step5();
step4();
step3();
step2();
step1();
}
void step1(){
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(2);
}
void step2(){
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(2);
}
void step3(){
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(2);
}
void step4(){
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(2);
}
void step5(){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, LOW);
delay(2);
}
void step6(){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
delay(2);
}
void step7(){
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(2);
}
void step8(){
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, HIGH);
delay(2);
}
Если настройку убрать, то всё хорошо крутится. Спасибо всем, кто подскажет, что нужно поменять в настройке, чтобы всех удовлетворяло: и крутилось, и радиосвязь работала. Или хотя бы намекните :)