Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
Zdravím, najde se zde někdo, kdo by bych ochotný pomoci s ovládáním dvou servo motorů pomocí Arduina?
Cíle jsou dva. Ovládání pomocí dvou tlačítek a vzdáleně přes remote. (U obou variant se musí otáčet serva inverzně)
Bohužel jsem na internetu nenašel nic podobného, co by mi poradilo (nejspíš je to tím, že jsem úplný laik . Uvítám každou pomoc.
Poradíte, prosím, jak na to?
Cíle jsou dva. Ovládání pomocí dvou tlačítek a vzdáleně přes remote. (U obou variant se musí otáčet serva inverzně)
Bohužel jsem na internetu nenašel nic podobného, co by mi poradilo (nejspíš je to tím, že jsem úplný laik . Uvítám každou pomoc.
Poradíte, prosím, jak na to?
Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
Asi uplně dobře nerozumím tomu "inverzně". To jako zmáčknu tl. doleva a ony se oba budou točit doprava, nebo se jeden vždy musí točit v opačném směru ? Že v podstatě ovládám jeden krokový motor a ten druhý dělá naprostý opak ? To by pak stačilo znát maximální pozici serva a od ní odečíst pozici prvního serva a zapsat ji do druhého. Maximální pozice je např 180 ... servo1 je na pozici 20, takže servo2 je na pozici 180-20=160
Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
Špatně jsem to napsal, ale pochopil jste to správně - při stisknutí tlačítka se vždy jeden musí točit v opačném směru. Servo motory jsou to tyto https://www.bighobby.cz/jx-servo-pdi-11 ... gIesPD_BwE
Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
No, tak to potom, když si třeba vemeš tenhle example : https://docs.arduino.cc/learn/electronics/servo-motors tak je tam kód co čte potenciometr a podle něj točí servem.
Když v tom example vytvoříš ještě jedno Servo myservo2, v setupu ho attachneš na jinačí pin (ale musí být PWM) a za myservo.write(val) hodíš řádek myservo2.write(180-val), tak by to mělo dělat přibližně to co myslíš, akorát to bude číst potenciometr místo dvou tlačítek. Ale to se pořeší příště ...
PS: Moje zkušenosti ze stavby robota ottíka - serva nenapájet z arduino desky, při rychlejším pohybu více serv najednou dochází k restartu, nebo zaseknutí procesoru
Kód: Vybrat vše
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
PS: Moje zkušenosti ze stavby robota ottíka - serva nenapájet z arduino desky, při rychlejším pohybu více serv najednou dochází k restartu, nebo zaseknutí procesoru
Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
Super, diky, funguje, potenciometr mi se servy toci presne jak potrebuju... Poradis jak tam ted dostat ty tlacitka, aby se to pri jejich stisknuti otacelo po triceti stupnich doleva a doprava?
Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
Jen při stisknutí ? ... tzn, stisknu, držím a ono se to pootočí o 30° a i kdybych to půl roku držel tak nic dalšího ? Co se má stát, když se budeš chtít dostat tlačítky mimo rozsah hodnot motoru ?
Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek
int val; // variable to read the value from the analog pin je třeba nahradit int val = 0; ( 0 je původní hodnota a musíš si ji změnit dle potřeby )
v setupu si musíš určit dva piny, co nastavíš jako INPUT_PULLUP, a oproti zemi je připojíš zkrz tlačítko ...
tento kod musí jít pryč a být nahrazen kodem
nejsou ošetřeny zákmity tlačítek, využívá se delay na konci loopu
a neni osetren stisk ... to by pak bylo
v setupu si musíš určit dva piny, co nastavíš jako INPUT_PULLUP, a oproti zemi je připojíš zkrz tlačítko ...
Kód: Vybrat vše
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
Kód: Vybrat vše
if(tady si musis precist tlacitko1==LOW){
val = val + 30;
}
if(tady si musis precist tlacitko2==LOW){
val = val - 30;
}
a neni osetren stisk ... to by pak bylo
Kód: Vybrat vše
if(tady si musis precist tlacitko1==LOW){
if(zmenil se stav tlacitka1?){
val = val + 30;
}
}
if(tady si musis precist tlacitko2==LOW){
if(zmenil se stav tlacitka2){
val = val - 30;
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů