From 8085e77c033d4f895b493d619dbe0934c6cf28cd Mon Sep 17 00:00:00 2001 From: Merlin Baviere <merlin.baviere@student-cs.fr> Date: Wed, 30 Oct 2024 16:04:34 +0100 Subject: [PATCH] fin BE5 --- BE4BE5.zip | Bin 0 -> 3535 bytes BE5/BE5.py | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 189 insertions(+), 7 deletions(-) create mode 100644 BE4BE5.zip diff --git a/BE4BE5.zip b/BE4BE5.zip new file mode 100644 index 0000000000000000000000000000000000000000..3fb59e6aef674921393f8f024c102486faca59d6 GIT binary patch literal 3535 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 literal 0 HcmV?d00001 diff --git a/BE5/BE5.py b/BE5/BE5.py index 52b42cc..da725d9 100644 --- a/BE5/BE5.py +++ b/BE5/BE5.py @@ -1,4 +1,6 @@ import pyb +import os + data = "X8"; # patte connectée à l'entrée série du MAX7219 (DIN) load = "X5"; # patte de chargement des données (CS) @@ -83,16 +85,196 @@ def setPixel(x,y,on,bitmap): if (bitmap[x]%(pow(2,(8-y))))//(pow(2,(7-y)))==1: bitmap[x]-=pow(2,(7-y)) -for i in range(8): - bitmap[i]=i -updateDisplay(bitmap) -print(bitmap) -setPixel(5,5,False,bitmap) -print(bitmap) -updateDisplay(bitmap) +def getPixel(x,y,bitmap): + return (bitmap[x]%(pow(2,(8-y))))//(pow(2,(7-y)))==1 + +def testPixels(): + bitmap = bytearray(8) + matrixOn(1) + matrixTest(0) + matrixDecode(0) + matrixDigits(7) + clearDisplay(bitmap) + # Trace un O + setPixel(1,2,1, bitmap); setPixel(2,2,1, bitmap); setPixel(3,2,1, bitmap) + setPixel(1,3,1, bitmap); setPixel(3,3,1, bitmap) + setPixel(1,4,1, bitmap); setPixel(3,4,1, bitmap) + setPixel(1,5,1, bitmap); setPixel(2,5,1, bitmap); setPixel(3,5,1, bitmap) + # Trace un K + setPixel(5,2,1, bitmap); setPixel(7,2,1, bitmap) + setPixel(5,3,1, bitmap); setPixel(6,3,1, bitmap) + setPixel(5,4,1, bitmap); setPixel(6,4,1, bitmap) + setPixel(5,5,1, bitmap); setPixel(7,5,1, bitmap) + updateDisplay(bitmap) + +def testPixels2(): + bitmap = bytearray(8) + matrixOn(True) + matrixTest(False) + matrixDecode(False) + matrixDigits(7) + clearDisplay(bitmap) + x = 0 + y = 0 + while True: + setPixel(x, y, True, bitmap) + updateDisplay(bitmap) + setPixel(x, y, False, bitmap) + x = (x + 1) % 8 + if x == 0: + y = (y + 1) % 8 + pyb.delay(100) + +smiley = ( + " **** ", + " * * ", + "* * * *", + "* *", + "* * * *", + "* ** *", + " * * ", + " **** " +) +frowney = ( + " **** ", + " * * ", + "* * * *", + "* *", + "* ** *", + "* * * *", + " * * ", + " **** " +) + +def displayPict(pict): + bitmap = bytearray(8) + clearDisplay(bitmap) + i = 0 + for line in pict: + j = 0 + for char in line: + if char== "*": + setPixel(i,j,1,bitmap) + j+=1 + i+=1 + updateDisplay(bitmap) + return bitmap +def randomBitmap(): + bitmap = bytearray(8) + for i in range(8): + for j in range(8): + setPixel(i,j,(os.urandom(1)[0] > 127) ,bitmap) + return bitmap +def countNeighbours(x, y, bitmap): + vois = 0 + list_vois=[((x + dx) % 8, (y + dy) % 8) for dx in (-1, 0, 1) for dy in (-1, 0, 1) if (dx, dy) != (0, 0)] + for i in list_vois: + if getPixel(i[0],i[1],bitmap): + vois+=1 + return vois +def lifeStep(bitmap): + res_bitmap = bytearray(8) + for x in range(8): + for y in range(8): + if countNeighbours(x,y,bitmap)==3: + setPixel(x,y,True,res_bitmap) + elif countNeighbours(x,y,bitmap)==2: + setPixel(x,y,getPixel(x,y,bitmap),res_bitmap) + else: + setPixel(x,y,False,res_bitmap) + for i in range(8): + bitmap[i]=res_bitmap[i] + updateDisplay(bitmap) + +def gameOfLife(): + bitmap = randomBitmap() + while True: + pyb.delay(200) + lifeStep(bitmap) + +# Figures stables +stableBlock = ( + " ", + " ", + " ", + " ** ", + " ** ", + " ", + " ", + " " +) +def testBlock(): + bitmap = displayPict(stableBlock) + pyb.delay(500) + lifeStep(bitmap) + +stableTube = ( + " ", + " ", + " * ", + " * * ", + " * ", + " ", + " ", + " " +) +def testTube(): + bitmap = displayPict(stableTube) + pyb.delay(500) + lifeStep(bitmap) + +# Figures oscillantes +oscBlinker = ( + " ", + " ", + " ", + " *** ", + " ", + " ", + " ", + " " +) +def testBlinker(): + bitmap = displayPict(oscBlinker) + for i in range(2): + pyb.delay(500) + lifeStep(bitmap) + +# Vaisseaux +shipGlider = ( + " ", + " ", + " ", + " ", + " ", + "*** ", + " * ", + " * " +) +def testGlider(): + bitmap = displayPict(shipGlider) + for i in range(32): + pyb.delay(500) + lifeStep(bitmap) + +shipLWSS = ( + " ", + " ", + "* * ", + " * ", + "* * ", + " **** ", + " ", + " " +) +def testLWSS(): + bitmap = displayPict(shipLWSS) + for i in range(16): + pyb.delay(500) + lifeStep(bitmap) -- GitLab