diff --git a/BE4BE5.zip b/BE4BE5.zip
new file mode 100644
index 0000000000000000000000000000000000000000..3fb59e6aef674921393f8f024c102486faca59d6
Binary files /dev/null and b/BE4BE5.zip differ
diff --git a/BE5/BE5.py b/BE5/BE5.py
index 52b42ccfd7a27609d867f4aa5479f13b2b833f99..da725d97fad4f944dabbcba9b3c1d33e846276a4 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)