Nombres aléatoires : un D6 sur une matrice LED

génèrent des nombres Aléatoires est très simple. Pour cela, il existe la Fonction random().

Nous essayons juste une fois avec un petit Sketch, un Nombre généré et la série du Moniteur émet:

 

void setup() {   Serial.begin(9600);   Serial.print("nombre Aléatoire entre 1 et 6: ");   Serial.print(random(1,7));   Serial.print("\n");
}
void loop() {   // put your main code here to run repeatedly:
}  

 

Nous invitons le Sketch sur nos Nano, ouvrir la série du Moniteur, assurez-9600 Baud, et nous nous réjouissons de:

Nombre aléatoire entre 1 et 6: 2

, C'était pas si difficile? Pourquoi écrire M. Neumann faire un Blog?

Si vous avez maintenant le Bouton de Réinitialisation à Quelques reprises exprime, il devient évident:

nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6: 2

Dans la Documentation officielle, bien sûr, est que le moyen d'randomSeed() doit initialiser le générateur de nombres aléatoires, et recommande de le faire à l'aide analogRead() le code Pin lire la n'est pas connecté.

Par Hasard, je suis à la Bibliothèque TrueRandom de sirleech rencontré. Celle-ci offre une Fonction TrueRandom.random(), qui, comme la random() Fonction peut être appelée, mais sans plus de Préparation fiables nombres Aléatoires fournit.

La Bibliothèque, il est chez GitHub soushttps://github.com/sirleech/TrueRandom

Nous adaptons donc nos Sketch un peu:

 

 

#include <TrueRandom.h> // La Bibliothèque de l'intégrer
void setup() {   Serial.begin(9600);   Serial.print("nombre Aléatoire entre 1 et 6: ");   Serial.print(random(1,7));   Serial.print("\n");   Serial.print("nombre Aléatoire entre 1 et 6 avec TrueRandom: ");   Serial.print(TrueRandom.random(1,7));    Serial.print("\n");
}
void loop() {   // put your main code here to run repeatedly:
}

ce Sketch, nous invitons nos Nano, et voilà, il est maintenant, à chaque Redémarrage du système, un autre Nombre est généré:

nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6 avec TrueRandom: 2
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6 avec TrueRandom: 1
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6 avec TrueRandom: 4
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6 avec TrueRandom: 2
nombre Aléatoire entre 1 et 6: 2
nombre Aléatoire entre 1 et 6 avec TrueRandom: 6

 

TrueRandom mais a encore plus à offrir. Il permet ainsi à la Fonction TrueRandom.memfill(adresse, longueur), une zone de la mémoire à l'Adresse indiquée avec des nombres Aléatoires de le remplir.

Il suffit de MAC Adresses ou Uuid doit être généré.

Nous concluons maintenant64 Matrice à LED d'Affichageà nos Nano, en font un Dé.

La première modification dans le Blog de la de 7. Juin décrit le Fichier MD_MAX72xx_font.cpp comme suit:

3, 0x42, 0x7f, 0x40, // 49 - '1'
5, 0x72, 0x49, 0x49, 0x49, 0x46, // 50 - '2'
5, 0x21, 0x41, 0x49, 0x4d, 0x33, // 51 - '3'
5, 0x18, 0x14, 0x12, 0x7f, 0x10, // 52 - '4'
5, 0x27, 0x45, 0x45, 0x45, 0x39, // 53 - '5'
5, 0x3c, 0x4a, 0x49, 0x49, 0x31, // 54 - '6'

remplacer par:

8,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0, // 49 - '1'
8,0x3,0x3,0 x 0,0x18,0x18,0x0,0xC0,0xC0, // 50 - '2'
8,0x3,0x3,0 x 0,0x18,0x18,0x0,0xC0,0xC0, // 51 - '3'
8,0xC3,0xC3,0x0,0x0,0x0,0x0,0xC3,0xC3, // 52 - '4'
8,0xC3,0xC3,0x0,0x18,0x18,0x0,0xC3,0xC3, // 53 - '5'
8,0 xDB,0xDB,0x0,0x0,0x0,0x0,0xDB,0xDB, // 54 - '6'

 

Et pour Finir, nous ne lions pas les MD_MAX72xx et MD_Parola des Bibliothèques et de donner le Chiffre de la Matrice:

 

 

#include <TrueRandom.h>
#include <MD_MAX72xx.h>
#include <MD_Parola.h>
#include <SPI.h>

#define  MAX_DEVICES 1
#define CLK_PIN   13  // ou SCK
#define DATA_PIN  11  // ou MOSI
#define CS_PIN    10  // ou SS

// Connexion matérielle SPI
MD_Parola P = MD_Parola(CS_PIN, MAX_DEVICES);
#define  DÉLAI  100  // en millisecondes

nul configuration() {   Série.commencer(9600);   Série.imprimer("Nombre aléatoire entre 1 et 6:");   Série.imprimer(aléatoire(1,7));   Série.imprimer("\ n");   Série.imprimer("Nombre aléatoire entre 1 et 6 avec TrueRandom:");   uint8_t rnd = TrueRandom.aléatoire(1,7);   Série.imprimer(rnd);    Série.imprimer("\ n");   P.commencer();   P.imprimer(" ");   retard(500);   P.imprimer(rnd);    }

nul boucle() {   // mettez ici votre code principal, à exécuter de manière répétée:

}

 

Un nouveau numéro est maintenant généré et affiché pour chaque redémarrage (appuyez sur le bouton de réinitialisation).

Cube

 

 

 

Für arduinoProjekte für anfänger

1 commentaire

Peter Nohle

Peter Nohle

Hallo. Ich habe den Sketch an 3 Nanos probiert. Bei allen leuchtet nur alle 64 LEDs der Matrix. Als blutiger Anfänger habe ich jetzt im Code nix auffälliges entdeckt. Nach dem Upload des Sketches der fehlerfrei verläuft, blinken nach einem Reset auch kurz zwei Leds
auf dem Nano. Das heißt er arbeitet das Setup ab. Nur… Die Matrix bringt keine Änderung. Alle leuchten. Die cpp hab ich angepaßt. Was mache ich falsch?

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés