Nädala tunnitöö 16.11.20

UFO droon

OPEN ROBERTA LAB

Mine Open Roberta Lab lehel:

lab.open-roberta.org/

Ülevalt ribalt useri alt vali: Log in with user group… (Robootikaring)

Vali robotiks ja versiooniks: EV3 – EV3 leJOS 0.9.1

Vasakult poolt saab valida plokke ja need programmiks ühendada. Paremal pool saab näha, kuidas robot liigub. Valides SIM saki saab avanenud aknast valida erinevaid stseene erinevate taustade ja objektidega. Taustapilte saab ka ise lisada.

Robotit ja objekte saab ekraanil ise sobivasse kohta liigutada.

Simulatsiooniakna all oleva kolmnurga peale vajutades saab programmi käivitada.

Ülesanne 1 – värvide tuvastamine

Liiguta robotit järgemööda erinevate värvideni ja siis tagurda algusesse tagasi. Hiljem võid programmi niimoodi muuta, et robot keereb peale värvi tuvastamist ennast ümber kuni musta jooneni. Siis pöörab jälle ümber ja liigub järgmise värvini.

Siin on näide, kuidas robot sõidab sinise värvini. Täienda programmi nii, et robot liiguks kõigi värvideni.

Ülesanne 2 – plokini sõitmine

Liiguta plokk simulatsiooniaknas kõigepealt nii kõrgele, et robot jõuaks otse sõites selleni.

Pane robot niimoodi liikuma, et see sõidaks sinise plokini ja tagurdaks algusesse tagasi. Pärast võid juurde lisada, et peale ploki tuvastamist pöörab robot ringi ja sõidab õigetpidi musta jooneni välja.

PYGAME

Pythonis ekraanide tegemine ja seal mängu loomine.

Pygame dokumendid:

www.pygame.org/docs/

Akna sulgemine ristist

import pygame
pygame.init()
ekraani_pind = pygame.display.set_mode( (640, 480) )
pygame.display.set_caption("Minu esimene aken")
ekraani_pind.fill( (0,255,0) )
while True:
    pygame.display.flip()
    
    pygame.draw.circle(ekraani_pind, [0, 0, 255], [150,200], 100, 2)
    
    event = pygame.event.poll()
    if event.type == pygame.QUIT:
        break
pygame.quit()

Akna sulgemine ristist

import pygame, sys
pygame.init()
screen=pygame.display.set_mode([600,400])
pygame.display.set_caption("Mang")
screen.fill([255,255,255])
gameover = False
while not gameover:
    pygame.display.flip()

    pygame.draw.circle(screen, [0, 0, 255], [150,200], 100, 2)
    
    font = pygame.font.Font(pygame.font.match_font('arial'), 50)
    text = font.render("Hello World", True, [0,0,0])
    screen.blit(text, [200,200])

    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            sys.exit()
            
pygame.quit()

Kujundid

Joon
pygame.draw.line(aken, värv, algus_pos, lõpp_pos, paksus)
pygame.draw.line(screen, [255,0,0], [100,100], [200,200], 2)


Ristkülik
pygame.draw.rect(aken, värv, [x, y, w, h], joone_paksus)
pygame.draw.rect(screen, [0, 225, 0], [50, 80, 200, 300], 2)
Kui joone paksus tühi või 0, siis täidetakse ristkülik värviga

Ring
pygame.draw.circle(screen, värv, tsentri_pos, raadius, joone_paksus)
pygame.draw.circle(screen, [0, 0, 255], [150,200], 100, 1)

Ovaal
pygame.draw.ellipse(screen, värv, [x, y, r1, r2], joone_paksus)
pygame.draw.ellipse(screen, [0, 225, 0], [50, 80, 200, 300], 2)

Hulknurk
pygame.draw.polygon(screen, värv, koordinaatide_loend, joone_paksus)
pygame.draw.polygon(screen, [255, 0, 255], [[50,50],[100,50],[100,150],[250,50],[350,250],[50,250]], 2)

Tekst

