Denníček - november 2017: Rozdiel medzi revíziami
Bez shrnutí editace |
dBez shrnutí editace |
||
(23 medziľahlých úprav od 3 ďalších používateľov nie je zobrazených) | |||
Riadok 9: | Riadok 9: | ||
</div> | </div> | ||
<div style="background-color: #FFF8F8;"> | <div style="background-color: #FFF8F8;"> | ||
''utorok, 7.11.2017'' | ''utorok, 7.11.2017'' | ||
Riadok 33: | Riadok 31: | ||
</div> | </div> | ||
<div style="background-color: #F8FFF8;"> | |||
<div style="background-color: # | |||
''štvrtok, 9.11.2017'' | ''štvrtok, 9.11.2017'' | ||
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných: | Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných: | ||
Prvý program používa jeden kufrík ''pocet''. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto: | |||
* hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji | |||
* počká, kým sa nestlačí dotykový senzor | |||
* vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka | |||
[[Image:kufre.png|500px]] | |||
kurfre: [[Media:kufre.zip|kufre.zip]] | kurfre: [[Media:kufre.zip|kufre.zip]] | ||
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu: | |||
[[Image:zvuky.png|500px]] | |||
zvuky: [[Media:zvuky.zip|zvuky.zip]] | zvuky: [[Media:zvuky.zip|zvuky.zip]] | ||
Riadok 52: | Riadok 60: | ||
</div> | </div> | ||
<div style="background-color: # | <div style="background-color: #F8F8FF;"> | ||
''utorok, 14.11.2017'' | ''utorok, 14.11.2017'' | ||
Riadok 90: | Riadok 98: | ||
</div> | </div> | ||
Hra by me. | <div style="background-color: #FFFFF8;"> | ||
''štvrtok, 16.11.2017'' | |||
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo! | |||
[[Image:sada_fll.jpg|600px]] | |||
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT. | |||
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov: | |||
[[Image:joystick1.jpg|350px]] [[Image:joystick2.jpg|350px]] | |||
Oliver: Hra by me. | |||
[[Image:futbal_program.png|600px]] | |||
Download: [[Media:futbal.zip|futbal.zip]] | Download: [[Media:futbal.zip|futbal.zip]] | ||
</div> | |||
<div style="background-color: #F8FFF8;"> | |||
''utorok, 21.11.2017'' | |||
<youtube>hnj7iCl-93Q</youtube> | |||
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-) | |||
[[Image:Oliarobt.jpg|400px]] | |||
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL. | |||
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro! | |||
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach. | |||
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, | |||
ktoré pracujú s ultrazvukovým senzorom robia: | |||
Príklad 1: | |||
[[Image:meraj_ultrazvuk.png|300px]] | |||
V tomto prípade sme použili ''žltý'' - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria. | |||
Download: [[Media:meraj.zip|meraj.zip]] | |||
Príklad 2: | |||
[[Image:ultrazvuk_pipac.png|300px]] | |||
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje. | |||
Výsledok je, že NXT kocka píska, kým je pred ňou prekážka. | |||
Download: [[Media:signal.zip|signal.zip]] | |||
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne. | |||
[[Image:ciara_simon.png|550px]] | |||
Download: [[Media:ciara_simon.zip|ciara_simon.zip]] | |||
<youtube>NYMO5lbq_l8</youtube> | |||
</div> | |||
<div style="background-color: #F8F8FF;"> | |||
''štvrtok, 23.11.2017'' | |||
Matej dokreslil model robota v LDD. | |||
[[Image:futbalista_model.png|500px]] | |||
Download: [[Media:futbalbot.zip|futbalbot.zip]] | |||
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek: | |||
[[Image:kocky.jpg|600px]] | |||
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne. | |||
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou. | |||
[[Image: kocka_lahka.jpg|300px]] | |||
[[Image: kocka_tazka.jpg|300px]] | |||
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru... tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat. | |||
</div> | |||
<div style="background-color: #F8FFF8;"> | |||
''utorok, 28.11.2017'' | |||
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov: | |||
<syntaxhighlight lang="java"> | |||
private void msgbox(String sprava) { | |||
AlertDialog.Builder builder; | |||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | |||
builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert); | |||
} else { | |||
builder = new AlertDialog.Builder(this); | |||
} | |||
builder.setTitle("Sprava") | |||
.setMessage(sprava) | |||
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { | |||
public void onClick(DialogInterface dialog, int which) { | |||
// continue with delete | |||
} | |||
}) | |||
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { | |||
public void onClick(DialogInterface dialog, int which) { | |||
// do nothing | |||
} | |||
}) | |||
.setIcon(android.R.drawable.ic_dialog_alert) | |||
.show(); | |||
} | |||
</syntaxhighlight> | |||
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť. | |||
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok: | |||
[[Image:stretnutie_robotov.png|600px]] | |||
Download: [[Media:stretnutie_robotov.zip|stretnutie_robotov.zip]] | |||
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor "díva" priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch | |||
ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné. | |||
<youtube>2WDm4mJBvN4</youtube> | |||
</div> | |||
<div style="background-color: #F0FFFF;"> | |||
''Štvrtok, 30.11.2017'' | |||
Samo dnes spravil program pre trezor: | |||
Download: [[Media:Trezor.zip|Trezor.zip]] | |||
ktorý stavia Matej: | |||
[[Image:trezor_verzia1.jpg|400px]] | |||
Marta pokračovala v stavaní váhy, len nám trochu v tom snehu navlhla. :) | |||
Dnes prišiel aj Peter, ktorý naprogramoval niekoľko programov s ultrazvukovým senzorom. | |||
Oliver priniesol zapojenie s vlhkomerom a teplomerom DHT11, tak sme zapojenie opravili a vyskúšali: | |||
[[Image:meranie_dht11.png|400px]] | |||
[[Image:zapojenie_dht11.jpg|400px]] | |||
použili sme túto knižnicu: [https://brainy-bits.com/blogs/tutorials/dht11-tutorial DHT Arduino Library] | |||
<syntaxhighlight lang="c"> | |||
#include <dht.h> | |||
#define dht_apin A0 // Analog Pin sensor is connected to | |||
dht DHT; | |||
void setup(){ | |||
Serial.begin(9600); | |||
delay(500);//Delay to let system boot | |||
Serial.println("DHT11 Humidity & temperature Sensor\n\n"); | |||
delay(1000);//Wait before accessing Sensor | |||
}//end "setup()" | |||
void loop(){ | |||
//Start of Program | |||
DHT.read11(dht_apin); | |||
Serial.print("Current humidity = "); | |||
Serial.print(DHT.humidity); | |||
Serial.print("% "); | |||
Serial.print("temperature = "); | |||
Serial.print(DHT.temperature); | |||
Serial.println("C "); | |||
delay(5000);//Wait 5 seconds before accessing sensor again. | |||
//Fastest should be once every two seconds. | |||
}// end loop() | |||
</syntaxhighlight> | |||
<div> |
Aktuálna revízia z 17:00, 5. december 2017
štvrtok, 2.11.2017
Matej s Oliverom pracovali na veľkej robotickej ruke.
Oliver priniesol svoju arduinovú stavebnicu so zapojeným displejom a teplomerom a spolu sme naprogramovali zobrazovanie teploty na displeji.
Marta vylepšovala svoje autonómne vozidlo.
utorok, 7.11.2017
Marta doladila svoj program, pre robota ktorý vozí pasažierov, aby fungoval spoľahlivo a zastavoval na zastávkach a na zmenie.
Chlapi programovali robota, aby jazdil po ceste. Zatiaľ sa pri fabrike len otočil a išiel do lunaparku. :)
štvrtok, 9.11.2017
Dnes sa Marta naučila pracovať s premennými. Tu sú dva príklady na použitie premenných:
Prvý program používa jeden kufrík pocet. Na začiatku do neho uloží číslo 1. Potom opakuje neustále toto:
- hodnotu, ktorá je uložená v kufríku vyberie a zobrazí ju na displeji
- počká, kým sa nestlačí dotykový senzor
- vyberie hodnotu uloženú v kufríku, zvýši ju o 1 a výsledok zasa schová do kufríka
kurfre: kufre.zip
Tento program sme ďalej upravili tak, aby program pri každom opakovaní cyklu - čiže po každom stlačení senzora - zahral nejaký zvuk, ale vždy iný - podľa hodnoty, ktorá je práve uložená v kufríku. Využijeme na to podmienku, ktorá sa nerozhoduje podľa hodnoty senzora, ako sme ju doteraz väčšinou používali, ale podľa hodnoty, ktorú do nej privedieme dátovým káblikom. Navyše, podmienku prepneme do kartičkového zobrazenia, ktoré nám dovoľuje pridať aj viac ako dve alternatívne cesty - môžeme si popridávať toľko kartičiek, koľko potrebujeme - pre každú hodnotu z kufra jednu:
zvuky: zvuky.zip
Premenné vo svojom robotovi využila tak, že na každej zastávke vydá vozidlo iný zvuk.
jazda so zvukmi: jazda_so_zvukmi.zip
Matej poskladal konštrukciu futbalistického robota:
utorok, 14.11.2017
Maris pracoval na svojom diaľkovo-ovládanom vozidle, ktoré vzniklo zjednodušením pôvodného ťažkopádnejšieho autobusu.
Matej s Oliverom otestovali dribler s oranžovou futbalovou loptou, ktorú sme si požičali z Fablabu a spevňovali konštrukciu robota. Asi ho bude treba upraviť, lebo do 22cm válca vôjde len veľmi tesne, alebo skôr nevôjde.
Marta pridala na svoj autonómny automobil ukrajinskú vlajku, ktorou neustále máva.
Pri tej príležitosti sa naučila pracovať s paralelnými procesmi na NXT:
V tomto príklade sa na displeji zobrazujú dve rôzne ikonky smajlíkov a súčasne s tým, v paralelnom procese v inom rytme NXT vydáva dva rôzne zvuky.
Download: priklad_paralelne_procesy.zip
Výsledný program pre autonómne vozidlo, ktoré máva vlajočkou:
Download: auto_s_vlajkou.zip
Martin upravil robota, ktorý jazdí po ceste tak, aby využíval senzor na kraji a jazdil po pravom okraji cesty. Tým pádom sa mu nestáva, že by na okraj najachal pod ťažko zvládnutelným natočením.
Download: cesta_po_okraji.zip
Po posunutí senzora už auto spoľahlivo jazdilo opakovane dookola a zastavuje na zastávkach.
štvrtok, 16.11.2017
Matej sa s veľkou radosťou pustil do skladania modelov misií FLL pre bratislavský turnaj, Marta s Oliverom mu pomáhali a už je to skoro celé hotovo!
Dnes nás prišiel navštíviť aj Patrik so svojím zaujímavým jánošíkovským účesom :-), prišiel si vziať odloženého drona z tábora a pomáhal Marisovi v programovaní riadenia jeho automobilu cez BT.
Oliver sa pustil do programovania simulovaného futbalu na kocke NXT a výsledok je celkom pekný! Matej mu k tomu zostrojil geniálny joystick, ktorý v pohode jazdí nielen kolmo ale aj do šikmých smerov:
Oliver: Hra by me.
Download: futbal.zip
utorok, 21.11.2017
Dnes nás prišiel navštíviť mimoriadny hosť, ružový panter osobne! :-)
a okrem toho, že nám popájkoval arduinko :-) pomohol Marte dostavať zvyšné modely pre bratislavský turnaj FLL.
Matej usilovne modeloval futbalistického robota v Lego Digital Designeri, tešíme sa na výsledok čoskoro!
Ľubo, Filip, Gregor, Martin a Šimon riešili úlohu zastavovania robota, ktorý jazdí po čiare na prekážkach.
Najlepšie na to išiel Šimon: najskôr na jednoduchých príkladoch vyskúšal, čo jednotlivé bloky, ktoré pracujú s ultrazvukovým senzorom robia:
Príklad 1:
V tomto prípade sme použili žltý - merací blok, ktorý len prečíta hodnotu zo senzora a cez konverzný blok túto hodnotu neustále zobrazuje na displeji. Takýto blok nič nerobí - iba meria.
Download: meraj.zip
Príklad 2:
Tu je ultrazvukový senzor použitý ako súčasť podmienky - ktorá program rozvetvuje na dva prípady. Ak sa nejaká prekážka nachádza vo vzdialanosti do 30cm pred senzorom, program pokračuje hornou vetvou, inak beží dolnou vetvou. Celé sa to neustále opakuje. Výsledok je, že NXT kocka píska, kým je pred ňou prekážka.
Download: signal.zip
Tento druhý spôsob využitia senzora budeme potrebovať v programe, ktorý sleduje čiaru a ak sa pred ním vyskytne prekážka, tak zastane a bude trúbiť, kým prekážka nezmizne.
Download: ciara_simon.zip
štvrtok, 23.11.2017
Matej dokreslil model robota v LDD.
Download: futbalbot.zip
Marta rozobrala svojho robota a začína stavať nového robota. Jeho úlohou má byť rozvážať po meste tovar rôznych druhov. Pri obchode na robota naložíme tovar - jednu zo štyroch rôznych kociek:
Kocky sú dvoch druhov: svetlé a tmavé, ale niektoré z nich sú ľahké a niektoré sú ťažké. Treba vymyslieť, ako kocku robot odváži a potom dovezie na správne miesto na pláne.
Zatiaľ Marta zistila, že vážiť by sa dali pomocou dotykového senzora. Ak je kocka ľahká, nemá dosť tiaže na to, aby senzor stlačila, ak je ťažká, tak áno. Ešte k tomu treba vymyslieť vážiacu priehradku s vyklápačkou.
S Oliverom sme sa venovali programovaniu Androida. Namiesto 2500-riadkového príkladu na fotenie a ukladanie obrázkov do súboru sme začali s prázdnou aplikáciou, ktorá vie vyvolať fotenie obrázka a zobrazovať informácie. Naučili sme sa ako do prázdneho layoutu aplikácie pridat dalsie widgety, ako ich pouzit z programu a ako sa vyvolava fotenie z aplikacie. Zatial sa nam to ale nepaci, lebo to foti stale dookola a vyzaduje si kliknutie na dotykovy displej. Musime to skusit asi nejak inak - tahat obrazky priamo z hardveru... tie layouty sa s nami tiez este velmi nekamaratia, takze budeme pokracovat.
utorok, 28.11.2017
Aj dnes pokračoval v sérií neočakávaných návštev, prišiel za nami Krotiteľ hadov aj s principálom. Dúfame, že nám pomôže v programovaní, lebo RoboCup sa začína prudko blížiť. S Androidom sme bojovali ďalej, naučili sme sa zobraziť messagebox s tlačidlami, čo nám dobre poslúži pri ladení programov:
private void msgbox(String sprava) {
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(this);
}
builder.setTitle("Sprava")
.setMessage(sprava)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// continue with delete
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
Zistili sme, že kamerová aplikácia po odfotení a potvrdení obrázka zatvorí celú aplikáciu, zatiaľ nevieme prečo. Hcoi aj tak potrebujeme snímať obraz z kamery priamo, mohli by sme na to aj tak prísť.
Filip, Šimon a Martin dostali úlohu upraviť roboty tak, aby sa na ihrisku vyhli, keď idú oproti sebe. Tu je výsledok:
Download: stretnutie_robotov.zip
Na videu vidieť rozličné verzie, ktoré nie všetky ešte fungovali správne. Na začiatku je výsledná verzia, ktorá funguje pomerne spoľahlivo, nasleduje verzia, kde sa ultrazvukový senzor "díva" priďaleko, potom v ďalšej naopak iba príliš blízko, v ďalších dvoch ukážkach sa roboty zoradili namiesto toho, aby sa obišli, a posledné dve ukážky sú už v poriadku, aj keď vyhýbanie je trochu pritesné.
Štvrtok, 30.11.2017
Samo dnes spravil program pre trezor:
Download: Trezor.zip
ktorý stavia Matej:
Marta pokračovala v stavaní váhy, len nám trochu v tom snehu navlhla. :)
Dnes prišiel aj Peter, ktorý naprogramoval niekoľko programov s ultrazvukovým senzorom.
Oliver priniesol zapojenie s vlhkomerom a teplomerom DHT11, tak sme zapojenie opravili a vyskúšali:
použili sme túto knižnicu: DHT Arduino Library
#include <dht.h>
#define dht_apin A0 // Analog Pin sensor is connected to
dht DHT;
void setup(){
Serial.begin(9600);
delay(500);//Delay to let system boot
Serial.println("DHT11 Humidity & temperature Sensor\n\n");
delay(1000);//Wait before accessing Sensor
}//end "setup()"
void loop(){
//Start of Program
DHT.read11(dht_apin);
Serial.print("Current humidity = ");
Serial.print(DHT.humidity);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(5000);//Wait 5 seconds before accessing sensor again.
//Fastest should be once every two seconds.
}// end loop()