Difference between revisions of "Otto - námety na vylepšenie programu"

From DT^2
Jump to: navigation, search
m
m
 
(2 intermediate revisions by one other user not shown)
Line 3: Line 3:
 
* [[Otto - námety na vylepšenie programu#Celková štruktúra programu - čo v ňom je a kde, ako to funguje|Celková štruktúra programu - čo v ňom je a kde, ako to funguje]]
 
* [[Otto - námety na vylepšenie programu#Celková štruktúra programu - čo v ňom je a kde, ako to funguje|Celková štruktúra programu - čo v ňom je a kde, ako to funguje]]
 
* [[Otto - námety na vylepšenie programu#Ako pridať ďalšiu melódiu|Ako pridať ďalšiu melódiu]]
 
* [[Otto - námety na vylepšenie programu#Ako pridať ďalšiu melódiu|Ako pridať ďalšiu melódiu]]
* Ako uložiť choreografiu priamo do programu, aby sa nemusela zadávať cez terminál
+
* [[Otto - námety na vylepšenie programu#Ako uložiť choreografiu priamo do programu, aby sa nemusela zadávať cez terminál|Ako uložiť choreografiu priamo do programu, aby sa nemusela zadávať cez terminál]]
* Ako zmeniť príkazy, ktoré sú štartované cez ultrazvukový senzor
+
* [[Otto - námety na vylepšenie programu#Ako zmeniť príkazy, ktoré sú štartované cez ultrazvukový senzor|Ako zmeniť príkazy, ktoré sú štartované cez ultrazvukový senzor]]
* Ako lepšie namapovať riadenie z Android telefónu
+
* [[Otto - námety na vylepšenie programu#Ako lepšie namapovať riadenie z Android telefónu|Ako lepšie namapovať riadenie z Android telefónu]]
  
 
== Celková štruktúra programu - čo v ňom je a kde, ako to funguje ==
 
== Celková štruktúra programu - čo v ňom je a kde, ako to funguje ==
Line 13: Line 13:
 
Skladá sa teda z týchto častí (tento text sa týka verzie 4):
 
Skladá sa teda z týchto častí (tento text sa týka verzie 4):
  
# definície konštánt, globálnych premenných, funkcia setup() - konfigurácia všetkých zariadení
+
# definície konštánt, globálnych premenných, funkcia <code>setup()</code> - konfigurácia všetkých zariadení
# funkcia loop() - reaguje na stlačenie klávesy, alebo na ruku pred ultrazvukom a keď sa robot dlhšie nudí, aktivuje náhodnú činnosť
+
# funkcia <code>loop()</code> - reaguje na stlačenie klávesy, alebo na ruku pred ultrazvukom a keď sa robot dlhšie nudí, aktivuje náhodnú činnosť
 
# väčšina ostatných funkcií, ktoré využíva hlavný program
 
# väčšina ostatných funkcií, ktoré využíva hlavný program
 
# funkcie, ktoré slúžia na čítanie a zápis do špeciálnej pamäte EEPROM - jej obsah sa po vypnutí robota (na rozdiel od pamäte RAM) nestratí, preto sem ukladáme kalibráciu servomotorov, tri choreografie a  informáciu o tom, či má robot po zapnutí automaticky začať tancovať
 
# funkcie, ktoré slúžia na čítanie a zápis do špeciálnej pamäte EEPROM - jej obsah sa po vypnutí robota (na rozdiel od pamäte RAM) nestratí, preto sem ukladáme kalibráciu servomotorov, tri choreografie a  informáciu o tom, či má robot po zapnutí automaticky začať tancovať
Line 23: Line 23:
 
Osobitnú pozornosť si zaslúžia tieto funkcie a premenné:
 
Osobitnú pozornosť si zaslúžia tieto funkcie a premenné:
  
# vo funkcii loop() je naprogramované, čo Otto robí pri stlačení rôznych kláves, ak mu chcete pridať nejakú novú schopnosť, tak sem stačí pridať riadok - pozri na konci funkcie riadok kde sa volá vasa_dalsia_funkcia() - to je ukážka toho, ako sem môžete pridať nejakú ďalšiu funkciu...
+
# vo funkcii <code>loop()</code> je naprogramované, čo Otto robí pri stlačení rôznych klávesov, ak mu chcete pridať nejakú novú schopnosť, tak sem stačí pridať riadok - pozri na konci funkcie riadok kde sa volá <code>vasa_dalsia_funkcia()</code> - to je ukážka toho, ako sem môžete pridať nejakú ďalšiu funkciu...
# vo funkcii ma_zahrat_melodiu() sú klávesy, ktoré štartujú jednotlivé melódie. ak si pridáte novú melódiu a chcete ju štartovať aj pomocou nejakého klávesu nielen príkazom z choreografie, tak sem pridajte riadok...
+
# vo funkcii <code>ma_zahrat_melodiu()</code> sú klávesy, ktoré štartujú jednotlivé melódie. ak si pridáte novú melódiu a chcete ju štartovať aj pomocou nejakého klávesu nielen príkazom z choreografie, tak sem pridajte riadok...
# funkcie efekt1() - efekt16() sú rôzne zvukové efekty, ktoré Otto dokáže vydať, môžete experimentovať s nastaveniami v týchto funkciách, alebo si vymyslieť nové vlastné zvukové efekty...
+
# funkcie <code>efekt1()</code> - <code>efekt16()</code> sú rôzne zvukové efekty, ktoré Otto dokáže vydať, môžete experimentovať s nastaveniami v týchto funkciách, alebo si vymyslieť nové vlastné zvukové efekty...
# funkcia menu_command() určuje, čo sa má robiť, keď rukou pred Ottom vyžiadame niektorý program - počet priblížení ruky určuje číslo programu, v tejto funkcii môžete určiť, čo sa má na akom čísle diať...
+
# funkcia <code>menu_command()</code> určuje, čo sa má robiť, keď rukou pred Ottom vyžiadame niektorý program - počet priblížení ruky určuje číslo programu, v tejto funkcii môžete určiť, čo sa má na akom čísle diať...
# funkcia ahoj() je charakterisktický zvuk, ktorým sa Otto ozýva pri zapnutí - ak si tento zvuk chcete zmeniť, tak tu... pozor - aby prehrávanie melódie fungovalo, musíme používať našu funkciu tone2 namiesto arduinovskej funkcie tone()
+
# funkcia <code>ahoj()</code> je charakterisktický zvuk, ktorým sa Otto ozýva pri zapnutí - ak si tento zvuk chcete zmeniť, tak tu... pozor - aby prehrávanie melódie fungovalo, musíme používať našu funkciu <code>tone2()</code> namiesto arduinovskej funkcie <code>tone()</code>
# funkcie kombinacia1() - kombinacia4() si upravte ak chcete robotom robiť zložitejšie pohyby pri riadení cez mobil. sú priradené na klávesy '3' .. '6'.
+
# funkcie <code>kombinacia1()</code> - <code>kombinacia4()</code> si upravte ak chcete robotom robiť zložitejšie pohyby pri riadení cez mobil. sú priradené na klávesy '3' .. '6'.
# ak chcete rozširovať príkazy, ktoré môžu byť v choreografii, upravujte funkciu specialny_prikaz()
+
# ak chcete rozširovať príkazy, ktoré môžu byť v choreografii, upravujte funkciu <code>specialny_prikaz()</code>
  
 
Program robí toto:
 
Program robí toto:
Line 37: Line 37:
 
# inak pozdraví, zamáva rukami a čaká na znak prijatý cez USB, alebo cez BlueTooth, alebo na zatienenie ultrazvukového senzora, ak sa pár sekúnd nič nedeje, tak vykoná náhodnú činnosť (väčšinou len vydá nejaký zvuk, niekedy sa začne hýbať, hrať melódiu, alebo vydá 20 náhodných zvukov za sebou)
 
# inak pozdraví, zamáva rukami a čaká na znak prijatý cez USB, alebo cez BlueTooth, alebo na zatienenie ultrazvukového senzora, ak sa pár sekúnd nič nedeje, tak vykoná náhodnú činnosť (väčšinou len vydá nejaký zvuk, niekedy sa začne hýbať, hrať melódiu, alebo vydá 20 náhodných zvukov za sebou)
 
# robota v tomto režime môžeme priamo ovládať jednotlivými znakmi cez USB alebo BlueTooth, ladiť alebo testovať choreografiu, kalibrovať a podobne (podrobný zoznam funkcií je v [[Otto_-_riadiaci_program_v.4|tabuľke na stránke s programom]])
 
# robota v tomto režime môžeme priamo ovládať jednotlivými znakmi cez USB alebo BlueTooth, ladiť alebo testovať choreografiu, kalibrovať a podobne (podrobný zoznam funkcií je v [[Otto_-_riadiaci_program_v.4|tabuľke na stránke s programom]])
 +
# novú choreografiu do robota zadáme tak, že najskôr pošleme znak '@' a potom v každom riadku jeden príkaz podľa [[Otto_-_príklady_choreografií|formátu choreografie]] - každá choreografia musí byť ukončená riadkom <code>0 0 0</code>, takto zadanú choreografiu môžeme skontrolovať pomocou znaku '?' a robot ju zatancuje po znaku 't'. Do jedného z troch miest v pamäti EEPROM ju zapíšeme pomocou 'W' a neskôr môžeme vyvolať pomocou 'C', alebo počas automatického štartu nastaveného cez 'A'
 
# pomocou ultrazvukového senzora môžeme s robotom komunikovať - zatiaľ to znamená štartovať jeho rôzne činnosti, funguje to takto:
 
# pomocou ultrazvukového senzora môžeme s robotom komunikovať - zatiaľ to znamená štartovať jeho rôzne činnosti, funguje to takto:
 
## najskôr priblížime ruku (alebo lepšie nejakú pevnú kartičku, telefón a pod.) asi 5-10 cm pred senzor
 
## najskôr priblížime ruku (alebo lepšie nejakú pevnú kartičku, telefón a pod.) asi 5-10 cm pred senzor
Line 50: Line 51:
 
#* akýkoľvek kláves preruší tanec
 
#* akýkoľvek kláves preruší tanec
 
#* pri potvrdzovaní zápisu/čítania sa musí stlačiť veľké 'Y', malé 'y' neurobí nič
 
#* pri potvrdzovaní zápisu/čítania sa musí stlačiť veľké 'Y', malé 'y' neurobí nič
#* ak nás počas práce Ottove vrzúkanie otravuje, môžeme vypnúť režim nudy klávesou V
+
#* ak nás počas práce Ottove vrzúkanie otravuje, môžeme vypnúť režim nudy klávesom 'V'
#* užitočný je kláves 'S', ktorý zobrazí aktuálny stav všetkých seriev - choreografiu teda môžeme ladiť tak, že pomocou kláves robota nastavíme do požadovanej polohy a potom stlačíme S, aby nám zobrazil hodnotu všetkých seriev, to servo, ktoré sa pohlo si všimneme a pridáme do ďalšieho riadku choreografie
+
#* užitočný je kláves 'S', ktorý zobrazí aktuálny stav všetkých seriev - choreografiu teda môžeme ladiť tak, že pomocou klávesov robota nastavíme do požadovanej polohy a potom stlačíme S, aby nám zobrazil hodnotu všetkých seriev, to servo, ktoré sa pohlo si všimneme a pridáme do ďalšieho riadku choreografie
#* predtým, ako zapíšeme prvú choreografiu do EEPROM, je potrebné EEPROM naformátovať klávesou X
+
#* predtým, ako zapíšeme prvú choreografiu do EEPROM, je potrebné EEPROM naformátovať klávesom 'X'
  
 +
== Ako pridať ďalšiu melódiu ==
  
== Ako pridať ďalšiu melódiu ==
+
Okrem základného zvukového pozdravu <code>ahoj()</code>, jednoduchého písknutia <code>pipni()</code>, krátkeho úvodného motívu pesničky jedna druhej riekla - <code>melodia_jedna_druhej()</code> Otto pozná a v pozadí počas choreografie alebo len tak na požiadanie môže zahrať 4 rôzne melódie. V týchto melódiách je každý tón zaznamenaný ako jeden bajt, ktorý je určený podľa [[Arduino_-_zložitejšia_melódia|tejto tabuľky]]. Melódie sú kvôli úspornosti uložené v programovej pamäti FLASH, v poliach <code>melodia1[]</code> ... <code>melodia4[]</code>. Okrem toho v poli <code>dlzka_melodia[]</code> musia byť dĺžky melódií. Preto, ak chcete experimentovať s vlastnou melódiou, najjednoduchšie je upravovať niektorú z týchto melódií (napr. kohútika jarabého). Ešte lepšie je pridať ďalšie pole - napr. <code>melodia5[]</code> a pridať aj jeho dĺžku na koniec poľa <code>dlzka_melodia[]</code> - túto melódiu bude možné zahrať vtedy, ak do funkcie <code>zahraj_melodiu()</code> pridáte ďalší riadok: <code>else if (cislo == 5) current_note = melodia5;</code>. Ak chcete pridanú melódiu vyvolávať aj nejakou klávesom (čo je praktické pri ladení melódie), tak upravte aj <code>ma_zahrat_melodiu()</code>.
 +
 
 +
== Ako uložiť choreografiu priamo do programu, aby sa nemusela zadávať cez terminál ==
 +
 
 +
Prvý príkaz vyvolaný cez ultrazvukový senzor štartuje funkciu <code>vpred()</code>, ktorá spustí chôdzu uloženú v programovej pamäti v premenných <code>chor_time[], chor_servo[], chor_val[]</code> a <code>chor_len</code>. Posledná z nich obsahuje počet riadkov choreografie chôdze a ostatné tri zodpovedajú jednotlivým stĺpcom choreografie chôdze - čas čakania, číslo serva a cieľová hodnota serva. Takýmto istým spôsobom si môžete pridať inú choreografiu, ktorá má byť pevne uložená v programe a do funkcie <code>loop()</code> môžete pridať kláves, ktorým sa vaša nová choreografia bude štartovať (pridáte analogickú funkciu k funkcii <code>vpred()</code>). 
 +
 
 +
== Ako zmeniť príkazy, ktoré sú štartované cez ultrazvukový senzor ==
 +
 
 +
# vyhľadajte funkciu <code>menu_command()</code>
 +
# v tejto funkcii upravte telo príslušnej podmienky, alebo pridajte ďalšiu podmienku
 +
# buď si môžete vytvoriť novú funkciu, ktorú odtiaľ voláte, alebo využiť niektorú existujúcu...
 +
 
 +
== Ako lepšie namapovať riadenie z Android telefónu ==
 +
 
 +
V aplikácii Arduino Bluetooth Controller môžete nastavovať znaky, ktoré aplikácia cez BlueTooth vysiela do robota pri stláčaní jednotlivých tlačidiel, alebo nakláňaní telefónu. Namapovanie jednotlivých stupňov volnosti vytvorí ale dosť zložito riadený systém a lepší efekt dosiahnete, keď na jednotlivé znaky namapujete zložitejšie pohyby - ideálne celé choreografie. Viem si napríklad predstaviť, že naklonením telefónu vpred by sa odštartovala chôdza vpred, naklonením vzad zasa chôdza vzad, naklonením vpravo zasa otáčanie robota na mieste vpravo a vľavo zasa naopak. Na stlačenie nejakého tlačidla android vyšle medzeru, čím robota zastaví a umiestni do neutrálnej pozície. Ak sa vám to podarí, pošlite nám video!
 +
 
 +
__notoc__

Latest revision as of 18:01, 1 September 2018

Program zatiaľ využíva len asi polovicu programovej pamäte (typu FLASH), takže je ešte veľa priestoru na jeho vylepšovanie a upravovanie. Ako na to?

Celková štruktúra programu - čo v ňom je a kde, ako to funguje

Program sa skladá z viacerých častí, ktoré sme pre jednoduchšiu manipuláciu umiestnili do jedného súboru. Vhodnejšie by bolo tento súbor rozdeliť na viacero samostatných súborov, ale potom by sa program ťažšie downloadoval, upravoval a podobne.

Skladá sa teda z týchto častí (tento text sa týka verzie 4):

  1. definície konštánt, globálnych premenných, funkcia setup() - konfigurácia všetkých zariadení
  2. funkcia loop() - reaguje na stlačenie klávesy, alebo na ruku pred ultrazvukom a keď sa robot dlhšie nudí, aktivuje náhodnú činnosť
  3. väčšina ostatných funkcií, ktoré využíva hlavný program
  4. funkcie, ktoré slúžia na čítanie a zápis do špeciálnej pamäte EEPROM - jej obsah sa po vypnutí robota (na rozdiel od pamäte RAM) nestratí, preto sem ukladáme kalibráciu servomotorov, tri choreografie a informáciu o tom, či má robot po zapnutí automaticky začať tancovať
  5. naša vlastná softvérová implementácia komunikácie po sériovom porte (jediný sériový port Arduina je totiž už obsadený programovacím USB káblikom a preto musí byť BlueTooth pripojený inam, lenže štandardná knižnica SoftwareSerial znemožňuje súčasné používanie knižnice Servo, preto sme museli vytvoriť lepšiu vlastnú verziu), zároveň je tu niekoľko pomocných funkcií, ktoré dokážu vypisovať do sériového portu reťazce znakov uložené v pamäti FLASH (programová pamäť), aby sme ušetrili pamäť RAM, ktorej má ATmega328 oveľa menej (má 32KB Flash, ale iba 2KB RAM)
  6. funkcie na čítanie z ultazvukového senzora pomocou prerušení - pomocou nich je možné pomalé čítanie z ultrazvukového senzora robiť v pozadí, kým hlavný program robí niečo iné (aj keď túto vlastnosť zatiaľ nevyužívame)
  7. melódie a funkcie na prehrávanie tónov a melódií v pozadí pomocou časovača timer2 - program môže vykonávať inú činnosť zatiaľ čo sa melódia prehráva v pozadí

Osobitnú pozornosť si zaslúžia tieto funkcie a premenné:

  1. vo funkcii loop() je naprogramované, čo Otto robí pri stlačení rôznych klávesov, ak mu chcete pridať nejakú novú schopnosť, tak sem stačí pridať riadok - pozri na konci funkcie riadok kde sa volá vasa_dalsia_funkcia() - to je ukážka toho, ako sem môžete pridať nejakú ďalšiu funkciu...
  2. vo funkcii ma_zahrat_melodiu() sú klávesy, ktoré štartujú jednotlivé melódie. ak si pridáte novú melódiu a chcete ju štartovať aj pomocou nejakého klávesu nielen príkazom z choreografie, tak sem pridajte riadok...
  3. funkcie efekt1() - efekt16() sú rôzne zvukové efekty, ktoré Otto dokáže vydať, môžete experimentovať s nastaveniami v týchto funkciách, alebo si vymyslieť nové vlastné zvukové efekty...
  4. funkcia menu_command() určuje, čo sa má robiť, keď rukou pred Ottom vyžiadame niektorý program - počet priblížení ruky určuje číslo programu, v tejto funkcii môžete určiť, čo sa má na akom čísle diať...
  5. funkcia ahoj() je charakterisktický zvuk, ktorým sa Otto ozýva pri zapnutí - ak si tento zvuk chcete zmeniť, tak tu... pozor - aby prehrávanie melódie fungovalo, musíme používať našu funkciu tone2() namiesto arduinovskej funkcie tone()
  6. funkcie kombinacia1() - kombinacia4() si upravte ak chcete robotom robiť zložitejšie pohyby pri riadení cez mobil. sú priradené na klávesy '3' .. '6'.
  7. ak chcete rozširovať príkazy, ktoré môžu byť v choreografii, upravujte funkciu specialny_prikaz()

Program robí toto:

  1. po zapnutí skontroluje, či je v EEPROM zapísaná kalibrácia, ak áno, načíta ju
  2. ak je nastavený tak, že má automaticky štartovať tanec po zapnutí, počká niekoľko sekúnd a začne tancovať
  3. inak pozdraví, zamáva rukami a čaká na znak prijatý cez USB, alebo cez BlueTooth, alebo na zatienenie ultrazvukového senzora, ak sa pár sekúnd nič nedeje, tak vykoná náhodnú činnosť (väčšinou len vydá nejaký zvuk, niekedy sa začne hýbať, hrať melódiu, alebo vydá 20 náhodných zvukov za sebou)
  4. robota v tomto režime môžeme priamo ovládať jednotlivými znakmi cez USB alebo BlueTooth, ladiť alebo testovať choreografiu, kalibrovať a podobne (podrobný zoznam funkcií je v tabuľke na stránke s programom)
  5. novú choreografiu do robota zadáme tak, že najskôr pošleme znak '@' a potom v každom riadku jeden príkaz podľa formátu choreografie - každá choreografia musí byť ukončená riadkom 0 0 0, takto zadanú choreografiu môžeme skontrolovať pomocou znaku '?' a robot ju zatancuje po znaku 't'. Do jedného z troch miest v pamäti EEPROM ju zapíšeme pomocou 'W' a neskôr môžeme vyvolať pomocou 'C', alebo počas automatického štartu nastaveného cez 'A'
  6. pomocou ultrazvukového senzora môžeme s robotom komunikovať - zatiaľ to znamená štartovať jeho rôzne činnosti, funguje to takto:
    1. najskôr priblížime ruku (alebo lepšie nejakú pevnú kartičku, telefón a pod.) asi 5-10 cm pred senzor
    2. po niekoľkých sekundách robot pískne nízkym tónom, aby nám dal vedieť, že nás zaregistroval
    3. následne čaká, kým ruku oddialime, aby mohol začať počítať počet priblížení rukou
    4. v okamihu, keď sa mu podarí oddialenie zamerať, vydá vysoký tón, aby nás o tom upovedomil
    5. ďalej opakujeme priblíženie a oddialenie ruky pred senzorom, pričom pri každom priblížení robot vydá niekoľko písknutí (ich počet určuje aktuálne navolený program) a pri každom oddialeníu vydá vysoký tón
    6. keď prestaneme ruku pred senzor prikladať, robot si to po niekoľkých sekundách všimne, vydá tón a odštartuje zvolený program (podľa posledného počtu písknutí)
    7. ak sa vám zdá, že senzor nereaguje, vyskúšajte režim 'U' z hlavného menu, ktorý do USB a na Bluetooth vypisuje nameranú vzdialenosť
  7. niekoľko ďalších praktických rád:
    • medzera vždy postupne vyrovná všetky servá do strednej polohy
    • kláves ESC preruší melódiu
    • akýkoľvek kláves preruší tanec
    • pri potvrdzovaní zápisu/čítania sa musí stlačiť veľké 'Y', malé 'y' neurobí nič
    • ak nás počas práce Ottove vrzúkanie otravuje, môžeme vypnúť režim nudy klávesom 'V'
    • užitočný je kláves 'S', ktorý zobrazí aktuálny stav všetkých seriev - choreografiu teda môžeme ladiť tak, že pomocou klávesov robota nastavíme do požadovanej polohy a potom stlačíme S, aby nám zobrazil hodnotu všetkých seriev, to servo, ktoré sa pohlo si všimneme a pridáme do ďalšieho riadku choreografie
    • predtým, ako zapíšeme prvú choreografiu do EEPROM, je potrebné EEPROM naformátovať klávesom 'X'

Ako pridať ďalšiu melódiu

Okrem základného zvukového pozdravu ahoj(), jednoduchého písknutia pipni(), krátkeho úvodného motívu pesničky jedna druhej riekla - melodia_jedna_druhej() Otto pozná a v pozadí počas choreografie alebo len tak na požiadanie môže zahrať 4 rôzne melódie. V týchto melódiách je každý tón zaznamenaný ako jeden bajt, ktorý je určený podľa tejto tabuľky. Melódie sú kvôli úspornosti uložené v programovej pamäti FLASH, v poliach melodia1[] ... melodia4[]. Okrem toho v poli dlzka_melodia[] musia byť dĺžky melódií. Preto, ak chcete experimentovať s vlastnou melódiou, najjednoduchšie je upravovať niektorú z týchto melódií (napr. kohútika jarabého). Ešte lepšie je pridať ďalšie pole - napr. melodia5[] a pridať aj jeho dĺžku na koniec poľa dlzka_melodia[] - túto melódiu bude možné zahrať vtedy, ak do funkcie zahraj_melodiu() pridáte ďalší riadok: else if (cislo == 5) current_note = melodia5;. Ak chcete pridanú melódiu vyvolávať aj nejakou klávesom (čo je praktické pri ladení melódie), tak upravte aj ma_zahrat_melodiu().

Ako uložiť choreografiu priamo do programu, aby sa nemusela zadávať cez terminál

Prvý príkaz vyvolaný cez ultrazvukový senzor štartuje funkciu vpred(), ktorá spustí chôdzu uloženú v programovej pamäti v premenných chor_time[], chor_servo[], chor_val[] a chor_len. Posledná z nich obsahuje počet riadkov choreografie chôdze a ostatné tri zodpovedajú jednotlivým stĺpcom choreografie chôdze - čas čakania, číslo serva a cieľová hodnota serva. Takýmto istým spôsobom si môžete pridať inú choreografiu, ktorá má byť pevne uložená v programe a do funkcie loop() môžete pridať kláves, ktorým sa vaša nová choreografia bude štartovať (pridáte analogickú funkciu k funkcii vpred()).

Ako zmeniť príkazy, ktoré sú štartované cez ultrazvukový senzor

  1. vyhľadajte funkciu menu_command()
  2. v tejto funkcii upravte telo príslušnej podmienky, alebo pridajte ďalšiu podmienku
  3. buď si môžete vytvoriť novú funkciu, ktorú odtiaľ voláte, alebo využiť niektorú existujúcu...

Ako lepšie namapovať riadenie z Android telefónu

V aplikácii Arduino Bluetooth Controller môžete nastavovať znaky, ktoré aplikácia cez BlueTooth vysiela do robota pri stláčaní jednotlivých tlačidiel, alebo nakláňaní telefónu. Namapovanie jednotlivých stupňov volnosti vytvorí ale dosť zložito riadený systém a lepší efekt dosiahnete, keď na jednotlivé znaky namapujete zložitejšie pohyby - ideálne celé choreografie. Viem si napríklad predstaviť, že naklonením telefónu vpred by sa odštartovala chôdza vpred, naklonením vzad zasa chôdza vzad, naklonením vpravo zasa otáčanie robota na mieste vpravo a vľavo zasa naopak. Na stlačenie nejakého tlačidla android vyšle medzeru, čím robota zastaví a umiestni do neutrálnej pozície. Ak sa vám to podarí, pošlite nám video!