di. apr 23rd, 2024
dobbelsteen

Maak een dobbelsteen op een 8×8 dot-matrix display die je met een drukknop laar ‘rollen’.

Alvorens te beginnen, indien dit de eerste maal is dat je met een Arduino (compatibele) microcontroller werkt, volg de volgende instructies voor het installeren van de Arduino werk omgeving.

In dit project gebruiken we een speciaal font om de dobbelsteen nummer 1 t/m 6 op het 8×8 dot-matrix display weer te geven. We laten de dobbelsteen ‘rollen’ door een knop in te drukken en tijdens het indrukken willekeurige nummers weer te geven. Bij het loslaten van de knop blijft dan het laatste willekeurige nummer op het display staan.

Zoals alle voorbeelden die we hier presenteren maakt dit project ook gebruik van de A-Vision ESP8266 Arduino bibliotheek.

Open het dobbelsteen voorbeeld uit de A-Vision ESP8266 bibliotheek.

Nu ben je klaar om het Dobbelsteen voorbeeld project te compileren en naar de ESP8266 D1 mini te sturen.

Voor de programmering moet de ESP8266 D1 mini module met een micro-USB kabel worden aangesloten op de computer waarop de Arduino IDE software is geïnstalleerd.

Hardware aansluiting

– voor de A-Vision ESP8266 learning board –
Het display sluiten we aan met CS op D8, CLK op D5 en DIN op D7. We sluiten BUTTON #1 aan op D6.

De code

definities & includes
dies_font.h
setup()
loop()
dobbelsteen.ino
referenties
uitdaging

In de definities geven we aan hoeveel 8×8 dot-matrix displays we hebben (aantal kolommen en aantal rijen), en tevens welk type hardware is gebruik voor het display. Voor de A-Vision ESP8266 learning board project is de Parola type hardware gebruikt.
We moeten natuurlijk ook zorgen dat de software voor het aansturen van het display beschikbaar is. Tevens worden voor al onze voorbeeld projecten de debug code geladen.
We laden ook het speciaal gemaakte font voor de dobbelsteen (dies_font.h);
En als laatste maken we een display object aan die we later gaan gebruiken voor het besturen van het display.

// Definities
#define DEBUG_ENABLED           false // Output info via de seriële poort

// Aantal rijen displays (Voor de A-Vision ESP8266 learning board is dat 1)
#define DISPLAY_ROWS            1
// Aantal kolommen displays (Voor de A-Vision ESP8266 learning board is dat 1)
#define DISPLAY_COLUMNS         1
// Gebruikte display type (Voor de A-Vision ESP8266 learning board is dat MD_MAX72XX::PAROLA_HW)
#define DISPLAY_HARDWARE_TYPE   MD_MAX72XX::PAROLA_HW

// Digitale ingang voor de drukknop (Vrije keuze)
#define BUTTON1                 D6

// Includes
#include <avision_debug.h>
#include <avision_display.h>
// https://pjrp.github.io/MDParolaFontEditor -- maak je eigen font
#include "dies_font.h"

// Maak display object
AVision::dotmatrixDisplay display;

