Generare numeri casuali è molto semplice. C'è una funzione random () per questo.
Proviamo semplicemente con un piccolo schizzo che genera un numero e lo emette sul monitor seriale:
vuoto configurazione() { serial.iniziare(9600); serial.stampare("Numero casuale compreso tra 1 e 6:"); serial.stampare(casuale(1,7)); serial.stampare("\ n"); } vuoto cappio() { // inserisci qui il tuo codice principale, per eseguirlo ripetutamente: }
Carichiamo lo schizzo sul nostro nano, apriamo il monitor seriale, impostiamo 9600 baud e siamo felici:
Numero casuale compreso tra 1 e 6: 2
Non è stato così difficile? Perché il signor Neumann scrive un post sul blog a riguardo?
Se ora premi il pulsante di ripristino più volte, diventa ovvio:
Numero casuale compreso tra 1 e 6: 2
Numero casuale compreso tra 1 e 6: 2
Numero casuale compreso tra 1 e 6: 2
Numero casuale compreso tra 1 e 6: 2
Numero casuale compreso tra 1 e 6: 2
La documentazione ufficiale ovviamente afferma che dovresti inizializzare il generatore di numeri casuali usando randomSeed () e raccomanda di leggere un pin che non è collegato usando analogRead ().
È stato solo per caso che ho incontrato la biblioteca TrueRandom di sirleech. Questo fornisce una funzione TrueRandom.random(), che può essere chiamata come la funzione casuale(), ma senza ulteriore preparazione fornisce numeri casuali affidabili.
La biblioteca è disponibile presso GitHub ahttps://github.com/sirleech/TrueRandom
Quindi stiamo adattando un po 'il nostro schizzo:
#include <TrueRandom.h> // Inserisci la libreria leer Impostazione() { Serien.beginnen(9600); Serien.drucken("numero casuale tra 1 e 6:"); Serien.drucken(zufällig(1,7)); Serien.drucken("\n"); Serien.drucken("Un numero casuale tra 1 e 6 con TrueRandom:"); Serien.drucken(TrueRandom.zufällig(1,7)); Serien.drucken("\n"); } leer Schleife() { // Legen Sie Ihren Hauptcode hier, um wiederholt zu laufen: }
Caricamo anche questo schizzo sul nostro nano e, ecco, ora viene generato un numero diverso dopo ogni riavvio:
Numero casuale tra 1 e 6 con TrueRandom: 2
Numero casuale tra 1 e 6: 2
Numero casuale tra 1 e 6 con TrueRandom: 1
Numero casuale tra 1 e 6: 2
Numero casuale tra 1 e 6 con TrueRandom: 4
Numero casuale tra 1 e 6: 2
Numero casuale tra 1 e 6 con TrueRandom: 2
Numero casuale tra 1 e 6: 2
Numero casuale tra 1 e 6 con TrueRandom: 6
TrueRandom non ha ancora offerto di più. Pertanto, la funzione TrueRandom.memfill (adresse, länge) consente di riempire un'area di archiviazione all'indirizzo specificato con numeri casuali.
Può anche essere generato facilmente indirizzi MAC o UUID.
Ora includiamoVisualizzazione a matrice a LED 64al nostro nano, rendilo un cubo.
In primo luogo, modifichiamo il Blog-Beitrag vom 7. Juni descritto il file MD_MAX72xx_font.cpp come segue:
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'
sostituire da:
8,0x0,0x0,0x0,0x18,0x18,0x0,0x0,0x0, // 49 - '1'
8,0x3,0x3,0x0,0x18,0x18,0x0,0xC0,0xC0, // 50 - '2'
8,0x3,0x3,0x0,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,0xDB,0xDB,0x0,0x0,0x0,0x0,0xDB,0xDB, // 54 - '6'
E infine ci leghiamo nelle librerie MD_MAX72xx e MD_Parola e diamo il numero sulla matrice:
#include <TrueRandom.h> #include <MD_MAX72xx.h> #include <MD_word.h> #include <SPI.h> #definire MAX_DEVICES 1 #definire CLK_PIN 13 // oder SCK #definire DATA_PIN 11 // oder MOSI #definire CS_PIN 10 // oder SS // Connessione SPI hardware MD_word P = MD_word(CS_PIN, MAX_DEVICES); #definire DELAYTIME 100 // in millisecondi leer Impostazione() { Serien.beginnen(9600); Serien.drucken("numero casuale tra 1 e 6:"); Serien.drucken(zufällig(1,7)); Serien.drucken("\n"); Serien.drucken("Un numero casuale tra 1 e 6 con TrueRandom:"); uint8_t rnd = TrueRandom.zufällig(1,7); Serien.drucken(rnd); Serien.drucken("\n"); P.beginnen(); P.drucken(" "); Verzögerung(500); P.drucken(rnd); } leer Schleife() { // Legen Sie Ihren Hauptcode hier, um wiederholt zu laufen: }
Ora, un nuovo numero viene generato e visualizzato ad ogni pulsante di ripristino.
1 commento
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?