Odeslat nové téma Odpovědět na téma  [ Příspěvků: 104 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další
Autor Zpráva
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 13.02.2018 12:52 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
BoŠ píše:
... že pro AtTiny platí...,
Platí to pro avr, citát je z ATmegy.


Nahoru
 Profil  
 
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: úte 13.02.2018 13:09 
Mazák
Mazák
Uživatelský avatar

Registrován: 26.5.2013
Příspěvky: 1538
Bydliště: Brno
ellet píše:
Platí to pro avr, citát je z ATmegy.


Souhlas, já se díval pouze na Tiny, tak jsem nechtěl být zavádějící

_________________
MC-20HOTT,DS-16,X10S,14SG,S-trino MkII,SpeedFire, Extra 102",MiniCorado,LOGO550SE,Goblin570


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 14.02.2018 17:10 
Mazák
Mazák
Uživatelský avatar

Registrován: 26.5.2013
Příspěvky: 1538
Bydliště: Brno
Jak se daří Jyrry?

_________________
MC-20HOTT,DS-16,X10S,14SG,S-trino MkII,SpeedFire, Extra 102",MiniCorado,LOGO550SE,Goblin570


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 14.02.2018 18:10 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
viewtopic.php?f=39&t=83110 :-)
Akorát jsem si zadělal na pakárničku rozsahem PWM pro servo 500-2500us... kde jsem to vzal teda nevím :roll:
Ale už to maká jak si představuju.
Teď zkusím některé z mých projektů na PICech převést na Arduino, abych se pocvičil :-)
A na cestě je ATmega328 nano a adapter USB-TTL CP2102.

Mám tam i ošetření když vynechají vstupní PWM pulzy 3x za sebou:
Citace:
// dve serva na jednom kanalu:
int neutral_uS = 1500;
int hystereze = 20;
int puls_uS = 1500;
int puls1_uS = 1500;
int puls2_uS = 1500;
int ramec_uS = 20000;
byte pocet_imp = 0;

const byte LED = 1;
const byte PWM = 2;
const byte servo1 = 3;
const byte servo2 = 4;

void setup() {
pinMode(LED, OUTPUT); // LEDka
pinMode(PWM, INPUT); // vstup PWM
pinMode(servo1, OUTPUT); // servo 1
pinMode(servo2, OUTPUT); // servo 2
attachInterrupt(0, ctipuls, RISING);
}

void loop() {
pocet_imp++;
if (pocet_imp > 3) puls_uS = neutral_uS;
if (puls_uS > 1520){
puls1_uS = puls_uS * 2 - 2000;
}
else {
puls1_uS = 1000;
}
if (puls_uS < 1480){
puls2_uS = puls_uS * 2 - 1000;
}
else {
puls2_uS = 2000;
}
if (puls_uS > neutral_uS + hystereze) digitalWrite(LED, HIGH);
if (puls_uS < neutral_uS - hystereze) digitalWrite(LED, LOW);
noInterrupts();
pulz(puls1_uS, servo1);
pulz(puls2_uS, servo2);
interrupts();
delayMicroseconds(ramec_uS - puls_uS);
}

void pulz(int pulz_uS, byte servo) {
digitalWrite(servo, HIGH);
delayMicroseconds(pulz_uS);
digitalWrite(servo, LOW);
}

void ctipuls() {
unsigned long aktual_uS = micros();
long newpuls_uS;
while (digitalRead(2) == HIGH) {
}
newpuls_uS = micros() - aktual_uS;
if (newpuls_uS < 900) newpuls_uS = puls_uS; // osetreni delky
if (newpuls_uS > 2100) newpuls_uS = puls_uS; // osetreni delky
puls_uS = newpuls_uS;
pocet_imp = 0;
}

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 14.02.2018 20:32 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
jyrry píše:
...A na cestě je ATmega328 nano a adapter USB-TTL CP2102.
Pro Nano ten převodník nepotřebuješ ale určitě se bude hodit pro Mini Pro, které brzo objednáš. (A snad jsi objednal převodník s 6-ti koiíky, je s ním pohodlnější práce)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: stř 14.02.2018 22:53 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Aaaa, pardon, je to pro mini a 6 kolíků ano
Čerpám chytrosti z https://arduino-shop.cz/ :|

jo a viewtopic.php?f=39&t=83110&p=1398118#p1398118 :lol:

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pát 16.02.2018 21:13 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Ještě lama-otázku :-)
Co budu potřebovat k téhle desce? Bootloader tam asi nebude, přes co se to nakrmí?

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pát 16.02.2018 21:33 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
jyrry píše:
Ještě lama-otázku :-)
Co budu potřebovat k téhle desce? Bootloader tam asi nebude, přes co se to nakrmí?
Nic, je tam (mám tu samou z ebay).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pát 16.02.2018 23:18 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Chlapi, máte mně na svědomí :lol:

