3 point snake is ok

This commit is contained in:
李昂 2021-10-26 21:44:10 +08:00
parent 5497dde01c
commit 941ca6f1a6
4 changed files with 60 additions and 35 deletions

View File

@ -1,32 +1,45 @@
import PikaStdLib import PikaStdLib
import STM32
import PikaPiZero import PikaPiZero
import STM32
oled = PikaPiZero.OLED()
up = STM32.GPIO()
right = STM32.GPIO()
p0 = PikaPiZero.Point() p0 = PikaPiZero.Point()
p0.x = 0 p1 = PikaPiZero.Point()
p0.y = 0 p2 = PikaPiZero.Point()
print(p0.x) p1.x = 0
mem = PikaStdLib.MemChecker() p1.y = 0
print('mem used max:')
mem.max()
oled.drawPoint(p0.x, p0.y)
while True: while True:
if right.read() == 1: if isUpdate:
print('right') isUpdate = 0
if p0.x < 15: p2.x = p1.x
p2.y = p1.y
p1.x = p0.x
p1.y = p0.y
if pos == 0:
p0.x = p0.x + 1 p0.x = p0.x + 1
print(p0.x) if p0.x > 15:
oled.drawPoint(p0.x, p0.y) p0.x = 0
if left.read() == 0: if pos == 1:
if p0.x > 0:
p0.x = p0.x - 1 p0.x = p0.x - 1
oled.drawPoint(p0.x, p0.y) if p0.x < 0:
if up.read() == 0: p0.x = 15
if p0.y > 0: if pos == 2:
p0.y = p0.y - 1 p0.y = p0.y - 1
oled.drawPoint(p0.x, p0.y) if p0.y < 0:
if down.read() == 0: p0.y = 7
if p0.y < 7: if pos == 3:
p0.y = p0.y + 1 p0.y = p0.y + 1
if p0.y > 7:
p0.y = 0
oled.clear()
oled.drawPoint(p0.x, p0.y) oled.drawPoint(p0.x, p0.y)
oled.drawPoint(p1.x, p1.y)
oled.drawPoint(p2.x, p2.y)
if right.read() == 1:
pos = 0
isUpdate = 1
if up.read() == 0:
pos = 2
isUpdate = 1

View File

@ -1,4 +1,4 @@
pikascript-core==v1.1.2 pikascript-core==latest
PikaStdLib==v1.1.0 PikaStdLib==v1.1.0
PikaStdDevice==latest PikaStdDevice==latest
STM32==latest STM32==latest

View File

@ -34,3 +34,9 @@ class OLED(TinyObj):
def drawPoint(x: int, y: int): def drawPoint(x: int, y: int):
pass pass
def clear():
pass
class Point(TinyObj):
pass

View File

@ -126,18 +126,18 @@ int main(void) {
obj_run(pikaMain, "right.setMode('in')"); obj_run(pikaMain, "right.setMode('in')");
obj_run(pikaMain, "right.setPull('down')"); obj_run(pikaMain, "right.setPull('down')");
obj_run(pikaMain, "right.enable()"); obj_run(pikaMain, "right.enable()");
obj_run(pikaMain, "left = STM32.GPIO()"); // obj_run(pikaMain, "left = STM32.GPIO()");
obj_run(pikaMain, "left.init()"); // obj_run(pikaMain, "left.init()");
obj_run(pikaMain, "left.setPin('PC13')"); // obj_run(pikaMain, "left.setPin('PC13')");
obj_run(pikaMain, "left.setMode('in')"); // obj_run(pikaMain, "left.setMode('in')");
obj_run(pikaMain, "left.setPull('up')"); // obj_run(pikaMain, "left.setPull('up')");
obj_run(pikaMain, "left.enable()"); // obj_run(pikaMain, "left.enable()");
obj_run(pikaMain, "down = STM32.GPIO()"); // obj_run(pikaMain, "down = STM32.GPIO()");
obj_run(pikaMain, "down.init()"); // obj_run(pikaMain, "down.init()");
obj_run(pikaMain, "down.setPin('PB6')"); // obj_run(pikaMain, "down.setPin('PB6')");
obj_run(pikaMain, "down.setMode('in')"); // obj_run(pikaMain, "down.setMode('in')");
obj_run(pikaMain, "down.setPull('up')"); // obj_run(pikaMain, "down.setPull('up')");
obj_run(pikaMain, "down.enable()"); // obj_run(pikaMain, "down.enable()");
obj_run(pikaMain, "up = STM32.GPIO()"); obj_run(pikaMain, "up = STM32.GPIO()");
obj_run(pikaMain, "up.init()"); obj_run(pikaMain, "up.init()");
obj_run(pikaMain, "up.setPin('PA15')"); obj_run(pikaMain, "up.setPin('PA15')");
@ -146,6 +146,12 @@ int main(void) {
obj_run(pikaMain, "up.enable()"); obj_run(pikaMain, "up.enable()");
obj_run(pikaMain, "oled = PikaPiZero.OLED()"); obj_run(pikaMain, "oled = PikaPiZero.OLED()");
obj_run(pikaMain, "oled.init()"); obj_run(pikaMain, "oled.init()");
obj_run(pikaMain, "p0 = PikaPiZero.Point()");
obj_run(pikaMain, "p0.x = 0");
obj_run(pikaMain, "p0.y = 0");
obj_run(pikaMain, "pos = 0");
obj_run(pikaMain, "isUpdate = 1");
pikaVM_runAsm(pikaMain, code); pikaVM_runAsm(pikaMain, code);
} }
} else { } else {