09-05-2016, 21:12
Witam.
Tworząc swojego pierwszego robota na platformie arduino natrafiłem na pewien błąd.Otóż kiedy chcę aby serwomechanizm z czujnikiem obracał się niezależnie od komend które wykonują silniki po prostu się to nie udaję.Serwo się rusza ale już silniki nie reagują.Próbowałem wielu wersji kodu ale nadal nie umiem rozwiązać tego problemu.Może ktoś pomoże : ?
I schemat w załączniku
Tworząc swojego pierwszego robota na platformie arduino natrafiłem na pewien błąd.Otóż kiedy chcę aby serwomechanizm z czujnikiem obracał się niezależnie od komend które wykonują silniki po prostu się to nie udaję.Serwo się rusza ale już silniki nie reagują.Próbowałem wielu wersji kodu ale nadal nie umiem rozwiązać tego problemu.Może ktoś pomoże : ?
Kod:
int Motor1 = 8;
int Motor2 = 9;
int Motor3 = 10;
int Motor4 = 11;
char command = 'S';
int velocity = 0;
#include "Servo.h" //Biblioteka służąca do obsługi serwomechanizmu
Servo myservo; // Utworzenie obiektu myservo
int pos = 0; //Początkowa pozycja serwa
void setup()
{
Serial.begin(9600);
pinMode(Motor1, OUTPUT);
pinMode(Motor2, OUTPUT);
pinMode(Motor3, OUTPUT);
pinMode(Motor4, OUTPUT);
myservo.attach(12); //Przyłaczenie serwomechanizmu do pinu 9 w Arduino
}
void loop(){
//Analogiczne odejmowanie pozycji po osiągnięciu maksumum
for(pos = 180; pos>=0; pos-=1)
{
myservo.write(pos);
delay(20);
}
for(pos = 0; pos <= 180; pos += 1) //Zmiana pozycji (dodawanie) do 180 stopni
{
myservo.write(pos); //ustawienie zadanej pozycji
delay(20); //Czas na zmiane pozycji
}
if(Serial.available() > 0){
command = Serial.read();
/* Wraz z wciśnięciem konkretnego przycisku w aplikacji na smartphone,
wysyłany jest dany sygnał do arduino przez moguł BT. W ustawieniach
aplikacji wypisany jest opis wartości konkretnych liter.
*/
switch(command){
case 'R':
digitalWrite(Motor1, HIGH);
digitalWrite(Motor4, HIGH);
break;
case 'L':
digitalWrite(Motor2, HIGH);
digitalWrite(Motor3, HIGH);
break;
case 'B':
digitalWrite(Motor2, HIGH);
digitalWrite(Motor4, HIGH);
break;
case 'F':
digitalWrite(Motor1, HIGH);
digitalWrite(Motor3, HIGH);
break;
case 'S':
digitalWrite(Motor1, LOW);
digitalWrite(Motor2, LOW);
digitalWrite(Motor3, LOW);
digitalWrite(Motor4, LOW);
break;
}
}
}