Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Arduino UNO , czujnik nie ogranicza działania serwonapędu

labunio 12 Jan 2021 19:35 255 7
IGE-XAO
  • #1
    labunio
    Level 3  
    Witam,
    Mam mały problem, otóż podłączając serwonapęd ( TowerPro MG 966R ) do arduino oraz czujnik ( HC -SR04 ) chciałem żeby serwo
    odpalało sie wtedy kiedy coś wykryje, teoretycznie w kodzie ograniczyłem go do 20 cm, ale pomimo tego po podłączeniu do zasilania i wgraniu programu serwo odpala sie praktycznie od razu a czujnik sobie nic z tego nie robi, sprawdzałem i zczytuje odległości poprawnie. Nie wiem co zrobić stanąłem w miejscu. Dlatego potrzebuje pomocy :)
    Taki schemat znalazłem na pewnej stronie i według tego podłączałem układ

    Arduino UNO , czujnik nie ogranicza działania serwonapędu


    A tu kod który stosuje:

    /*
    echo = 3
    trig = 4
    servo = 5
    */

    #include <Servo.h>
    Servo myservo;

    int first_angle = 100;
    int second_angle = 50;
    int detection_distance = 20;

    int sw = 12;
    int echoPin = 3;
    int trigPin = 4;

    void setup() {
    myservo.attach(5);
    myservo.write(first_angle);
    pinMode(sw, INPUT_PULLUP);
    pinMode(trigPin, OUTPUT);
    pinMode(echoPin, INPUT);
    }

    void loop(){
    digitalWrite(trigPin, LOW);
    digitalWrite(echoPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);

    unsigned long duration = pulseIn(echoPin, HIGH);
    float distance = duration / 29.0 / 2.0;

    if (digitalRead(sw) == LOW){
    if (distance <= detection_distance){
    myservo.write(second_angle);
    delay(400);
    myservo.write(first_angle);
    delay(800);
    }
    }
    else{
    myservo.write(first_angle);
    }
    }
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • IGE-XAO
  • #2
    vieleicht
    Level 36  
    Serwo nie jest przypadkiem 360 stopni?
  • IGE-XAO
  • #3
    labunio
    Level 3  
    vieleicht wrote:
    Serwo nie jest przypadkiem 360 stopni?


    Jest a nie może być ?
    Musze wtedy coś zmienić w programie czy wymienić serwo na 180 stopni ?
  • #4
    vieleicht
    Level 36  
    W serwie 360 nie ma informacji o położeniu więc program nawet nie może rozpoznać i ustawić położenia wyjściowego tylko się kręci w kółko.
  • #5
    labunio
    Level 3  
    vieleicht wrote:
    W serwie 360 nie ma informacji o położeniu więc nawet nie może rozpoznać i ustawić położenia wyjściowego tylko się kręci w kółko.

    Ojeju to nie wiedziałem, czyli jak zakupie sobie serwo 180 stopni to wtedy wszystko będzię śmigać włącznie z wykrywaniem przez czujnik ?
  • Helpful post
    #6
    vieleicht
    Level 36  
    Na pewno od tego trzeba zacząć.
  • #7
    labunio
    Level 3  
    vieleicht wrote:
    Na pewno od tego trzeba zacząć.

    Oki, dzięki bardzo za udzielenie informacji :D
  • #8
    labunio
    Level 3  
    Wymiana serwa na 180 stopni pomogło i wszystko działa prawidłowo :D