Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator

Onderdelen en Benodigdheden

Arduino UNO 1
Breadboard 1
16x2 LCD-display (wit op blauw, HD44780-compatibel) 1
Drukknop (met breakout/schakelbord) 1
Potentiometer (10kΩ, voor LCD-contrast) 1
Draadjes Verscheidene
USB-kabel 1

Over dit Project

Een leuke beginnerproject: een digitale dobbelsteen die twee willekeurige getallen (1-6) genereert wanneer je op de knop drukt. Het LCD toont eerst "Rolling dice..." en na 4 seconden de twee dobbelstenenwaarden. Idee: vervang saaie fysieke dobbelstenen door een elektronische versie!

Aansluitschema

  • LCD RS → D7, EN → D8, D4→D9, D5→D10, D6→D11, D7→D12
  • LCD VSS → GND, VDD → 5V, V0 → potmeter middenpoot (uitersten aan 5V/GND)
  • LCD A (backlight +) → 5V (via 220Ω), K (backlight -) → GND
  • Drukknop signaal → D2, andere kant → GND (interne pull-up gebruikt in code)

Code


#include <LiquidCrystal.h>

long randNumber;
int Led = 13;
int Shock = 2; // Drukknop op pin 2
int val;

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

byte customChar[] = {
  B00000,
  B00000,
  B11111,
  B11001,
  B10101,
  B10011,
  B11111,
  B00000
};

void setup() {
  lcd.begin(16, 2);
  lcd.createChar(0, customChar); // Aangepast teken (dobbelsteen?)
  lcd.home();
  pinMode(Led, OUTPUT);
  randomSeed(analogRead(0)); // Ruis op A0 als entropy-bron
  pinMode(Shock, INPUT_PULLUP); // Interne pull-up activeren
  lcd.write(byte(0));
  lcd.print("Digital dice");
  lcd.write(byte(0));
  delay(1000);
}

void loop() {
  val = digitalRead(Shock); // LOW = ingedrukt (naar GND)
  if (val == LOW) {
    lcd.clear();
    lcd.print("Rolling dice...");
    delay(4000);
    lcd.clear();
    lcd.setCursor(0, 0);
    randNumber = random(1, 7); // 1 tot en met 6
    lcd.print("Dice 1 = ");
    lcd.print(randNumber);
    lcd.setCursor(0, 1);
    randNumber = random(1, 7);
    lcd.print("Dice 2 = ");
    lcd.print(randNumber);
  }
  delay(150); // Debounce
}

Uitleg

  • randomSeed(analogRead(0)) zorgt voor betere willekeurigheid.
  • INPUT_PULLUP gebruikt de interne pull-up weerstand (knop tussen pin en GND).
  • Een aangepast karakter (byte 0) wordt getoond als decoratie.
  • Na 4 seconden "rollen" worden twee willekeurige getallen getoond.

Uitbreidingsideeën

  • Meer dobbelstenen toevoegen
  • Geluuidje bij "rollen" (piezo)
  • Animatie tijdens rollen (snel wisselende getallen)
  • Verschillende dobbelsoorten (d4, d8, d10, d20 voor RPG's)

Productieproces

  1. TinyML Taaldetector met Edge Impulse op Arduino Nano 33 BLE Sense
  2. Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
  3. Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
  4. Find Me: Slimme Item Locator met Arduino en Bluetooth
  5. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  6. Realtime afstandsmeting met Arduino Sonar & Processing visualisatie
  7. Een audio-reactieve bureaulamp bouwen met Arduino Nano
  8. NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
  9. Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
  10. Arduino 101: Bouw een teller met DHT11 sensor & LCD display
  11. Bouw een Arduino RGB Kleur Mixer – Stap-voor-stap Handleiding