Dit is de font definitie voor alle 255 karakters van (van 0x00 t/m 0xFF).
In de online Parola font editor (https://pjrp.github.io/MDParolaFontEditor) kan onderstaande worden geladen, aangepast en weer ge-exporteerd worden.
Op deze manier kun je je eigen dobbelsteen nummer aanpassen (of welke karakters dan ook). Houd daarbij wel rekening dat de eerste regel ( 'F', 1, 0, 255, 8, ) moet worden weggelaten.

const uint8_t PROGMEM _font_die_numbers[] =
    {
        'F', 1, 0, 255, 8,
        7, 0, 0, 0, 0, 0, 0, 0,                // 0
        7, 0, 0, 0, 16, 0, 0, 0,               // 1
        7, 0, 84, 0, 0, 0, 84, 0,              // 2
        7, 0, 64, 0, 16, 0, 4, 0,              // 3
        7, 0, 68, 0, 0, 0, 68, 0,              // 4
        7, 0, 68, 0, 16, 0, 68, 0,             // 5
        7, 0, 84, 0, 0, 0, 84, 0,              // 6
        7, 0, 84, 0, 16, 0, 84, 0,             // 7
        7, 0, 84, 0, 40, 0, 84, 0,             // 8
        7, 0, 84, 0, 84, 0, 84, 0,             // 9
        5, 255, 231, 219, 231, 255,            // 10
        5, 48, 72, 58, 6, 14,                  // 11
        5, 38, 41, 121, 41, 38,                // 12
        5, 64, 127, 5, 5, 7,                   // 13
        5, 64, 127, 5, 37, 63,                 // 14
        5, 90, 60, 231, 60, 90,                // 15
        5, 127, 62, 28, 28, 8,                 // 16
        5, 8, 28, 28, 62, 127,                 // 17
        5, 20, 34, 127, 34, 20,                // 18
        5, 95, 95, 0, 95, 95,                  // 19
        5, 6, 9, 127, 1, 127,                  // 20
        5, 0, 102, 137, 149, 106,              // 21
        5, 96, 96, 96, 96, 96,                 // 22
        5, 148, 162, 255, 162, 148,            // 23
        5, 8, 4, 126, 4, 8,                    // 24
        5, 16, 32, 126, 32, 16,                // 25
        5, 8, 8, 42, 28, 8,                    // 26
        5, 8, 28, 42, 8, 8,                    // 27
        5, 30, 16, 16, 16, 16,                 // 28
        5, 12, 30, 12, 30, 12,                 // 29
        5, 48, 56, 62, 56, 48,                 // 30
        5, 6, 14, 62, 14, 6,                   // 31
        1, 0,                                  // 32
        3, 0, 95, 0,                           // 33
        5, 0, 7, 0, 7, 0,                      // 34
        5, 20, 127, 20, 127, 20,               // 35
        5, 36, 42, 127, 42, 18,                // 36
        5, 35, 19, 8, 100, 98,                 // 37
        5, 54, 73, 86, 32, 80,                 // 38
        5, 0, 8, 7, 3, 0,                      // 39
        5, 0, 28, 34, 65, 0,                   // 40
        5, 0, 65, 34, 28, 0,                   // 41
        5, 42, 28, 127, 28, 42,                // 42
        5, 8, 8, 62, 8, 8,                     // 43
        6, 0, 128, 112, 48, 0, 0,              // 44
        3, 8, 8, 8,                            // 45
        4, 0, 96, 96, 0,                       // 46
        5, 32, 16, 8, 4, 2,                    // 47
        8, 0, 0, 0, 0, 0, 0, 0, 0,             // 48 0
        8, 0, 0, 0, 24, 24, 0, 0, 0,           // 49 1
        8, 192, 192, 0, 0, 0, 0, 3, 3,         // 50 2
        8, 192, 192, 0, 24, 24, 0, 3, 3,       // 51 3
        8, 195, 195, 0, 0, 0, 0, 195, 195,     // 52 4
        8, 195, 195, 0, 24, 24, 0, 195, 195,   // 53 5
        8, 219, 219, 0, 0, 0, 0, 219, 219,     // 54 6
        8, 219, 219, 0, 24, 24, 0, 219, 219,   // 55 7
        8, 219, 219, 0, 102, 102, 0, 219, 219, // 56 8
        8, 219, 219, 0, 219, 219, 0, 219, 219, // 57 9
        3, 0, 20, 0,                           // 58
        5, 0, 128, 104, 0, 0,                  // 59
        5, 0, 8, 20, 34, 65,                   // 60
        5, 20, 20, 20, 20, 20,                 // 61
        5, 0, 65, 34, 20, 8,                   // 62 - '>'
        5, 2, 1, 89, 9, 6,                     // 63 - '?'
        5, 62, 65, 93, 89, 78,                 // 64 - '@'
        5, 124, 18, 17, 18, 124,               // 65 - 'A'
        5, 127, 73, 73, 73, 54,                // 66 - 'B'
        5, 62, 65, 65, 65, 34,                 // 67 - 'C'
        5, 127, 65, 65, 65, 62,                // 68 - 'D'
        5, 127, 73, 73, 73, 65,                // 69 - 'E'
        5, 127, 9, 9, 9, 1,                    // 70 - 'F'
        5, 62, 65, 65, 81, 115,                // 71 - 'G'
        5, 127, 8, 8, 8, 127,                  // 72 - 'H'
        5, 0, 65, 127, 65, 0,                  // 73 - 'I'
        5, 32, 64, 65, 63, 1,                  // 74 - 'J'
        5, 127, 8, 20, 34, 65,                 // 75 - 'K'
        5, 127, 64, 64, 64, 64,                // 76 - 'L'
        5, 127, 2, 28, 2, 127,                 // 77 - 'M'
        5, 127, 4, 8, 16, 127,                 // 78 - 'N'
        5, 62, 65, 65, 65, 62,                 // 79 - 'O'
        5, 127, 9, 9, 9, 6,                    // 80 - 'P'
        5, 62, 65, 81, 33, 94,                 // 81 - 'Q'
        5, 127, 9, 25, 41, 70,                 // 82 - 'R'
        5, 38, 73, 73, 73, 50,                 // 83 - 'S'
        5, 3, 1, 127, 1, 3,                    // 84 - 'T'
        5, 63, 64, 64, 64, 63,                 // 85 - 'U'
        5, 31, 32, 64, 32, 31,                 // 86 - 'V'
        5, 63, 64, 56, 64, 63,                 // 87 - 'W'
        5, 99, 20, 8, 20, 99,                  // 88 - 'X'
        5, 3, 4, 120, 4, 3,                    // 89 - 'Y'
        5, 97, 89, 73, 77, 67,                 // 90 - 'Z'
        5, 0, 127, 65, 65, 0,                  // 91 - '['
        5, 2, 4, 8, 16, 32,                    // 92 - '\'
        5, 0, 65, 65, 127, 0,                  // 93 - ']'
        5, 4, 2, 1, 2, 4,                      // 94 - '^'
        5, 64, 64, 64, 64, 64,                 // 95 - '_'
        5, 0, 3, 7, 8, 0,                      // 96 - '`'
        5, 32, 84, 84, 120, 64,                // 97 - 'a'
        5, 127, 40, 68, 68, 56,                // 98 - 'b'
        5, 56, 68, 68, 68, 40,                 // 99 - 'c'
        5, 56, 68, 68, 40, 127,                // 100 - 'd'
        5, 56, 84, 84, 84, 24,                 // 101 - 'e'
        5, 8, 126, 9, 2, 0,                    // 102 - 'f'
        5, 24, 164, 164, 156, 120,             // 103 - 'g'
        5, 127, 8, 4, 4, 120,                  // 104 - 'h'
        5, 0, 68, 125, 64, 0,                  // 105 - 'i'
        5, 64, 128, 128, 122, 0,               // 106 - 'j'
        5, 0, 127, 16, 40, 68,                 // 107 - 'k'
        5, 0, 65, 127, 64, 0,                  // 108 - 'l'
        5, 124, 4, 120, 4, 120,                // 109 - 'm'
        5, 124, 8, 4, 4, 120,                  // 110 - 'n'
        5, 56, 68, 68, 68, 56,                 // 111 - 'o'
        5, 252, 24, 36, 36, 24,                // 112 - 'p'
        5, 24, 36, 36, 24, 252,                // 113 - 'q'
        5, 124, 8, 4, 4, 8,                    // 114 - 'r'
        5, 72, 84, 84, 84, 36,                 // 115 - 's'
        5, 4, 4, 63, 68, 36,                   // 116 - 't'
        5, 60, 64, 64, 32, 124,                // 117 - 'u'
        5, 28, 32, 64, 32, 28,                 // 118 - 'v'
        5, 60, 64, 48, 64, 60,                 // 119 - 'w'
        5, 68, 40, 16, 40, 68,                 // 120 - 'x'
        5, 76, 144, 144, 144, 124,             // 121 - 'y'
        5, 68, 100, 84, 76, 68,                // 122 - 'z'
        5, 0, 8, 54, 65, 0,                    // 123 - '{'
        5, 0, 0, 119, 0, 0,                    // 124 - '|'
        5, 0, 65, 54, 8, 0,                    // 125 - '}'
        5, 2, 1, 2, 4, 2,                      // 126 - '~'
        5, 60, 38, 35, 38, 60,                 // 127 - 'Hollow Up Arrow'
        5, 30, 161, 161, 97, 18,               // 128 - 'C sedilla'
        5, 58, 64, 64, 32, 122,                // 129 - 'u umlaut'
        5, 56, 84, 84, 85, 89,                 // 130 - 'e acute'
        5, 33, 85, 85, 121, 65,                // 131 - 'a accent'
        5, 33, 84, 84, 120, 65,                // 132 - 'a umlaut'
        5, 33, 85, 84, 120, 64,                // 133 - 'a grave'
        5, 32, 84, 85, 121, 64,                // 134 - 'a acute'
        5, 12, 30, 82, 114, 18,                // 135 - 'c sedilla'
        5, 57, 85, 85, 85, 89,                 // 136 - 'e accent'
        5, 57, 84, 84, 84, 89,                 // 137 - 'e umlaut'
        5, 57, 85, 84, 84, 88,                 // 138 - 'e grave'
        5, 0, 69, 124, 65, 0,                  // 139 - 'i umlaut'
        5, 2, 69, 125, 66, 0,                  // 140 - 'i hat'
        5, 1, 69, 124, 64, 0,                  // 141 - 'i grave'
        3, 32, 24, 32,                         // 142 - '*'
        3, 16, 56, 16,                         // 143 - '+'
        4, 64, 32, 0, 0,                       // 144'
        3, 16, 16, 16,                         // 145 - '-'
        1, 64,                                 // 146 - '.'
        3, 64, 56, 4,                          // 147 - '/'
        3, 56, 68, 56,                         // 148 - '0'
        3, 72, 124, 64,                        // 149 - '1'
        3, 72, 100, 88,                        // 150 - '2'
        3, 68, 84, 124,                        // 151 - '3'
        3, 60, 32, 112,                        // 152 - '4'
        3, 92, 84, 36,                         // 153 - '5'
        3, 56, 84, 32,                         // 154 - '6'
        3, 4, 116, 12,                         // 155 - '7'
        3, 108, 84, 108,                       // 156 - '8'
        3, 8, 84, 56,                          // 157 - '9'
        1, 40,                                 // 158 - ':'
        2, 64, 40,                             // 159 - ';'
        2, 16, 40,                             // 160 - '<'
        3, 40, 40, 40,                         // 161 - '='
        2, 40, 16,                             // 162 - '>'
        5, 56, 64, 64, 34, 122,                // 163 - 'u acute'
        5, 122, 10, 10, 114, 0,                // 164 - 'n accent'
        5, 125, 13, 25, 49, 125,               // 165 - 'N accent'
        5, 38, 41, 41, 47, 40,                 // 166
        5, 38, 41, 41, 41, 38,                 // 167
        5, 48, 72, 77, 64, 32,                 // 168 - 'Inverted ?'
        5, 56, 8, 8, 8, 8,                     // 169
        5, 8, 8, 8, 8, 56,                     // 170
        5, 47, 16, 200, 172, 186,              // 171 - '1/2'
        5, 47, 16, 40, 52, 250,                // 172 - '1/4'
        5, 0, 0, 123, 0, 0,                    // 173 - '| split'
        5, 8, 20, 42, 20, 34,                  // 174 - '<<'
        5, 34, 20, 42, 20, 8,                  // 175 - '>>'
        5, 170, 0, 85, 0, 170,                 // 176 - '30% shading'
        5, 170, 85, 170, 85, 170,              // 177 - '50% shading'
        5, 0, 0, 0, 0, 255,                    // 178 - 'Right side'
        5, 16, 16, 16, 16, 255,                // 179 - 'Right T'
        5, 20, 20, 20, 20, 255,                // 180 - 'Right T double H'
        5, 16, 16, 255, 0, 255,                // 181 - 'Right T double V'
        5, 16, 16, 240, 16, 240,               // 182 - 'Top Right double V'
        5, 20, 20, 20, 20, 252,                // 183 - 'Top Right double H'
        5, 20, 20, 247, 0, 255,                // 184 - 'Right T double all'
        5, 0, 0, 255, 0, 255,                  // 185 - 'Right side double'
        5, 20, 20, 244, 4, 252,                // 186 - 'Top Right double'
        5, 20, 20, 23, 16, 31,                 // 187 - 'Bot Right double'
        5, 16, 16, 31, 16, 31,                 // 188 - 'Bot Right double V'
        5, 20, 20, 20, 20, 31,                 // 189 - 'Bot Right double H'
        5, 16, 16, 16, 16, 240,                // 190 - 'Top Right'
        5, 0, 0, 0, 31, 16,                    // 191 - 'Bot Left'
        5, 16, 16, 16, 31, 16,                 // 192 - 'Bot T'
        5, 16, 16, 16, 240, 16,                // 193 - 'Top T'
        5, 0, 0, 0, 255, 16,                   // 194 - 'Left T'
        5, 16, 16, 16, 16, 16,                 // 195 - 'Top side'
        5, 16, 16, 16, 255, 16,                // 196 - 'Center +'
        5, 0, 0, 0, 255, 20,                   // 197 - 'Left side double H'
        5, 0, 0, 255, 0, 255,                  // 198 - 'Left side double'
        5, 0, 0, 31, 16, 23,                   // 199 - 'Bot Left double V'
        5, 0, 0, 252, 4, 244,                  // 200 - 'Top Left double V'
        5, 20, 20, 23, 16, 23,                 // 201 - 'Bot T double'
        5, 20, 20, 244, 4, 244,                // 202 - 'Top T double'
        5, 0, 0, 255, 0, 247,                  // 203 - 'Left Side double spl'
        5, 20, 20, 20, 20, 20,                 // 204 - 'Center double'
        5, 20, 20, 247, 0, 247,                // 205 - 'Center + double'
        5, 20, 20, 20, 23, 20,                 // 206 - 'Bot T double H'
        5, 16, 16, 31, 16, 31,                 // 207 - 'Bot Right double V'
        5, 20, 20, 20, 244, 20,                // 208 - 'Top T double H'
        5, 16, 16, 240, 16, 240,               // 209 - 'Top Right double V'
        5, 0, 0, 31, 16, 31,                   // 210 - 'Bot Left double V'
        5, 0, 0, 0, 31, 20,                    // 211 - 'Bot Right double H'
        5, 0, 0, 0, 252, 20,                   // 212 - 'Top Right double H'
        5, 0, 0, 240, 16, 240,                 // 213 - 'Top Right double V'
        5, 16, 16, 255, 16, 255,               // 214 - 'Center + double V'
        5, 20, 20, 20, 255, 20,                // 215 - 'Center + double H'
        5, 16, 16, 16, 16, 31,                 // 216 - 'Bot Right'
        5, 0, 0, 0, 240, 16,                   // 217 - 'Top Left'
        5, 255, 255, 255, 255, 255,            // 218 - 'Full Block'
        5, 240, 240, 240, 240, 240,            // 219 - 'Half Block Bottom'
        5, 255, 255, 255, 0, 0,                // 220 - 'Half Block LHS'
        5, 0, 0, 0, 255, 255,                  // 221 - 'Half Block RHS'
        5, 15, 15, 15, 15, 15,                 // 222 - 'Half Block Top'
        5, 56, 68, 68, 56, 68,                 // 223 - 'Alpha'
        5, 124, 42, 42, 62, 20,                // 224 - 'Beta'
        5, 126, 2, 2, 6, 6,                    // 225 - 'Gamma'
        5, 2, 126, 2, 126, 2,                  // 226 - 'Pi'
        5, 99, 85, 73, 65, 99,                 // 227 - 'Sigma'
        5, 56, 68, 68, 60, 4,                  // 228 - 'Theta'
        5, 64, 126, 32, 30, 32,                // 229 - 'mu'
        5, 6, 2, 126, 2, 2,                    // 230 - 'Tau'
        5, 153, 165, 231, 165, 153,            // 231
        5, 28, 42, 73, 42, 28,                 // 232
        5, 76, 114, 1, 114, 76,                // 233
        5, 48, 74, 77, 77, 48,                 // 234
        5, 48, 72, 120, 72, 48,                // 235
        5, 188, 98, 90, 70, 61,                // 236 - 'Zero Slashed'
        5, 62, 73, 73, 73, 0,                  // 237
        5, 126, 1, 1, 1, 126,                  // 238
        5, 42, 42, 42, 42, 42,                 // 239 - '3 Bar Equals'
        5, 68, 68, 95, 68, 68,                 // 240 - '+/-'
        5, 64, 81, 74, 68, 64,                 // 241 - '>='
        5, 64, 68, 74, 81, 64,                 // 242 - '<='
        5, 0, 0, 255, 1, 3,                    // 243 - 'Top of Integral'
        5, 0, 224, 128, 255, 0,                // 244 - 'Bot of Integral'
        5, 8, 8, 107, 107, 8,                  // 245 - 'Divide'
        5, 54, 18, 54, 36, 54,                 // 246 - 'Wavy ='
        5, 6, 15, 9, 15, 6,                    // 247 - 'Degree'
        5, 0, 0, 24, 24, 0,                    // 248 - 'Math Product'
        5, 0, 0, 16, 16, 0,                    // 249 - 'Short Dash'
        5, 48, 64, 255, 1, 1,                  // 250 - 'Square Root'
        5, 0, 31, 1, 1, 30,                    // 251 - 'Superscript n'
        5, 0, 25, 29, 23, 18,                  // 252 - 'Superscript 2'
        5, 0, 60, 60, 60, 60,                  // 253 - 'Centered Square'
        5, 255, 129, 129, 129, 255,            // 254 - 'Full Frame'
        0,                                     // 255
}
;

Nu de definities gedaan zijn kunnen we in de standaard setup() functie van de Arduino IDE het geheel initialiseren.
Hier wordt allereerst de drukknop ingang geïnitialiseerd.
Tevens wordt het eigen gemaakte font geladen via display.setFont(_font_die_numbers); zodat we de juiste dobbelsteen nummers gebruiken.

Vervolgens als een test laten wel alle dobbelsteen nummers van 1 t/m 6 (via een for-lus) eens op het display verschijnen waarna het display weer wordt leeg gemaakt.


void setup()
{
    // https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/
    pinMode(BUTTON1, INPUT_PULLUP);

    initDebug(DEBUG_ENABLED);
    display.init(DISPLAY_ROWS, DISPLAY_COLUMNS);
    display.setFont(_font_die_numbers);

    display.text = "";

    for (size_t i = 0; i < 6; i++)
    {
        display.text = String(i+1);
        display.loop();
        delay(250);
    }
    delay(500);

    display.text = "0";
    display.loop();

}

Nu de initialisatie is gedaan kunnen we beginnen met het uitvoeren van het hoofdprogramma met standaard loop() functie om het alfabet op het display te projecteren.
Door gebruik van de A-Vision Arduino includes is dit erg eenvoudig geworden.
Met display.text wordt aangegeven welk nummer je wenst te tonen op het display, en daarna met de functie display.loop() wordt deze ook daadwerkelijk op het display weergegeven.
Er wordt eerst gecontroleerd of de drukknop is ingedrukt (dit geeft een waarde LOW terug).
Zolang dit wordt gedetecteerd wordt een willekeurig nummer gegenereerd van 1 tot 7 (dus exclusief de 7) en op het display weergegeven.


void loop()
{
    // https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
    if (digitalRead(BUTTON1) == LOW) {
        // https://www.arduino.cc/reference/en/language/functions/random-numbers/random/
        display.text = String(random(1,7));
        display.loop();
    }

}

/*******************************************************************************
*
* (c) 2021 Copyright A-Vision Software
*
* File description :        Arduino dot-matrix dies
*
* Created by       :        Arnold Velzel
* Created on       :        08-10-2021
*
*******************************************************************************/

// Definities
#define DEBUG_ENABLED           false // Output info via de seriële poort

// Aantal rijen displays (Voor de A-Vision ESP8266 learning board is dat 1)
#define DISPLAY_ROWS            1
// Aantal kolommen displays (Voor de A-Vision ESP8266 learning board is dat 1)
#define DISPLAY_COLUMNS         1
// Gebruikte display type (Voor de A-Vision ESP8266 learning board is dat MD_MAX72XX::PAROLA_HW)
#define DISPLAY_HARDWARE_TYPE   MD_MAX72XX::PAROLA_HW

// Digitale ingang voor de drukknop (Vrije keuze)
#define BUTTON1                 D6

// Includes
#include <avision_debug.h>
#include <avision_display.h>
// https://pjrp.github.io/MDParolaFontEditor -- maak je eigen font
#include "dies_font.h"

// Maak display object
AVision::dotmatrixDisplay display;

void setup()
{
    // https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/
    pinMode(BUTTON1, INPUT_PULLUP);

    initDebug(DEBUG_ENABLED);
    display.init(DISPLAY_ROWS, DISPLAY_COLUMNS);
    display.setFont(_font_die_numbers);

    display.text = "";

    for (size_t i = 0; i < 6; i++)
    {
        display.text = String(i+1);
        display.loop();
        delay(250);
    }
    delay(500);

    display.text = "0";
    display.loop();
}

void loop()
{
    // https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/
    if (digitalRead(BUTTON1) == LOW) {
        // https://www.arduino.cc/reference/en/language/functions/random-numbers/random/
        display.text = String(random(1,7));
        display.loop();
    }
}

Breidt dit voorbeeld project uit zodat de ‘dobbelsteen’ nog even (5 seconden) blijft ‘doorrollen’ en langzaam tot stilstand komt.
Voor oplossing zie voorbeeld dobbelsteen-uitbreiding.

Door arduino