Arduino kod za servo motor

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: stojke369, pedja089, trax, InTheStillOfTheNight

Arduino kod za servo motor

Postby RumbaKing » 30-03-2018, 01:26

Nemam pojma sa kodiranjem, treba mi jednostavan kod koji ce da radi sledece:

Kada na neki pin arduina dodje +5V da se servo pomeri na 180 stepeni, a ako nema tih 5V da se vrati na nula stepeni i da tih nula stepeni bude pocetna pozicija. Znaci samo ako ima +5V da ide na 180, u svakom drugom slucaju da bude na 0 stepeni.
Inace na tom ulaznom pinu moze da bude ili +5v ili 0V.

Trazio sam po netu da li ima tako nesto, probao sam da preradim neke slicne ali se nisam uopste snasao.
Inace pravim ebike a servo treba da dize i spusta elektromotor od tocka tj. gume.
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor


Re: Arduino kod za servo motor

Postby RumbaKing » 30-03-2018, 20:11

Evo nesto sam izmursovao i RADI. Ako neko ima neku sugestiju neka kaze jer sam apsolutni pocetnik. Kako da malo usporim okretanje serva? Da ne ide maksimalnom brzinom tamo-vamo?

Code: Select all

//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    servo1.write(180);
  }
  else {
    servo1.write(10);
  }
}


RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 30-03-2018, 21:00

Moras mu postepeno menjati ugao. A ne naglo.
Znaci pri prelasku iz jednog u drugo stanje ides prvo 11, pa 12 i tako redom ili veci koraci... Sa pauzom nekom izmedju.
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Arduino kod za servo motor

Postby RumbaKing » 31-03-2018, 02:54

Probao i ukapirao da mi ipak vise odgovara da ide brzo. Radi mi odlicno na Arduino UNO ali na Pro Mini se servo ponasa ludo, u jednu stranu ide nekako a u drugu zaglavi na pola puta i titra i ni ne stigne na zadatu poziciju. Imam posebno napajanje za servo tako da ima dovoljno struje i za motor i za arduino. Ne znam sta je, nemam drugi da probam. Verovatno cu UNO i da koristim, jedino mi zbog manjih gabarita vise odgovara Pro Mini. A i razlika u ceni je 2e :D
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby Black » 31-03-2018, 08:05

Ako si uzeo pro mini što radi na 5V, onda su procesori isti i u UNO i pro mini. Tako da su kodovi isti kao i sheme i nema razloga da na jednom radi a drugom ne.

Ako si uzeo pro mini što radi na 3.3V a napajaš ga sa 5V, onda ti se vjerovatnos procesor zablesira
User avatar
Black
 
Posts: 971
Joined: 17-12-2008, 15:44

Re: Arduino kod za servo motor

Postby RumbaKing » 31-03-2018, 14:16

Ne znam, sad cu da probam sa 3,3V. Pogledao sam na Aliexpressu gde sam narucio, pise da je 5V, ko zna mozda je kinez spakovao pogresno :)
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby RumbaKing » 31-03-2018, 15:18

Isto se ponasa i sa 3,3V. Probao sam da koristim i druge pinove kao ulaze i kontrolu za servo ali je isto. Nebitno, bitno da radi na UNO. Treba da mi stignu nekoliko plocica od kineza pa cu probati opet.
Hvala svima, kad zavrsim EBike okacicu projekat na forumu, sad imam sve delove samo treba masinski deo odraditi, varenje...
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby Black » 31-03-2018, 15:40

Procesori su isti, tako da ne vidim nijedan logičan razlog zašto bi na jednom radio a na drugom ne. Možda je pločica u banani
User avatar
Black
 
Posts: 971
Joined: 17-12-2008, 15:44

Re: Arduino kod za servo motor

Postby RumbaKing » 01-09-2020, 01:23

Evo me opet, ne snalazim se. Crkao mi je servo i sada sam kupio servo motor koji navodno ima metalne zupcanike ali sam dobio sa plasticnim i sad mi treba da usporim brzinu serva ali nesto mi ne uspeva, ono sa delay ne funkcionise a ni ovo sto cu da postavim ovde takodje, negde gresim, pomagajte, to je za vas verovatno smesno :)
Prvi kod je prvobitni i sa njim je sve radilo godinu dana sa servom sa metalnim zupcanicima a drugi kod je nesto sto sam ja pokusavao i nisam uspeo. Inace kupio sam dva serva kod dva trgovca i oba su plasticni a u oglasu pise ALL METAL GEARS :)
Code: Select all
//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    servo1.write(180);
  }
  else {
    servo1.write(10);
  }
}

Code: Select all
//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;
int pos = 0;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    for (pos=0; pos<=180; pos+=1)
    servo1.write(180);
    delay(100);
  }
  else {
    for (pos=0; pos<=180; pos-=1)
    servo1.write(10);
    delay(100);
  }
}
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 01-09-2020, 08:46

Blizu si bio.
Probaj izmeniti ovo
Code: Select all
    servo1.write(10);

u ovo
Code: Select all
    servo1.write(Pos);
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Re: Arduino kod za servo motor


Re: Arduino kod za servo motor

