Sphero robottua voi ohjata sormel telefonan libo tabletan ekruanal, a ohjelman kirjuttamine nämil vehkehil on vaigiedu. Oigei tiedokoneh da ohjelmoindukieli pätäh sih parembi. Ohjelmoindukielekse valličemmo Python -nimizen yleisohjelmoindukielen. Pythonan voi azendua kaikkih tavallizih operuattorusistiemoih, ezim. Windowsah da Linuxah. Täs valličemmo Linux-operuattorusistieman da Pi-Top Laptop -merkkizen tiedokonehen. Opastummo ohjelmoimah kirjuttamal ohjelmii Sphero-miäčyn ohjuandah.
Ruadostolan yläreunas on panelu kudamas on ikonazii, huralpäi tärgevimät: menu, livain, tiijostomanageru da terminualu. Ohjelmoindas käytämmö terminualua. Panelan oigies piäs meile tärgei on B-kirjaimen nägöine Bluetoothan ikonaine.
Tiedokoneh sammutetah painaldamal hiiren hural nybläl menu-ikonastu (vagoin kuva) da valliččemal alarivil virdunyblän ikonaine da ielleh Shutdown. Stoklan tagan rubieu valgo pilkettämäh sissah, kuni sinne jiäy vaiku yksi himmei čöke. Painamal kodvaine virdunybliä segi sammuu. Sen jälgeh virdunybly jiäy pilkettämäh harvakseh. Tiedokoneh on sammutettu.
Pi-Top Pixel operuattorusistieman ruadostola
/home/piOhjelmih niškoi pi voi perustua luvettelon ohjelmat komendol
mkdir ohjelmatSinne voi siirdyö kirjuttamal
cd ohjelmatda tulla siepäi järilleh komendol
cd ..
syömine: ota luzikku kädeh toista kuni tarielku tyhjenöy pane luzikku suuppah tunge luzikku suuh irroita luzikku käispäi pyhki suuKu ohjelmu on tekstutiijosto, sen voi kirjuttua miltahto tekstuedittoral. On sih tarkoitukseh luajittuloigi edittoroi a meile pädöy yksinkerdaine tekstuedittoru jed. Kirjutammo terminualas
jed ohjelmu.pySe avuau edittoran ikkunan kudamah voimmo ruveta kirjuttamah ohjelmua. Tärgevimät jed edittoran toimindot ollah:
> < ^ v | liiku tekstas |
Del <x| | pyhki oigiel libo hural |
^K | pyhki rivi |
^Y | kirjuta pyhkityt rivit |
^X^S | tallenda tiijosto |
^X^C | lähte edittoraspäi |
Python-ohjelmu suoritetah kirjuttamal
python ohjelmu.py
Sphero-miäčyn ohjuandah käytämmö Kulka-nimisty kirjastuo. Se todevuttau
kudakui kai Spheron toimindot, meile täydyy puolikymmendy helposti
ellendettäviä käskyy:
from kulka import Kulka
Käytämmö kulka kirjaston funktsiedu Kulka
with Kulka(ADDR) as kulka:
Täs ohjelmas kulka tarkoittau Bluetooth adresis ADDR löydyjiä Sphero miäččyy
kulka.roll(V,S)
Miäččy ajau vauhtil V (0..255) suundah S (0..359). Maksimuvauhti 255 on
nenga 2 m/s da suundulugu on astehii.
time.sleep(T)
miäriäy aijan, min ielolijua toimindua (ezim. roll) jatketah. Tämä on
vähä pahoi vallittu käskyn nimi ku eihäi miäččy rubie maguamah, sih niškoi
on toine käsky
kulka.sleep()
Miäčyn värittämizeh on käsky
kulka.set_rgb(R,G,B),
mis R (ruskei), G (vihandu) da B (sinine) ozutetah nämien värilöin
kirkahuttu (0..255). kulka.set_rgb(255,255,255) panou miäčyn valgiekse.
Erähis ezimerkilöis on käsky
kulka.set_inactivity_timeout(T)
mi käsköy Spheron maguamah T sekundan peräs, hos ohjelmoiju on muite
unohtannuh sammuttua Spheron kulka.sleep() komendol libo lad'd'uandupezäh
azettamal.
Ezimerki 1. test.py on kolmerivine ohjelmu, kudai ozuttau, toimiugo
Bluetooth ozuttehen 68:86:E7:08:E6:24 omuaju Sphero-miäččy.
from kulka import Kulka
with Kulka('68:86:E7:08:E6:24') as kulka:
kulka.roll(20,180)
Ku kai ollou kunnos, miäččy lekahtau vähäzen.
Ezimerkki 2. nellikko.py piirdäy nellikön, kudaman sivu on nenga
puoli metrii. (Nengahäi: (64/256)*(2 m/s)*1 s = 0.5 m). Joga sivun
jälgeh on käsky kulka.roll(0,.) kudai azettau miäčyn sendäh ku se
kergies kiändymäh.
from kulka import Kulka
import time
with Kulka('68:86:E7:08:E6:24') as kulka:
kulka.roll(64,0); time.sleep(1); kulka.roll(0,0); time.sleep(1)
kulka.roll(64,90); time.sleep(1); kulka.roll(0,90); time.sleep(1)
kulka.roll(64,180); time.sleep(1); kulka.roll(0,180); time.sleep(1)
kulka.roll(64,270); time.sleep(1); kulka.roll(0,270); time.sleep(1)
kulka.sleep()
Tavallizesti ohjelman jogahine käsky kirjutetah omale rivile.
Kirjutimmo nelli käskyy samale rivile bumuagan siästämizeksi da
sendäh ku nenga yksi rivi piirdäy yhten nellikön sivun. Samal rivil
käskyt pidäy eroittua puoličökkehel.
Ezimerkki 3. pyorikko.py piirdäy pyörikön. Pyörikkyö voi pidiä
iärettömän monikulmazennu monikulmikonnu. Ohjelmu piirdäy 36-kulmikon,
kudamas 10 astien kulmii on vaigei eroittua sendäh ku vauhtis ei voi
luadie jyrkiä mutkua. Miäččy ajau matkan 36*(32/256)*2*0.1 = 1.8 m,
sendän miäčyn diametru on nenga 1.8/pii=0.6m.
from kulka import Kulka
import time
with Kulka('68:86:E7:08:E6:24') as kulka:
for i in range(36):
kulka.roll(32,10*i)
time.sleep(0.1)
kulka.roll(0,0)
kulka.sleep()
Ezimerkki 4. humalniekku.py on ezimerki piävyndähizis lugulois.
Ajelendan loppemine on piävyndähine, vauhti on piävyndähine, suundu on
piävyndähine da yhteh suundah ajandan aigu on piävyndähine. Ajandu
loppuu sih, konzu enzimäzes arvondas enzimäzen kerran tulos on 100.
Sit suoritus irduo while-petlas da lopeh kulka.sleep() käskyh.
from kulka import Kulka
from random import randint
import time
with Kulka('68:86:E7:08:E6:24') as kulka:
while randint(1,100)<100:
kulka.set_rgb(randint(0,255),randint(0,255),randint(0,255))
kulka.roll(randint(32, 128), randint(0, 359))
time.sleep(1.0/randint(1,5))
kulka.roll(0,0)
kulka.sleep()
Ezimerki 5. varit.py ozuttau jogahistu värii valgei,
keldaine, fuksia, syani, ruskei, vihandu, sinine da mustu 5 sekundua da
toistau tämän kolme kerdua for-petlal
from kulka import Kulka
import time
with Kulka('68:86:E7:08:E6:24') as kulka:
varit = [
["valgei",255,255,255],
["keldaine",255,255,0],
["fuksia",255,0,255],
["syani",0,255,255],
["ruskei",255,0,0],
["vihandu",0,255,0],
["sinine",0,0,255],
["mustu",0,0,0]]
for i in range(3):
for vari in varit:
print(vari[0])
kulka.set_rgb(vari[1],vari[2],vari[3])
time.sleep(5)
kulka.sleep()
Ezimerki 6. viglu.py vigluttau piävyndähisty värii
ainos vai tihiembäh.
Ozutusaigu joga kierroksel lyhenöy faktoral 1/1.1, sendäh while
petla lopeh 73. kierroksel (1/1.1)^73 < 0.001.
from kulka import Kulka
from random import randint
import time
with Kulka('68:86:E7:08:E6:24') as kulka:
viglu = 1
while viglu>0.001:
kulka.set_rgb(randint(0,255),randint(0, 255),randint(0, 255))
time.sleep(viglu)
kulka.set_rgb(0, 0, 0)
time.sleep(viglu)
viglu = viglu/1.1
time.sleep(3)
kulka.sleep()
Ezimerki 7. arbaitus.py todevuttau arbuandukižan,
kudamas koneh valliččou piävyndähizen luvun 1..100 da kižuajan pidäy arbata
se. Ohjelman enzimäine rivi tarvitah sendäh ku ä da č on kirjutettu
utf-koodal. Ohjelmu on juattu aliohjelmikse vihjua da kiza.
Piäohjelmu kuččuu aliohjelmua kiza, kudamas on todevutettu kižan ideju. Se
kuččuu aliohjelmua vihjua ozuttamah, kui lähäl oigiedu luguu
arbavus on. Ku arbavus ollou liijan suuri, miäččy blinkettäy ruskiedu,
liijan pieni blinkettäy sinisty. Midä tihiembi blinketys, sidä lähembi
oigiedu arbavus on.
# -*- coding: utf-8 -*-
import time
from kulka import Kulka
from random import randint
def vihjua(kulka, eroitus):
if eroitus < 0: R,G,B=255,0,0
elif eroitus > 0: R,G,B=0,0,255
num,lg = 500/abs(eroitus),abs(eroitus)/100.0
for i in range(num):
kulka.set_rgb(R,G,B); time.sleep(lg)
kulka.set_rgb(0,0,0); time.sleep(lg)
def kiza(kulka):
print("Arbuas minun lugu 1..100! Kuda lähembi sidä tihiembi blinketys!")
peittolugu = randint(1, 100)
arbavus,opiteksii = '',0
while True:
arbavus = input("Anna lugu: ")
opiteksii += 1
if peittolugu<>arbavus: vihjua(kulka, peittolugu-int(arbavus))
else:
print("Moločču! Arbait %s kierroksel!" % opiteksii)
next = input("Tahtonet loppie, anna 0 (0/1): ")
if next==0: break # lähte iäre while-petlaspäi
with Kulka('68:86:E7:08:E6:24') as kulka: kiza(kulka)