Números aleatorios: un D6 en una matriz LED

Números de azar trata engendrarse totalmente simplemente. Por ello hay la función random ().

Lo probamos simplemente una vez de con un sketch pequeño que engendra un número y distribuye en el monitor en serie:

 

void Setup() {   Serial.begin(9600);   Serial.print("El número de azar entre 1 y 6:");   Serial.print(random(1,7));   Serial.print("\n");
}
void loop() {   //put your Meno el código here, to run repeatedly:
}  

 

Cargamos el sketch en nuestro Nano, abrimos el monitor en serie, ponemos 9600 Baud, y nos alegramos:

Número de azar entre 1 y 6: 2

¿A pesar de todo nada era tan pesado? ¿Por qué el señor Neumann escribe con eso una Blog contribución?

Si se ahora Reset-Taster una pareja aprieta una vez esto se pone manifiesto:

Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6: 2

En la documentación oficial está natural que mediante randomSeed () el generador de números de azar debía inicializar, y recomienda con eso terminar de leer Pin mediante analogRead () él no está ligado.

Sólo por casualidad he empujado en la biblioteca TrueRandom de sirleech. Éste ofrece una función TrueRandom.random () que puede ser llamada como random () la función, sin embargo sin otra preparación entrega números de azar seguros.

Hay la biblioteca en GitHub bajohttps://github.com/sirleech/TrueRandom

Adaptamos nuestro sketch pocos:

 

 

#include <TrueRandom.h>//La biblioteca integran
void Setup() {   Serial.begin(9600);   Serial.print("El número de azar entre 1 y 6:");   Serial.print(random(1,7));   Serial.print("\n");   Serial.print("El número de azar entre 1 y 6 con TrueRandom:");   Serial.print(TrueRandom.random(1,7));    Serial.print("\n");
}
void loop() {   //put your Meno el código here, to run repeatedly:
}

Cargamos también este sketch en nuestro Nano, y véase allí, esto un otro número es engendrado ahora después de cada nueva salida:

Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6 con TrueRandom: 2
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6 con TrueRandom: 1
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6 con TrueRandom: 4
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6 con TrueRandom: 2
Número de azar entre 1 y 6: 2
Número de azar entre 1 y 6 con TrueRandom: 6

 

Sin embargo TrueRandom tiene que ofrecer aún más. Así la función TrueRandom.memfill (la dirección, mucho tiempo) permite un área de almacén en la dirección indicada con números de azar a befüllen.

Direcciones MAC o UUIDs pueden ser engendradas también simplemente.

Ahora emparedamos64ta matriz LED el displayen nuestro Nano en, hacen de ello un cubo.

Como primero modificamos en Blog contribución del 7 de junio describían el fichero MD_MAX72xx_font.cpp como sigue:

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'

sustituyen por:

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'

 

Y al fin integramos MD_MAX72xx y bibliotecas MD_Parola, y distribuimos el número en la matriz:

 

 

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

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

//Hardware SPI connection
MD_Parola P = MD_Parola(CS_PIN, MAX_DEVICES);
#define  DELAYTIME  100  //en milliseconds

void Setup() {   Serial.begin(9600);   Serial.print("El número de azar entre 1 y 6:");   Serial.print(random(1,7));   Serial.print("\n");   Serial.print("El número de azar entre 1 y 6 con TrueRandom:");   uint8_t rnd = TrueRandom.random(1,7);   Serial.print(rnd);    Serial.print("\n");   P.begin();   P.print(" ");   delay(500);   P.print(rnd);    }

void loop() {   //put your Meno el código here, to run repeatedly:

}

 

Ahora apretará con cada nueva salida (Reset-Taster) un nuevo número de modo engendrado e indicado.

Cubo

 

 

 

Para arduinoProyectos para principiantes

1 comentario

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?

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas