Denníček - december 2022: Rozdiel medzi revíziami
Skočit na navigaci
Skočit na vyhledávání
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 22: | Riadok 22: | ||
Mišo s Brunom pokračovali na stavbe plotra. | Mišo s Brunom pokračovali na stavbe plotra. | ||
---- | |||
Tadeáš naprogramoval SPIKE kalkulačku v mikropythone: | |||
<syntaxhighlight> | |||
from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair | |||
from spike.control import wait_for_seconds, wait_until, Timer | |||
from math import * | |||
from time import * | |||
hub = PrimeHub() | |||
number = 0 | |||
page = 0 | |||
function = '' | |||
selNum1 = 0 | |||
selNum2 = 0 | |||
def plus(a, b): | |||
return a + b | |||
def minus(a, b): | |||
return a - b | |||
def multiply(a, b): | |||
return a * b | |||
def divide(a, b): | |||
return a / b | |||
operations = ['-', '+', '*', '/'] | |||
calculations = [minus, plus, multiply, divide] | |||
def show_number(nmr): | |||
hub.light_matrix.write(str(nmr)) | |||
def show_operation(oper): | |||
hub.light_matrix.write(operations[oper]) | |||
def selectSomething(max, showFn): | |||
page = 0 | |||
showFn(page) | |||
while True: | |||
if hub.left_button.is_pressed(): | |||
while hub.left_button.is_pressed(): | |||
if hub.right_button.is_pressed(): | |||
while hub.left_button.is_pressed() or hub.right_button.is_pressed(): | |||
continue | |||
return page | |||
if page > 0: | |||
page -= 1 | |||
showFn(page) | |||
if hub.right_button.is_pressed(): | |||
while hub.right_button.is_pressed(): | |||
if hub.left_button.is_pressed(): | |||
while hub.left_button.is_pressed() or hub.right_button.is_pressed(): | |||
continue | |||
return page | |||
if page < max: | |||
page +=1 | |||
showFn(page) | |||
selNum1 = selectSomething(9, show_number) | |||
operation = selectSomething(3, show_operation) | |||
selNum2 = selectSomething(9, show_number) | |||
result = calculations[operation](selNum1, selNum2) | |||
hub.light_matrix.write("Result:") | |||
hub.light_matrix.write(str(result)) | |||
</syntaxhighlight> |
Verzia z 16:10, 9. december 2022
Nové úlohy:
- počítanie čiar: robot sa rozbehne, vždy keď prejde ponad čiernu čiaru zapíska, a keď sa dostane k prekážke, zastane a potom znovu zapíska toľkokrát, koľko čiar prešiel
- zapamätanie rytmu: používateľ stláča tlačidlo v nejakom rytme, keď ho prestane stláčať, tak robot odpípa ten istý rytmus naspäť
- rozpoznávanie vzorov: robot prejde ponad čierne čiary, ktoré sa od seba nachádzajú v rôznych vzdialenostiach, príkad: |...|..|.|.|......| a zapamätá si tento vzor. Potom sa rovnakým spôsobom (po stlačení šípky vpravo) naučí druhý podobný vzor, kde sú čiary v iných rozostupoch (je ich rovnako veľa). Napokon robot načíta tretí vzor - ktorý sa buď podobá na prvý z nich alebo na druhý z nich alebo ani na jeden - a podľa toho oznámi na displeji číslo 1, 2, alebo nič.
Benjamin s Michalom nakoniec vyriešili úlohu o metre:
Katka, Barbora a Matej pokračovali s Arduinom, tu je semafor, ktorý naprogramovala Katka:
Chlapci vylepšovali lokomotívu
Mišo s Brunom pokračovali na stavbe plotra.
Tadeáš naprogramoval SPIKE kalkulačku v mikropythone:
from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair
from spike.control import wait_for_seconds, wait_until, Timer
from math import *
from time import *
hub = PrimeHub()
number = 0
page = 0
function = ''
selNum1 = 0
selNum2 = 0
def plus(a, b):
return a + b
def minus(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
return a / b
operations = ['-', '+', '*', '/']
calculations = [minus, plus, multiply, divide]
def show_number(nmr):
hub.light_matrix.write(str(nmr))
def show_operation(oper):
hub.light_matrix.write(operations[oper])
def selectSomething(max, showFn):
page = 0
showFn(page)
while True:
if hub.left_button.is_pressed():
while hub.left_button.is_pressed():
if hub.right_button.is_pressed():
while hub.left_button.is_pressed() or hub.right_button.is_pressed():
continue
return page
if page > 0:
page -= 1
showFn(page)
if hub.right_button.is_pressed():
while hub.right_button.is_pressed():
if hub.left_button.is_pressed():
while hub.left_button.is_pressed() or hub.right_button.is_pressed():
continue
return page
if page < max:
page +=1
showFn(page)
selNum1 = selectSomething(9, show_number)
operation = selectSomething(3, show_operation)
selNum2 = selectSomething(9, show_number)
result = calculations[operation](selNum1, selNum2)
hub.light_matrix.write("Result:")
hub.light_matrix.write(str(result))