font = pygame.font.Font(pygame.font.match_font(‘arial’), 50)

# font = pygame.font.Font(None, 30)

font.set_underline(True)

font.set_bold(True)

font.set_italic(True)

text = font.render(“Hello World”, True, [0,0,0])

screen.blit(text, [200,200])

Nädala tunnitöö 08.10.19

Helios puutetundlik valgustus

Ruubiku kuubiku lahendaja robot

DASH JA DOT

Blockly

Puzzlede lahendamine

 

SCRATCH

Sünnipäevakaart

Scratch happy birthday

 

PYTHON KILPKONNAGRAAFIKA

Pythoni kirjutamiseks avada arvutis programm Thonny. Enne programmi käivitamist programm salvestada ja siis vajutada Run või F5.

Sinise ruudu tegemine:
from turtle import *
color(“blue”)
begin_fill()
forward(250)
right(90)
forward(250)
right(90)
forward(250)
right(90)
forward(250)
right(90)
end_fill()

Kilpkonnagraafika koodid:
forward(n), fd(n) – liigu edasi n sammu võrra
back(n), bk(n) – liigu tagasi n sammu võrra
left(d), lt(d) – pööra vasakule d kraadi
right(d), rt(d) – pööra paremale d kraadi
circle(r) – ringi joonistamine r raadiusega
dot(d) – täpi joonistamine d diameetriga
pensize(d), width(d) – joone laius d
goto(x,y) – liigu punkti koordinaatidega x ja y
pendown(), down() – lase pliiats alla
penup(), up() – tõsta pliiats üles
speed(n) – kilpkonna kiirus n kiirusega (0..10)
color(“red”), color(“#008000”) – muuda värvi
begin_fill() – värvimise alustamine
end_fill() – värvimise lõpetamine

Värvikoodid:

htmlcolorcodes.com 

Nädala tunnitöö 11.02.19

Puuvilja koorija ja viilutaja masin

Jengat mängiv robot

Sophia beebi õde – Little Sophia

Hanson Robotics on loonud Humanoidrobot Sophiale beebiõe Little Sophia. Tema kõrgus on 35cm. Seda kasutatakse programmeerimise õppimiseks.

 

KLAVIATUURI LÜHITEED

 

CODE HS

Karel the dog

Python

 

PYTHON

Erineva suurusega ringid

from turtle import *
color("green")
circle(35)
forward(20)
circle(45)
forward(20)
circle(55)
forward(20)
circle(65)
forward(20)
circle(75)
forward(20)

 

Nädala tunnitöö 04.02.2019

Robotkalad

BLUETOOTH

Bluetooth on loodud seadmete omavahelise traadita side jaoks ja andmete vahetamiseks. Selle lõid rootslane Sven Mattisson ja Hollandi professor Jaap Haartsen.

Juba 1980. aastatel on proovitud vähendada juhtmeid arvutite ümber, aga alles 1999. aastal avaldati esimene Bluetoothi versioon.

Nimi „Bluetooth“ valiti 10. sajandil elanud Taani viikingite kuninga Harald Blåtandi (‘Sinihammas’) järgi, kes oli tuntud kui väga hea rääkija. Alguses oli see lihtsalt koodnimi, aga hiljem see nii ka jäeti.

 

SCRATCH

Krabikook

 

PYTHON

Ring juhusliku värviga

from turtle import *
from random import randint
 
sel_col = randint(1, 3)
if sel_col == 1:
    color("blue")                  # Sinine
if sel_col == 2:
    color("black")                 # Must
if sel_col == 3:
    color("white")                 # Valge
begin_fill()                       
circle(100)                        
end_fill()                         
 
exitonclick()

Nädala tunnitöö 28.01.2019

EINSTEINI MÕISTATUS

Tänaval on üksteise kõrval viis maja. Igas majas elab erinevast rahvusest inimene. Iga maja on värvitud erinevat värvi. Iga majaomanik joob erinevat jooki, sõidab erinevat marki autoga ning omab erinevat lemmiklooma.

Järgnevate vihjete põhjal püüa välja selgitada, kellele neist kuulub kuldkala.
1. Inglane elab punases majas.
2. Rootslase lemmikloom on koer.
3. Taanlane joob teed.
4. Roheline maja on valge maja kõrval vasakul.
5. Rohelise maja omanik joob kohvi.
6. Toyotaga sõitev majaomanik peab linde.
7. Kollase maja omanik sõidab Volvoga.
8. Keskmises majas elav inimene joob piima.
9. Esimeses majas elab norrakas.
10. BMW’ga sõitev majaomanik elab selle kõrval, kes peab kassi.
11. Hobust pidav inimene elab selle kõrval, kes sõidab Volvoga.
12. Mercedesega sõitev majaomanik joob limonaadi.
13. Sakslane sõidab Subaruga.
14. Norrakas elab sinise maja kõrval.
15. BMW’ga sõitev majaomanik elab selle kõrval, kes joob vett.

Fail mõistatuse lahendamiseks

PYTHON

Täht

from turtle import *

# Defineerime funktsiooni täht, mis joonistab 
# valitud värvi ja pikkusega tähe
def täht(pikkus, värv): 
    color(värv)
    begin_fill()
    i = 0
    while (i < 5):
        fd(pikkus)
        rt(144)
        i = i + 1
    end_fill()

# Kilpkonn joonistab kollase tähe pikkusega 100 pikslit
täht(200, "yellow") 

exitonclick()

Nädala tunnitöö 21.01.2019

Võlu malelaud

Ameerika mäed

Esimese Ameerika mägede atraktsiooni ehitas ameerika leidur ja ärimees LeMarcus Adna Thompson 1884. aastal. Idee sai ta Pennsylvanias asunud Summit Hilli söekaevanduse raudteelt, kus tehti 1820. aastatel soovijatele lõbusõite. 1885. aastal New Yorgis Coney Islandi poolsaarel avatud Switchback Railway koosnes istmetest, mis liikusid 180 meetrit mööda rööpaid mäest alla. Vagunite kiirus oli umbes 10 km/h.

 

SCRATCH

Liikuv ekraanipilt punktide lugemisega

Tee nurkadesse neli uut ruudukujulist spraidi, mille puutumisel arvestatakse nurkade punkte.

Seina punktide arvestamiseks tee uus ruudukujule sprait, mis asub ekraani servades ja seest on läbipaistev.

 

SPHERO

Rakett

Programmeeri Spherole programm, mis jäljendab raketi lendu laskmist. Kõigepealt loetakse numbreid stardini, seejärel muutub Sphero värv, tekib müra ja Sphero hakkab keerutama.

Päikesesüsteem

Pane Sphero liikuma ringi nii nagu planeedid kosmoses.

PYTHON

Naerunägu

 

from turtle import *

def silm(): # Defineerime funktsiooni silmade joonistamiseks
pencolor(“#000000”)
fillcolor(“#FFFFFF”)
begin_fill()
circle(25)
end_fill()

fillcolor(“#000000”)
begin_fill()
circle(10)
end_fill()

pencolor(“#000000”) # Pea
fillcolor(“#FFFF00”)
begin_fill()
circle(100)
end_fill()

up()
bk(45)
lt(90)
fd(100)
rt(90)
down()

silm() # Vasak silm

up()
fd(90)
down()

silm() # Parem silm

up() # Suu
bk(95)
rt(90)
fd(30)
down()
circle(50,180) # Pool ringjoonest
bgcolor(“#AFEEEE”)

exitonclick()

 

MINECRAFT

Liikuvad põõsad

Shadersid, mis muudavad nii valgust kui ka liigutavad taimi. Nõrgematel arvutitel tuleks laadida lite, aga extreme’de jaoks on vaja võimsamaid arvuteid.  Motion-blur teeb ka mängu palju aeglasemaks:
www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/1291396-1-6-4-1-13-2-sildurs-shaders-pc-mac-intel-vibrant

Shadersid, mis lihtsalt liigutavad taimi:
www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/1288392-1-10-2-waving-plants-shaders-mod-by-regi24

Juhend shaders’ite installimiseks:
www.youtube.com/watch?v=-nKuyAqd1cQ

Vaja läheb Optifine programmi:
optifine.net/downloads

Nädala tunnitöö 14.01.18

Toyota humanoid robot

Minecraft Eri! võistlus

 

SCRATCH

Pliiatsiga joonistamine

Kui spraidiks valida pliiats, siis kostüümide alt võiks selle süsikoha liigutada ekraani keskele. Sinna, kus joonistamise aknas on väike ruuduke. Siis hakkab joon ka õige koha pealt tulema.

Pliiatsi plokid leiab ekraani vasakult alt nurgast sinise ruudu alt.

Pliiatsi juhtimine hiirega

Pliiatsi juhtimine klahvidega

 

CODEBUG

Näod

Propeller

 

PYTHON

Kalkulaator

print(“best calculator 2019”)
print(“kõigepealt liida”)
arv1 = int(input(“sisesta arv1”))
arv2 = int(input(“sisesta arv2 “))
kokku = arv1 + arv2
print(“kokku ” + str(kokku))
print(“nüüd lahuta”)
arv3 = int(input(“sisesta arv3 “))
arv4 = int(input(“sisesta arv4 “))
lahutamisega_on_kokku = arv3 – arv4
print(“lahutamisega_on_kokku ” + str(lahutamisega_on_kokku))
print(“nüüd korruta “)
arv5 = int(input(“sisesta arv5 “))
arv6 = int(input(“sisesta arv6 “))
korrutamisega_on_kokku = arv5 * arv6
print(“korrutamisega_on_kokku ” + str(korrutamisega_on_kokku))
print(“nüüd jaga “)
arv7 = int(input(“sisesta arv7 “))
arv8 = int(input(“sisesta arv8 “))
jagamisega_on_kokku = arv7 / arv8
print (“jagamisega_on_kokku ” + str(jagamisega_on_kokku))

Nädala tunnitöö 05.11.18

ESIMENE ARVUTI VIGA

Arvuti vigu kutsutakse inglise keeles “bug’ideks” ehk putukateks.

Esimene “bug’i” avastati 9.septembril 1947. aastal.
USA mereväe ohvitser Grace Hopper tegi logi raamatusse sissekande, kus märkis, et Harvard Mark II arvuti relee kontaktide vahelt leiti koiliblikas ehk “bug’i”.

Sellest hetkest alates muutus see sõna populaarseks ja kasutatakse ka tänapäeval.

 

PISIKENE TABLETI VEDAJA

Tiny Soft Robotic Device

This tiny millipede-like bot delivers drugs inside the body via http://bit.ly/2EMJ6CC

Posted by Interesting Engineering on Kolmapäev, 31. oktoober 2018

 

TOP 5 LEGO LEIUTIST

 

CODESPARK

codespark.com/webgl/

 

PIXILART

www.pixilart.com/draw

Joonistusprogramm, kus saab hästi pikslitega joonistada.

 

SPHERO

Valgus ja helid

 

OZOBOT

Mängud Ozoboti rakenduses

OzoLuck

Ozoboti saab panna sõitma erinevatel radadel, millel on võimalik valida vastuseid jah/ei küsimusele, veeretada täringut, vaadata kelle juurde robot sõidab jne.

OzoPath

Siin tuleb joonistada rada etteantud klotside järgi nii et Ozobot jõuaks stardist finišisse.

 

SCRATCH

Põrkamine

Teha tuleb 3 erinevat spraiti, kass ja kahte värvi õhupalle. Iga õhupall on ka veel eraldi sprait, aga sama koodiga.

Lillat värvi palliga saab 10 punkti juurde.

Sinise palliga kaotab 10 punkti.

 

PYTHON

Pythony kirjutamiseks kasuta programmi Thonny.

Kilpkonnagraafikas ringi joonistamine

from turtle import*
col = “green”
color(col) # Kilpkonn muutub punaseks
begin_fill()
circle(50) # Kilpkonn teeb ringi suurusega 50
end_fill()
exitonclick()

Kilpkonnagraafikas maja joonistamine

from turtle import * # lisatakse kilpkonna käsud
color(“red”) # Kilpkonn muutub punaseks
begin_fill()
forward(140) # Kilpkonn liigub edasi 100 pikslit
left(90) # Kilpkonn pöörab 90° vasakule
forward(100)
left(45)
forward(100)
left(90)
forward(100)
left(45)
forward(100)
end_fill()
exitonclick()

Kilpkonnagraafikas maja ja ring koos

from turtle import * # lisatakse kilpkonna käsud
color(“red”) # Kilpkonn muutub punaseks
begin_fill()
forward(140) # Kilpkonn liigub edasi 100 pikslit
left(90) # Kilpkonn pöörab 90° vasakule
forward(100)
left(45)
forward(100)
left(90)
forward(100)
left(45)
forward(100)
end_fill()

col = “green”
color(col) # Kilpkonn muutub roheliseks
begin_fill()
circle(50) # Kilpkonn teeb ringi suurusega 50
end_fill()
exitonclick()

 

Kell

from tkinter import *
from math import *
import time
raam = Tk()
raam.title(“Kell”)
# tahvli laius
w = 500
# tahvli pikkus
h = 500

tahvel = Canvas(raam, width=w, height=h, bg=”white”)

# kella raam
tahvel.create_oval(10,10,w-10,h-10)
# kella keskpunkt
tahvel.create_oval(w/2-5,h/2-5,w/2+5,h/2+5,fill=”black”)
sek_id = tahvel.create_line(w/2,h/2,w/2,20,fill=”red”)

def uuenda():
# loeme jooksva sekundi
sekundid = time.localtime().tm_sec

# osuti liikuva tipu koordinaadid
# arvutame sekundiosuti pikkuse
r = min(w/2,h/2)-20

# arvutame x koordinaadi
x = r*cos(pi/2-sekundid/60.0*2*pi)

# arvutame y koordinaadi
y = -r*sin(pi/2-sekundid/60.0*2*pi)

# uuendame osuti positsiooni
tahvel.coords(sek_id, 0, 0, x, y)

# nihutame keskele
tahvel.move(sek_id, w/2, h/2)

#ootame 1 sekundi ja siis uuendame kellaaega uuesti
raam.after(1000, uuenda)

uuenda()
tahvel.pack()
raam.mainloop()

TÜG vanemate ringitund 26.09.18

ISETEHTUD JOOGIMASIN

 

ROBOTEX 30.11 – 02.12.2018

Robotex International on iga-aastane sündmus ja suurim robootikafestival.
1750 roboti, 35000 osalejat, 4000 võistlejat, 25 võistlust.

Info erinevatest võistlustest on näha siin. Ehk siis valime võistluse välja ja võtame osa 🙂

Robotexi võistlused

 

MOSS

Auto

 

ARDUINO

Videomäng

Juhend

Skeem

Kood

http://www.mediafire.com/file/e9d9yynsc89t5bl/game_code.ino

RGB lediga hiirematt

 

PYTHON

Mullimäng

Pythoni mullimäng failina

from tkinter import *
HEIGHT = 500
WIDTH = 800
window = Tk()
window.title(‘Mullilõhkuja’)
c = Canvas(window, width=WIDTH, height=HEIGHT, bg=’darkblue’)
c.pack()
ship_id = c.create_polygon(5, 5, 5, 25, 30, 15, fill=’red’)
ship_id2 = c.create_oval(0, 0, 30, 30, outline=’red’)
SHIP_R = 15
MID_X = WIDTH / 2
MID_Y = HEIGHT / 2
c.move(ship_id, MID_X, MID_Y)
c.move(ship_id2, MID_X, MID_Y)
SHIP_SPD = 10
def move_ship(event):
    if event.keysym == ‘Up’:
        c.move(ship_id, 0, -SHIP_SPD)
        c.move(ship_id2, 0, -SHIP_SPD)
    elif event.keysym == ‘Down’:
        c.move(ship_id, 0, SHIP_SPD)
        c.move(ship_id2, 0, SHIP_SPD)
    elif event.keysym == ‘Left’:
        c.move(ship_id, -SHIP_SPD, 0)
        c.move(ship_id2, -SHIP_SPD, 0)
    elif event.keysym == ‘Right’:
        c.move(ship_id, SHIP_SPD, 0)
        c.move(ship_id2, SHIP_SPD, 0)
c.bind_all(‘<Key>’, move_ship)
from random import randint
bub_id = list()
bub_r = list()
bub_speed = list()
MIN_BUB_R = 10
MAX_BUB_R = 30
MAX_BUB_SPD = 10
GAP = 100
def create_bubble():
    x = WIDTH + GAP
    y = randint(0, HEIGHT)
    r = randint(MIN_BUB_R, MAX_BUB_R)
    id1 = c.create_oval(x – r, y – r, x + r, y + r, outline=’white’)
    bub_id.append(id1)
    bub_r.append(r)
    bub_speed.append(randint(1, MAX_BUB_SPD))
def move_bubbles():
    for i in range(len(bub_id)):
        c.move(bub_id[i], -bub_speed[i], 0)
def get_coords(id_num):
    pos = c.coords(id_num)
    x = (pos[0] + pos[2])/2
    y = (pos[1] + pos[3])/2
    return x, y
def del_bubble(i):
    del bub_r[i]
    del bub_speed[i]
    c.delete(bub_id[i])
    del bub_id[i]
def clean_up_bubs():
    for i in range(len(bub_id)-1, -1, -1):
        x, y = get_coords(bub_id[i])
        if x < -GAP:
            del_bubble(i)
from math import sqrt
def distance(id1, id2):
    x1, y1 = get_coords(id1)
    x2, y2 = get_coords(id2)
    return sqrt((x2 – x1)**2 + (y2 – y1)**2)
def collision():
    points = 0
    for bub in range(len(bub_id)-1, -1, -1):
        if distance(ship_id2, bub_id[bub]) < (SHIP_R + bub_r[bub]):
            points += (bub_r[bub] + bub_speed[bub])
            del_bubble(bub)
    return points
from time import sleep, time
BUB_CHANCE = 10
TIME_LIMIT = 30
BONUS_SCORE = 1000
score = 0
bonus = 0
end = time() + TIME_LIMIT
while True:
    if randint(1, BUB_CHANCE) == 1:
        create_bubble()
    move_bubbles()
    clean_up_bubs()
    score += collision()
    print(score)
    window.update()
    sleep(0.01)
while time() < end:
    if randint(1, BUB_CHANCE) == 1:
        create_bubble()
    move_bubbles()
    clean_up_bubs()
    score += collision()
    if (int(score / BONUS_SCORE)) > bonus:
        bonus += 1
        end += TIME_LIMIT
    show_score(score)
    show_time(int(end – time()))
    window.update()
    sleep(0.01)
c.create_text(50, 30, text=’AEGA JÄÄNUD’, fill=’white’)
c.create_text(150, 30, text=’PUNKTE’, fill=’white’)
time_text = c.create_text(50, 50, fill=’white’)
score_text = c.create_text(150, 50, fill=’white’)
def show_score(score):
    c.itemconfig(score_text, text=str(score))
def show_time(time_left):
    c.itemconfig(time_text, text=str(time_left))
c.create_text(MID_X, MID_Y, \
              text=’MÄNG LÄBI’, fill=’white’, font=(‘Helvetica’,30))
c.create_text(MID_X, MID_Y + 30, \
              text=’Punktisumma: ‘+ str(score), fill=’white’)
c.create_text(MID_X, MID_Y + 45, \
              text=’Lisaaeg: ‘+ str(bonus*TIME_LIMIT), fill=’white’)