diff --git a/1 - Code/hl3.py b/1 - Code/hl3.py
index 077170385e60bd7442b47142f06df020825b3f09..698fb53eb34e84c675e44707d09654ac5cc32bfd 100644
--- a/1 - Code/hl3.py	
+++ b/1 - Code/hl3.py	
@@ -2,7 +2,7 @@ from machine import Pin
 from neopixel import NeoPixel
 import utime
 
-nb_line = 16
+nb_line = 8
 nb_row = 8
 gpio_neopixel = 0
 
@@ -258,4 +258,105 @@ def afficher_texte(text, color, speed):
     for step in range(h_offset + len(text) * (width + spacewidth) + 1):
         for i in range(nb_row):
             printColumn(step + i, i, text)
-        utime.sleep(speed)
\ No newline at end of file
+        utime.sleep(speed)
+
+def christmas():
+    
+    color = 0x3
+    prime1=439
+    prime2=17005013
+
+    masque_blanc= 0x0f0f0f   # setup LEDs intensity
+    masque_rouge=0x0f0000
+    masque_bleu=0x00000f
+    
+    period = .01
+    
+    # Balles glissantes
+    for r in range(100):
+        color = (color * prime1) % prime2
+        # horizontale et verticale
+        if color&4 == 4:
+            for i in range(8):
+                temp = (4-int(abs(4.5-i))+1)
+                temp = max(3-2*int(temp/2),0)
+                for j in range(temp,8-temp):
+                    if (color&3 == 0):
+                        diagonal=min(int((i+j)),7)
+                    elif (color&3 == 1):
+                        matrix.set_led(i,j, color&masque_blanc)
+                    elif (color&3 == 2):
+                        matrix.set_led(7-i,j, color&masque_blanc)
+                    else:
+                        matrix.set_led(j,7-i, color&masque_blanc)
+                utime.sleep(period)
+
+        # Diagonale
+        else:
+            for k in range(2,9):
+                for i in range(k+1):
+                    if (4.5-(k-i))**2+(4.5-i)**2 < 5**2:
+                        if (color&3 == 0):
+                            matrix.set_led((k-i),(i), color&masque_blanc)
+                        elif (color&3 == 1):
+                            matrix.set_led((i),(k-i), color&masque_blanc)
+                        elif (color&3 == 2):
+                            matrix.set_led((7-(k-i)),(i), color&masque_blanc)
+                        else:
+                            matrix.set_led((i),7-(k-i), color&masque_blanc)
+                utime.sleep(period)
+
+    
+    # Clear the matrix
+    matrix.clear(0)
+    
+    # Couleurs clignote
+    period = .5
+    for r in range(20):
+        color = (color * prime1) % prime2
+        for i in range(8):
+            for j in range(8):
+                matrix.set_led(j,i,color*(i+1)*(j+11) & masque_blanc)
+        utime.sleep(period)
+        matrix.clear(0)
+        utime.sleep(period/10)
+    
+    # Bleu aléatoire
+    period = .05
+    for r in range(20):
+        color = (color * prime1) % prime2
+        for i in range(8):
+            for j in range(8):
+                matrix.set_led(j,i,color*(i+1)*(j+11) >> 4 & masque_bleu)
+        utime.sleep(period)
+
+    # Couleurs aleatoire
+    period = .05
+    for r in range(10):
+        color = (color * prime1) % prime2
+        for i in range(8):
+            for j in range(8):
+                matrix.set_led(j,i,color*(i+1)*(j+11) & masque_blanc)
+        utime.sleep(period)
+
+    # Rouge aléatoire
+    period = .05
+    for r in range(10):
+        color = (color * prime1) % prime2
+        for i in range(8):
+            for j in range(8):
+                matrix.set_led(j,i,color*(i+1)*(j+11) & masque_rouge)
+        utime.sleep(period)
+
+    # Lignes 
+    period = .05
+    for r in range(10):
+        color = (color * prime1) % prime2
+        for i in range(8):
+            matrix.set_led(color%8,i,color*(i+1)*(j+11) & masque_blanc)
+        utime.sleep(period)
+        matrix.clear(0)
+        for i in range(8):
+            matrix.set_led(i,color%8,color*(i+1)*(j+11) & masque_blanc)
+        utime.sleep(period)
+        matrix.clear(0)
\ No newline at end of file
diff --git a/1 - Code/main.py b/1 - Code/main.py
index 58feec519b74bb715826fb45b33dd4be1cf5c486..4338e9aa31fd55e655b454109d8ca9ad91bbab54 100644
--- a/1 - Code/main.py	
+++ b/1 - Code/main.py	
@@ -1,4 +1,4 @@
 from hl3 import *
-import time
 
-afficher_texte("Hello world!", color.ORANGE, 0.1)
+while True:
+    christmas()
diff --git a/2 - Reports/Michael_Divia.md b/2 - Reports/Michael_Divia.md
index 2932f92f3569cfc027e960f7efc914c7b0ed3a4c..2defc7a39b6cc6f23a4cc86a9db2b732a74722cd 100644
--- a/2 - Reports/Michael_Divia.md	
+++ b/2 - Reports/Michael_Divia.md	
@@ -42,7 +42,11 @@ J'ai ensuite pris du temps afin de souder des pin à la matrice de LED afin de f
 
 ## Mardi, 18 Juin 2024
 
-J'ai commencé par créer `hl3.py` afin d'avoir un fichier librairie avec toutes les fonctions que nous allons implémentées. Je me suis ensuite attelé à la finalisation de la fonction `matrix`. J'ai aussi profité d'implémenter toute les couleurs que nous devions implémentées d'après la documentation. J'ai ensuite enchaîné avec l'ajout de la fonction `set_line`,`set_column`, `set_led`, `get_led` puis, avec l'aide de Gaspard, nous avons implémenter la fonction `afficher_texte`. 
+J'ai commencé par créer `hl3.py` afin d'avoir un fichier librairie avec toutes les fonctions que nous allons implémentées. Je me suis ensuite attelé à la finalisation de la fonction `matrix`.
+
+J'ai aussi profité d'implémenter toute les couleurs que nous devions implémentées d'après la documentation. J'ai ensuite enchaîné avec l'ajout de la fonction `set_line`,`set_column`, `set_led`, `get_led` puis, avec l'aide de Gaspard, nous avons implémenter le début de la fonction `afficher_texte`.
+
+J'ai ensuite créer un fonction de démo `christmas` afin de démontré le bon fonctionnement des LEDs. Cette fonction est une ré-implémentation de la fonction de M. Gluck que vous pouvez trouver [ici](https://gitedu.hesge.ch/cores/projects/hepialight2/hepialight2-examples/-/blob/02261b68aad94dd52c6b35fdb83ed1d54028061b/peripherals/display/christmas_ball.py).
 
 # Creators