Elektronická kostka s tlačítkem a 7segmentovým displejem

Tento projekt představuje elektronickou kostku, která po stisknutí tlačítka zobrazuje náhodné číslo od 1 do 6 na 7segmentovém displeji. Po stisknutí tlačítka začnou rychle blikající čísla, která postupně zpomalují a zastaví se na jednom náhodném čísle.

Součástky:

  • Arduino (Uno R3, může být i klon)
  • 7segmentový displej (společná katoda)
  • Tlačítko
  • Rezistory: 220Ω nebo 330Ω (Pro každý segment jeden)
  • Propojovací vodiče
  • Nepájivé pole

Zapojení (schéma):

Kód pro Arduino:

// Definice pinů pro každý segment 7segmentového displeje
const int segmentA = 3;
const int segmentB = 4;
const int segmentC = 5;
const int segmentD = 6;
const int segmentE = 7;
const int segmentF = 8;
const int segmentG = 9;

// Pin pro tlačítko
const int buttonPin = 2;

// Proměnné pro tlačítko
int buttonState = 0;
bool isRolling = false;

void setup() {
  // Nastavení segmentů jako výstupy
  pinMode(segmentA, OUTPUT);
  pinMode(segmentB, OUTPUT);
  pinMode(segmentC, OUTPUT);
  pinMode(segmentD, OUTPUT);
  pinMode(segmentE, OUTPUT);
  pinMode(segmentF, OUTPUT);
  pinMode(segmentG, OUTPUT);

  pinMode(buttonPin, INPUT_PULLUP);

  // Spuštění náhodného generátoru
  randomSeed(analogRead(0));
}

void loop() {
  // Kontrola stisknutí tlačítka
  buttonState = digitalRead(buttonPin);

  // Pokud je tlačítko stisknuto a už se neroluje, zahájí rolování
  if (buttonState == LOW & !isRolling) {
    isRolling = true;
    rollDice();  // Spustí funkci pro "házení kostky"
  }
}

// Funkce pro simulaci "házení kostky"
void rollDice() {
  int randomNumber;
  int delayTime = 50; // Počáteční rychlost "házení" (ms)

  // Opakuje smyčku, kde se rychlost postupně snižuje, aby se kostka "zastavila"
  for (int i = 0; i < 20; i++) {
    randomNumber = random(1, 7);     // Generuje náhodné číslo mezi 1 a 6
    displayNumberOnSegment(randomNumber);  // Zobrazí číslo na displeji
    delay(delayTime); // Čeká, než zobrazí další číslo

    delayTime += 15; // Zvyšuje prodlevu, aby simuloval zpomalování
  }

  isRolling = false;  // Rolování je dokončeno
}

// Funkce pro zobrazení čísla na 7segmentovém displeji
void displayNumberOnSegment(int number) {
  // Vypnutí všech segmentů před zobrazením nového čísla
  digitalWrite(segmentA, LOW);
  digitalWrite(segmentB, LOW);
  digitalWrite(segmentC, LOW);
  digitalWrite(segmentD, LOW);
  digitalWrite(segmentE, LOW);
  digitalWrite(segmentF, LOW);
  digitalWrite(segmentG, LOW);

  // Zapnutí správných segmentů podle čísla
  switch (number) {
    case 1:
      digitalWrite(segmentB, HIGH);
      digitalWrite(segmentC, HIGH);
      break;
    case 2:
      digitalWrite(segmentA, HIGH);
      digitalWrite(segmentB, HIGH);
      digitalWrite(segmentD, HIGH);
      digitalWrite(segmentE, HIGH);
      digitalWrite(segmentG, HIGH);
      break;
    case 3:
      digitalWrite(segmentA, HIGH);
      digitalWrite(segmentB, HIGH);
      digitalWrite(segmentC, HIGH);
      digitalWrite(segmentD, HIGH);
      digitalWrite(segmentG, HIGH);
      break;
    case 4:
      digitalWrite(segmentB, HIGH);
      digitalWrite(segmentC, HIGH);
      digitalWrite(segmentF, HIGH);
      digitalWrite(segmentG, HIGH);
      break;
    case 5:
      digitalWrite(segmentA, HIGH);
      digitalWrite(segmentC, HIGH);
      digitalWrite(segmentD, HIGH);
      digitalWrite(segmentF, HIGH);
      digitalWrite(segmentG, HIGH);
      break;
    case 6:
      digitalWrite(segmentA, HIGH);
      digitalWrite(segmentC, HIGH);
      digitalWrite(segmentD, HIGH);
      digitalWrite(segmentE, HIGH);
      digitalWrite(segmentF, HIGH);
      digitalWrite(segmentG, HIGH);
      break;
  }
}

Jak to funguje:

Po stisknutí tlačítka Arduino začne zobrazovat náhodná čísla od 1 do 6 v rychlém sledu, což vytváří „házení kostky“. Poté se čísla zpomalí a nakonec se zastaví na jednom náhodném čísle. Toho je dosaženo generováním náhodných čísel ve smyčce, přičemž se postupně zvyšuje časové zpoždění mezi jednotlivými čísly.

Další podobné články

ROBOTICKÉ RAMENO

Stavebnice obsahuje všechny potřebné díly na sestavení robotnického ramene včetně spojovacího materiálu, pouze je nutné dokoupit čtyři kusy MIKRO SERV SG90. Dále je nutné dokoupit řídící jednotku já jsem použil domácí zásoby ARDUINO NANO a pro něho pak modul ARDUINO NANO IO SHIELD pro jednoduchost zapojení. Díly pro sestavení ramene jdou dobře tzv. vylamovat „vypadávají skoro sami. K servům pokud použijete nové tak doporučuji je před montáží odzkoušet zda jsou funkční v plném rozsahu tj. od 0° do 180°, po namontování a zjištění že servo nefunguje to pak opravdu dost zahýbá s nervy. 

Electronic TiltMaze

Cílem tohoto projektu je vytvoření jednoduchého ovládacího systému, který umožňuje naklápění dvou servomotorů pomocí analogového joysticku. Platforma řízená servomotory může simulovat pohyb například v ose X a Y — tedy naklánění doleva/doprava a dopředu/dozadu. Tento systém může sloužit jako základ pro různé aplikace:

- Manuální ovládání kamery nebo senzoru (např. na pohyblivé konstrukci nebo robotovi)
- Interaktivní ovládací panel pro školní projekty nebo herní ovladač