• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Dwa serwa pracujące równolegle w przeciwnych kierunkach
#1
Witam, dopiero zaczynam przygodę z Arduino Mega 2560 i najprawdopodobniej mój problem jest trywialny dlatego proszę o wyrozumiałość. Mam problem z równoległym sterowaniem dwoma serwomechanizmami. Serwomechanizmy mają rozpoczynać pracę podczas gdy odległość przedmiotu od czujnika ultradźwiękowego będzie większa od 10cm. Problem w tym że po wgraniu programu najpierw porusza się servo nr.1 a gdy skończy to wówczas servo nr.2.  Przesyłam kod programu.

Kod:
#include <Servo.h>

#define trig 2
#define echo 3

Servo myservo;  
int pos = 0;
Servo myservoo;
int posi = 180;    

void setup()
{
 pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
 myservo.attach(9);  
 myservoo.attach(10);
 Serial.begin(9600);
}

void loop()
{
  int czas, dist;
 digitalWrite(trig, HIGH);
 delayMicroseconds(1000);
 digitalWrite(trig, LOW);
 czas = pulseIn(echo, HIGH);
 dist = (czas/2) / 29.1;
 
  Serial.println(czas);
 Serial.println(dist);
 
 if(dist > 10){
 
 for(pos = 0; pos <= 180; pos += 1)
 {                                  
   myservo.write(pos);
     
   delay(10);                        
 }
 for(pos = 180; pos>=0; pos-=1)    
 {                                
   myservo.write(pos);              
   delay(10);                      
 }


for(posi = 180; posi>=0; posi-=1)      
 {                                
   myservoo.write(posi);              
   delay(10);                      
 }
for(posi = 0; posi <= 180; posi += 1)  
 {                                  
   myservoo.write(posi);              
   delay(10);                        
 }

   
 }
   
 }


Załączone pliki
.txt   servo.txt (Rozmiar: 1.19 KB / Pobrań: 2)
 
#2
spróbuj ten kod
Kod:
#include <Servo.h>

#define trig 2
#define echo 3

Servo myservo;  
int pos = 0;
Servo myservoo;
int posi = 180;    

void setup()
{
  pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
  myservo.attach(9);  
  myservoo.attach(10);
  Serial.begin(9600);
}

void loop()
{
   int czas, dist;
  digitalWrite(trig, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig, LOW);
  czas = pulseIn(echo, HIGH);
  dist = (czas/2) / 29.1;
  
   Serial.println(czas);
  Serial.println(dist);
  
  if(dist > 10){
  
  for(pos = 0; pos <= 180; pos += 1)
  {                                  
    myservo.write(pos);
     myservoo.write(pos);  
      
    delay(10);                        
  }
  for(pos = 180; pos>=0; pos-=1)    
  {                                
    myservo.write(pos);
    myservoo.write(pos);              
    delay(10);                      
  }




    
  }
    
  }
 
#3
dziękuję Smile teraz działa poprawnie Smile
 
#4
Zamykam. Smile
[Obrazek: Sygnatura1-w60.jpg]
 
  


Skocz do:


Przeglądający: 1 gości