Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
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.
Odpovědět
Martin82
Příspěvky: 4
Registrován: 24 led 2022, 09:56
Reputation: 0

Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od Martin82 » 03 úno 2022, 10:44

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?

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od kiRRow » 03 úno 2022, 14:41

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

Martin82
Příspěvky: 4
Registrován: 24 led 2022, 09:56
Reputation: 0

Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od Martin82 » 03 úno 2022, 15:39

Š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

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od kiRRow » 03 úno 2022, 18:11

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.

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
}
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

Martin82
Příspěvky: 4
Registrován: 24 led 2022, 09:56
Reputation: 0

Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od Martin82 » 05 úno 2022, 19:02

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?

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od kiRRow » 05 úno 2022, 19:12

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 ?

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Prosba o pomoc - Inverzní otáčení servo motorů pomocí dvou tlačítek

Příspěvek od kiRRow » 05 úno 2022, 19:26

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 ...

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)
tento kod musí jít pryč a být nahrazen kodem

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;
}
nejsou ošetřeny zákmity tlačítek, využívá se delay na konci loopu

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;
	}	
}

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 18 hostů