S PICama jsem polevil také proto že mi nechodí správně prostředí PICBasic-u na 64b woknousech v novém (no, repasovaném...) kompu. Tohle na tom chodí :mrgreen:

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 05.03.2018 16:41 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Tak když už jste mně navnadili... :lol:
Zatím z postupně objednaných destiček a hračiček dorazilo tohle:
Příloha:
A_nano.jpg
A_nano.jpg
[ 134.23 KiB | Zobrazeno 7063 krát ]

Co k tomu ještě musí přibýt abych to mohl nakrmit prográmkem z Arduino IDE? Podle https://arduino-shop.cz/arduino/1164-ar ... deska.html jen instalovat driver?

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 05.03.2018 16:45 
Mazák
Mazák

Registrován: 3.11.2011
Příspěvky: 592
Bydliště: Česká republika
Nemusí se většinou nic instalovat. Stačí připojit přes USB, zvolit správný typ desky a můžete nahrávat.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 05.03.2018 17:46 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
Jestli to nepojede. tak si to o driver řekne. Jestli ti nejde v PicBasicu ten tvůj druhý řádek (zavináč....), tak se to dá obejít.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 05.03.2018 18:22 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Už si tu skrz to hýbu servem 8)
Bylo mi podezřelé že to je tak jednoduché. A je :mrgreen:

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 05.03.2018 19:33 
Moderátor serveru
Moderátor serveru
Uživatelský avatar

Registrován: 28.2.2005
Příspěvky: 20822
Bydliště: Rakovník, CZ
Obrázky: 0
Teda ta destička pod tím, ta je ale šikovná... dají se na to napíchnout rovnou serva, poťák, osciloskop, atd... pinů je dost a dost :mrgreen:
Proč jsem to neznal dřív? :?
Příloha:
servotester.jpg
servotester.jpg
[ 115.41 KiB | Zobrazeno 7041 krát ]


A je to; bez namáčení a bez přerušení :mrgreen:
Kód:
// servo tester:
  unsigned int puls1_uS = 1500;
  unsigned int puls2_uS = 1500;
  unsigned int puls3_uS = 1500;
  unsigned int krok;
 
  unsigned long aktual_uS;
  unsigned long ramec_uS = 20000;
   
  const byte PWM = 2;
  const byte servo1 = 3;
  const byte servo2 = 4;
  const byte servo3 = 5;
  const byte POT = A0;
   
  void setup() {
  pinMode(servo1, OUTPUT); // servo 1
  pinMode(servo2, OUTPUT); // servo 2
  pinMode(servo3, OUTPUT); // servo 3
  pinMode(POT, INPUT); // POTak
  }

void loop() {
  while (puls2_uS < 2000){
    nacti();
    puls2_uS = puls2_uS + krok;
    pulzy();
    while (micros() - aktual_uS < ramec_uS){}
    }
  while (puls2_uS > 1000){
    nacti();
    puls2_uS = puls2_uS - krok;
    pulzy();
    while (micros() - aktual_uS < ramec_uS){}
    }
  }

void nacti() {
  aktual_uS = micros();
  puls1_uS = analogRead(POT) + 1000;
  krok = analogRead(POT) / 10;
  }

void pulzy() {
  pulz(puls1_uS, servo1);
  pulz(puls2_uS, servo2);
  pulz(puls3_uS, servo3);
  }

void pulz(int pulz_uS, byte servo) {
  digitalWrite(servo, HIGH);
  delayMicroseconds(pulz_uS);
  digitalWrite(servo, LOW);
  }

Servotester má 3 výstupy; na prvním se servo hýbe dle poťáku, na druhém cykluje s rychlostí dle poťáku (od "stojí" až cca 4 cykly/sec) a na třetím je "neutrál" - 1,500 ms.
S tím cyklováním to je legrace - zvlášť u levných serv (jako HXT500, nějaké HK apod.) se při pomalém pohybu servo mění na krokový motor :mrgreen: a kupodivu to ustály třeba letité (>15 roků) HS50 ...

_________________
jyrry.webnode.cz


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Arduino a servo
PříspěvekNapsal: pon 05.03.2018 21:43 
Mazák
Mazák
Uživatelský avatar

Registrován: 12.2.2016
Příspěvky: 1975
Bydliště: Vysočina, ČR
Říkal jsem, že tě Arduino nemine ale ten notebook, z toho jak to napájíš, moc radost nemá.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 104 ]  Přejít na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další

 


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 9 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  

 

  Powered by phpBB® Forum Software © phpBB Group  Český překlad – phpBB.cz 

 

NAVRCHOLU.cz