Postby RumbaKing » 01-09-2020, 17:07

Probao sam i isto se ponasa kao i sa onim prvim kodom. Ono delay koliko god da stavim on ide maximalnom brzinom, verovatno neka zagrada ima viska ili manjka, meni je ovo skoro kao da gledam u hieroglife :(
Molim te Pedja ako mozes ceo kod da pogledas, mozda vidis nesto nelogicno. Evo trenutnog koda:
Code: Select all
//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;
int pos = 0;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    for (pos=0; pos<=180; pos+=1)
    servo1.write(180);
    delay(10);
  }
  else {
    for (pos=0; pos<=180; pos-=1)
    servo1.write(pos);
    delay(10);
  }
}
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 01-09-2020, 17:19

Ja ne koristim C, ali ajd da probam.

for (pos=0; pos<=180; pos-=1){
servo1.write(pos);
delay(10);
}
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Arduino kod za servo motor

Postby RumbaKing » 01-09-2020, 17:51

Nece, ovako ne mrda uopste :) Nema veze, hvala ti, mozda se javi neko ko koristi C, igracu se ja jos u medjuvremenu. Ponovicu jos jednom sta mi treba da ne bi citali celu temu.

Nemam pojma sa kodiranjem, treba mi jednostavan kod koji ce da radi sledece:

Kada na neki pin (pin4) arduina dodje +5V da se servo pomeri na 180 stepeni, a ako nema tih 5V da se vrati na nula stepeni i da tih nula stepeni bude pocetna pozicija. Znaci samo ako ima +5V da ide na 180, u svakom drugom slucaju da bude na 0 stepeni.
Inace na tom ulaznom pinu moze da bude ili +5v ili 0V.
Potrebno je da servo ne ide maximalnom brzinom vec sporije.
Evo kod koji radi ali brzo:
Code: Select all
//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    servo1.write(180);
  }
  else {
    servo1.write(10);
  }
}

RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 01-09-2020, 21:15

for (pos=0; pos<=180; pos-=1)
Ta petlja nije dobra nikako.
Mislim da bi trebalo da ide

Code: Select all
for (pos=180; pos>1 ; pos-=1)
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Arduino kod za servo motor

Postby RumbaKing » 02-09-2020, 00:09

Opet isto, radi ali brzo, ovo delay (1000) ili koliko god da stavim uopste ne igra ulogu, probao sam svasta da menjam i ili radi isto ili mi izbaci gresku u kodu ili ne mrda :)
Trenutni kod:
Code: Select all
//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;
int pos = 0;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    for (pos=0; pos<=180; pos+=1);
    servo1.write(pos);
    delay(1000);
  }
  else {
    for (pos=180; pos>1 ; pos-=1);
    servo1.write(pos);
    delay(1000);
  }
}
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 02-09-2020, 01:03

Opet ti fale zagrade obelezene crvenim u prethodnom postu.
Ovako nekako
Code: Select all
else {
    for (pos=180; pos>1 ; pos-=1){
    servo1.write(pos);
    delay(1000);}
  }
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Arduino kod za servo motor

Postby RumbaKing » 02-09-2020, 19:35

Novi momenat! Proradilo je delimicno, konacno reaguje na promene delay i kada je
PIN 4 na HIGH (+5V) pomeri se polako na 180 stepeni i stane. To radi.
Problem je kad je PIN 4 NA LOW (0V), i onda pocne stalno isto da radi: ide polako od 360 stepeni ka nuli, stigne polako do nule ali se odmah brzo vraca na 360 pa opet polako do nule pa brzo do 360 i sve tako :)
Cim mu dovedem pin 4 na HIGH polako ode na 360 kao sto treba i stoji tu.
Code: Select all
//RumbaKing servo

#include <Servo.h>
int button1 = 4; //button pin, connect to +5V to move servo
int press1 = 0;
Servo servo1;
int pos = 0;

void setup()
{
  pinMode(button1, INPUT);
  servo1.attach(7);
  digitalWrite(4, LOW); // make pin low
}

void loop()
{
  press1 = digitalRead(button1);
  if (press1 == HIGH)
  {
    for (pos=0; pos<=180; pos+=1);
    servo1.write(pos);
    delay(50);
  }
  else {
    for (pos=180; pos>1 ; pos-=1){
    servo1.write(pos);
    delay(50);}
  }
}
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 02-09-2020, 21:38

To moras razraditi dalje u programu. Da se ne ponavlja stalno...
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Arduino kod za servo motor

Postby RumbaKing » 03-09-2020, 12:54

Ok, videcu malo da se igram sa kodom, ima svasta na youtube, moram malo da ucim pod stare dane :) Hvala Pedja.
RumbaKing
 
Posts: 167
Joined: 22-02-2009, 05:02
Location: Srbija

Re: Arduino kod za servo motor

Postby pedja089 » 03-09-2020, 21:08

Nema na cemu...
Da je pic u pitanju i pic basic mogao bi vise pomoci.
User avatar
pedja089
 
Posts: 7733
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Next

Return to Mikrokontroleri - AVR

Who is online

Users browsing this forum: No registered users and 5 guests

GOOGLE