Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Mesin Bingo Arduino dengan Tampilan 7-Segmen Ukuran A4 DIY

Komponen dan persediaan

Papan Pasak
Buatan Ningbo Memenangkan papan Handycraft2 untuk Tampilan 7-Segmen dan 1 untuk Papan Skor
× 3
papan potong
pemotongan plastik abu-abu untuk digunakan sebagai Papan Skor
× 1
Strip LED digital 5 m WS2811 dengan 5050 Led
banyak vendor dan merek
× 1
5m/roll DC5V ws2812b 300led Individual Addressable 60leds/m 5050 RGB
banyak vendor dan produsen
× 1
Kabel audio
digunakan untuk koneksi antara Papan Skor dan tampilan 7-Segmen
× 1
Papan potong plastik tembus pandang
akan digunakan untuk font tampilan 7-Segmen
× 2
Papan potong abu-abu fleksibel
digunakan untuk sampul Papan Skor
× 1
Arduino UNO
× 1
Resistor 221 ohm
baca 220 Ohm
× 2
kapasitor
100 uF
× 2
saklar tombol tekan besar
sementara
× 1
tombol tekan kecil (generik)
× 1
Regulator Linier (7805)
× 1

Alat dan mesin yang diperlukan

Alat Umum &Perlengkapan pengujian
alat normal yang dibutuhkan untuk banyak proyek DIY

Tentang proyek ini

Saat berjalan di toko ACTION, saya menemukan trip LED digital dengan harga yang dapat diterima (termasuk adaptor daya 12V dan bahkan termasuk pengontrol dengan remote control IR). Saya memutuskan untuk membeli satu dan mulai memainkannya dengan tujuan untuk mengontrol strip LED dengan Arduino Uno dalam kasus saya.

Meskipun tidak disebutkan pada paket atau pada strip LED itu sendiri, segera saya menemukan bahwa ini adalah jenis strip dengan segmen tiga 5050 LED dengan satu driver WS2811 per 3 LED.

Saya menghubungkan strip ke Arduino Uno untuk bereksperimen dengannya menggunakan library Adafruit NeoPixel dan beberapa contoh kode seperti RGBW strandtest.

Saya mulai melakukan brainstorming dan mendapatkan ide untuk menggunakan perjalanan ini untuk membuat layar 7-segmen ukuran A4. Tujuh bagian strip seperti yang ditunjukkan di atas akan melakukan pekerjaan ditambah satu ekstra untuk Titik Desimal pada tampilan. Ini membuatnya efektif 8 segmen yang akan dikontrol hanya dari satu Pin keluaran Arduino dan ditenagai dengan adaptor 12 V yang sudah terdapat dalam paket ACTION.

Namun apa yang dapat Anda lakukan hanya dengan satu Tampilan 7-segmen?

Saya memutuskan untuk membuat 2 dan menggunakannya untuk membuat Mesin Bingo menampilkan angka acak antara 1 dan 75 setelah menekan tombol.

Langkah 1:Membuat Tampilan 7-Segmen

Keseluruhan proses pembuatan pajangan, adalah cerita yang cukup panjang, yang dapat saya uraikan dalam Tutorial terpisah. Versi singkat pembuatannya adalah sebagai berikut:

Kedua layar ukuran A4 dibuat dengan cara dan bahan konvensional. Saat menggunakan pemotong laser dan printer 3D, seluruh prosesnya akan berbeda dan mungkin lebih sederhana. Anda menemukan contoh yang cukup bagus di internet, mis. YouTube (https://learn.adafruit.com/ninja-timer-giant-7-segment-display/overview) dan Anda bahkan dapat membelinya yang sudah jadi.

Saya merasa tantangan dan menyenangkan untuk membuatnya sendiri..

Untuk strip LED saya menggunakan 16 bagian dari 3 LED yang masing-masing dipotong dari strip LED WS2811 dari ACTION.

Segmen ini dihubungkan dengan kabel solder ke +12V, GND dan Do dan Di dari strip. Anda dapat menemukan banyak tutorial di internet tentang cara melakukannya dengan benar.

Untuk perumahan saya menggunakan Peg Board yang tersedia dan terjangkau dari toko ACTION setempat.

Bagian depan rumah yang baru terbuat dari bahan talenan transparan berwarna putih dari IKEA.

Sebuah template digunakan untuk memotong segmen dari lapisan yang dicat di atas papan (primer hitam).

Kabel audio murah (juga dari ACTION) digunakan untuk menghubungkan tampilan 7_segment hanya dengan 3 kabel (12V, GND, dan Data masuk) ke Arduino melalui resistor 220Ohm.

Saya memodifikasi casingnya untuk memudahkan pemasangan konektor audio.

Langkah 2:Membuat Papan Skor

Saya juga memutuskan untuk membuat tampilan papan skor yang akan menampilkan angka acak yang dihasilkan, tombol tekan untuk menghasilkan angka baru, dan "tombol bingo" untuk mengakhiri dan memulai babak baru.

Papan skor dibuat menggunakan papan pasak ACTION yang sama dengan housing (dijelaskan di atas). Pelat penutup terbuat dari talenan abu-abu tua (sekali lagi dari ACTION) dengan lubang yang dibor seperti dapat dilihat di atas. Penutup atas terbuat dari talenan IKEA. Di antara 2 lapisan tersebut terdapat cetakan pada kertas foto dan foil pelindung transparan.

Di dalam, ditempelkan di bagian belakang talenan terdapat 5 bagian dari 15 LED WS2812 masing-masing ditambah 3 * 8 bagian strip LED untuk menerangi kata "BINGO".

Langkah 3:Membuat Perangkat Lunak

Eksperimen awal dengan pengkodean dan pemutaran dengan strip LED dan tampilan 7-Segmen dilakukan menggunakan Arduino dan papan tempat memotong roti tanpa solder.

Tombol tekan besar sesaat terhubung ke GND dan ke digital IO pin 2 dari Uno. Menekan tombol memulai pembuatan nomor acak baru. Setelah "Pertunjukan Cahaya 1" singkat, nomor acak ditampilkan pada dua tampilan 7 segmen.

Tabel yang digunakan untuk membuat angka pada tampilan 7 segmen adalah sebagai berikut:

Untuk membantu menyusun Sketsa Arduino, saya membuat beberapa diagram alur sederhana dengan bantuan ClickCharts versi gratis untuk penggunaan non-komersial (berfungsi dengan baik setelah Anda terbiasa dengan beberapa batasan bawaan)

Nomor yang dihasilkan disimpan dalam array yang disebut SCORE[] yang terdiri dari 75 posisi yang diisi dengan "0" atau "1." Jika nomor baru yang dihasilkan sudah ada, secara otomatis nomor acak baru akan dibuat.

Nomor baru menyala di papan skor (dengan 75 nomor) dan pada saat yang sama nomor baru ditampilkan pada tampilan 7-Segmen

Papan skor terus menunjukkan semua angka acak yang dihasilkan sampai Bingo yang valid tercapai. Tombol tekan yang disebut "BINGO" akan mengakhiri putaran dengan "BingoLightShow" singkat

Selanjutnya array SCORE dihapus dan babak baru dapat dimulai.

Putaran Baru juga dapat dimulai dengan mengaktifkan sakelar daya (memutuskan daya 12V) yang akan MENGATUR ULANG Arduino dan memulai ulang program.

Langkah 4:Elektronik

Pengisi daya 12V, 2A memasok daya ke Mesin Bingo yang lengkap.

Input 12V pada colokan listrik Arduino telah dimodifikasi untuk mengaktifkan sakelar daya (hidup - mati).

Daya 5 V untuk 99 LED (75 + 24) yang digunakan untuk papan skor berasal dari daya input 12V melalui pengatur tegangan 7805 (yang hampir dapat menangani arus yang ditarik oleh strip LED WS2812); menginstal Heatsink atau versi daya disarankan (dalam pembaruan saya mungkin akan menambahkan transistor daya untuk menangani daya 5V yang dibutuhkan terutama dikonsumsi oleh 99 LED WS2812 di dalam papan skor. Saya telah membuat sketsa untuk Arduino sedemikian rupa bahwa permintaan daya papan skor sedang.

Tata letak dalam diagram Fritzing terlihat sebagai berikut:

Perhatikan bahwa baik bagian LED 7 segmen (12V) serta strip LED yang menerangi angka 1 -75 pada papan skor Bingo dikendalikan oleh satu dan pin keluaran yang sama (6) dari Uno.

Dikembangkan dan diproduksi oleh Pierre Pennings (November 2018).

Kode

  • BINGO_Machine_rev04.ino
BINGO_Machine_rev04.inoArduino
Sketsa untuk Mesin BINGO dengan Arduino Uno dan Tampilan 7-Segmen berukuran 2 A4 dengan Papan Skor Elektronik
/* Ini adalah kode untuk Mesin Bingo yang dikembangkan dan diproduksi oleh Pierre Pennings (November 2018) Mesin menggunakan 2 DIGIT A4 besar display 7-Segment berukuran dibuat dengan strip LED WS2811 bertenaga 12V (pasangan 3 LED dengan 1 chip kontrol) Setiap segmen yang terdiri dari 3 LED diberi alamat hanya dengan satu alamat kontrol Setiap display memiliki 7 segmen ditambah titik desimal (DP) Angka disajikan pada 2 tampilan berjalan dari 1 hingga 75, seperti dalam permainan BINGO normal Tombol tekan sesaat terhubung ke GND dan ke pin IO digital 6 dari ARDUINO UNO Menekan tombol memulai pembuatan Nomor acak Baru Setelah beberapa saat "Light Show 1" nomor acak ditampilkan pada dua tampilan 7-Segmen. Nomor yang dihasilkan juga disimpan dalam Array yang disebut SCORE[] yang terdiri dari 75 posisi baik diisi dengan "0" atau "1" Jika Nomor Baru yang dihasilkan sudah ada, secara otomatis nomor acak baru ber dihasilkan Semua elektronik termasuk ARDUINO UNO sendiri telah dibangun di Papan Skor yang terpisah Tampilan 75 angka dinyalakan dengan satu chip pengontrol WS2812B dengan satu LED SMD5050 masing-masing (ditenagai dengan 5 V) Papan Skor menunjukkan semua angka acak yang dihasilkan hingga BINGO yang valid tercapai Tombol tekan yang disebut "BINGO" akan mengakhiri putaran dengan "BingoLightShow" singkat Selanjutnya susunan SCORE dihapus dan putaran baru dapat dimulai Putaran Baru juga dapat dimulai dengan mengaktifkan sakelar daya (memutuskan sambungan Daya 12V) yang akan MENGATUR ULANG ARDUINO dan memulai kembali program Pengisi daya 12V, 2A memasok daya ke mesin BINGO lengkap Input 12 V pada colokan daya ARDUINO telah dimodifikasi untuk mengaktifkan sakelar daya (on-off) Daya 5 V untuk 99 LED (75 + 24) yang digunakan untuk Papan Skor berasal dari daya input 12V melalui regulator tegangan 7805 (yang hampir dapat menangani arus yang ditarik oleh strip LED WS2812); menginstal Heatsink atau versi daya dianjurkan Kode ini dilisensikan di bawah lisensi GPL3+.*/#include const int NewnumberButton =2; // Pin 2 IO Digital terhubung ke tombol Nomor Baru dengan kontak yang biasanya terbuka// Pin 2 akan digerakkan dengan resistor pull-up bawaan untuk menjadikannya normal TINGGI// Sakelar akan menarik pin ke ground sesaat. // Pada transisi tinggi -> rendah dengan menekan tombol, program akan menghasilkan New Number.const int BingoButton =4; // Pin 4 IO Digital terhubung ke tombol BINGO dengan kontak yang biasanya terbuka// Pin 4 akan digerakkan dengan resistor pull-up bawaan untuk menjadikannya normal TINGGI// Tombol BINGO akan menarik pin ke ground/ / Pada transisi tinggi -> rendah dengan menekan tombol BINGO, Lightshow akan dimulai dan setelah itu program akan berakhir.const int LedPin =6; // Digital IO pin 6 terhubung ke Data In (DI) strip LED WS 2811 melalui resistor 220 Ohmint Newnumber =1;int Bingo =1;int SCORE[76];int count =0;long randNumber;int NUMBER =0;int NW_NUMBER =0;int TENSNUMBER =0;int UNITNUMBER =0;#define NUM_LEDS 99 // 16 pertama digunakan untuk mengontrol (WS 2811) LED pada tampilan 7-segmen 2 digit//(dua kali 8 segmen pada dua tampilan); angka 0 -7 untuk angka UNIT// Angka 8 - 15 untuk angka TENS ( angka 7 dan 15 adalah DP setiap DIGIT)// untuk menampilkan angka pada Tampilan Papan Skor dan mengontrol LED (WS2812) alamat 16 hingga 99 digunakan// 24 LED digunakan untuk menerangi huruf BINGO dan 75 untuk papan skor untuk mengaktifkan tampilan nomor BINGO yang dihasilkan;// semua LED akan dikontrol hanya dengan satu kabel! dari LED_PIN 6// sebenarnya dua jenis strip LED dikendalikan (secara paralel)dari LedPin 6 yang sama melalui dua resistor 220 Ohm#mendefinisikan BRIGHTNESS 250 // mengatur kecerahan LED ke maksimum (255) Adafruit_NeoPixel strip =Adafruit_NeoPixel(NUM_LEDS, LedPin, NEO_GRB + NEO_KHZ800);/*Array 2 dimensi dengan NUMBER untuk alokasi segmen, setiap NUMBER memiliki kolomnya sendiri------------------ ---------------------------------- 8 0 13 9 5 1 14 6 12 10 4 2 11 15 3 7 Digit 2 Digit 1 Puluhan Satuan 7 dan 15 mewakili Desimal Points (DP) */// 0 1 2 3 4 5 6 7 8 9 byte SEGMENTarray [8][10] ={ {1,0,1,1,0 ,1,1,1,1,1,}, //segmen 0 atau 8 {1,1,1,1,1,0,0,1,1,1,}, //segmen 1 atau 9 {1 ,1,0,1,1,1,1,1,1,1,}, //segmen 2 atau 10 {1,0,1,1,0,1,1,0,1,1,}, //segmen 3 atau 11 {1,0,1,0,0,0,1,0,1,0,}, //segmen 4 atau 12 {1,0,0,0,1,1,1,1, 0,1,1,}, //segmen 5 atau 13 {0,0,1,1,1,1,1,0,1,1,}, //segmen 6 atau 14 {0,0,0, 0,0,0,0,0,0,0,}, //segmen 7 atau 15 };byte color_scheme[] ={ 50, 100, 200, 100, 150, 250, 150, 200, 50, 200, 250, 100, 250, 50, 150, 0, 100, 200, 50, 150, 250, 100, 200, 0, 150, 250, 50, 200, 0, 100, 250, 50, 200, 0, 100, 250, 50, 150, 0, 250, 0, 0};///////////////////////////////////// ///////////////////////// kode pengaturan berikut, akan dijalankan sekali setelah "Power On" atau setelah RESETvoid setup() { Serial. mulai (9600); pinMode(LedPin, OUTPUT); // inisialisasi LedPin 6 sebagai output:pinMode(NewnumberButton, INPUT_PULLUP); // menginisialisasi pin tombol tekan 2 sebagai input:pinMode(BingoButton, INPUT_PULLUP); // inisialisasi pin bingobutton 4 sebagai input:strip.setBrightness(BRIGHTNESS); strip.mulai(); // Inisialisasi semua LED ke strip.show(); for (int t =16; t <24; t++) { strip.setPixelColor(t, 0, 0, 250); // Setelah Power On tampilkan kata BINGO di Papan Skor dengan karakter Biru strip.show(); // perhatikan bahwa urutan warna strip LED WS2812 adalah R,G,B } for (count =0; count <76; count++) { // masukkan semua data ke dalam Array SCORE ke 0 (Posisi array dijalankan dari 0 sampai 75; posisi nol tidak digunakan) SCORE[count] =0; } /*for (int n =0; n <10; n++) // kode ini dapat digunakan untuk menguji semua angka dari 0 - 9 pada dua tampilan 7-Segmen (2 DP tidak diuji) { for ( int s =0; s <8; s++) { int z =SEGMENTarray [s][n]; int i =0 + s; int j =8 + s; strip.setPixelColor(i, z*250, 0, z*50); strip.setPixelColor(j, z*250, 0, z*50); strip.tampilkan(); Serial.print("["); Serial.print(n); Serial.print("]"); Serial.print("["); Serial.print(s); Serial.print("] =");Serial.print(z); Serial.print(""); } penundaan (1500); Serial.println(); }*/}////////////////////////////////////////////////////////////// ///// kode loop yang mengikuti, akan berjalan berulang kali sampai "Power Off" atau RESETvoid loop() { Newnumber =digitalRead(NewnumberButton); if (Jumlah Baru ==LOW) // tidak perlu penundaan singkat untuk menghilangkan efek pantulan tombol karena pada awalnya LOW, loop berjalan { randomSeed(millis()); lakukan { GENERATENEWNUMBER (75); // menghasilkan NW_NUMBER antara dalam rentang dari 1 hingga 75 } // jika NW_NUMBER sudah ada:buat lagi NW_NUMBER while (NW_NUMBER ==SCORE[NW_NUMBER] * NW_NUMBER); SKOR[NW_NUMBER] =1; // letakkan 1 di Array pada posisi NW_NUMBER NUMBER =NW_NUMBER; TENSNUMBER =int (NUMBER / 10); // menghitung nilai desimal NW_NUMBER dan nilai satuan UNITNUMBER =NW_NUMBER - (10 * TENSNUMBER); CLEARDISPLAY(); LIGHTSHOW1 (4, 100); // mulai lightshow1 CLEARDISPLAY(); //PRINTNUMBERSERIAL(); // cetak NW_NUMBER yang dihasilkan ke monitor serial dan tampilkan konten baru dari array SCORE DISPLAYNUMBER (TENSNUMBER, UNITNUMBER); DISPLAYSCORE (); } else { Bingo =digitalRead(BingoButton); if (Bingo ==LOW) delay (3000); // penundaan 3 detik untuk menghilangkan efek pantulan dan penekanan tombol yang tidak disengaja karena if (Bingo ==LOW) { BINGOLIGHTSHOW (); for (count =0; count <76; count++) // masukkan semua data ke dalam Array SCORE kembali ke 0 dan putaran BINGO baru dapat dimulai { SCORE[count] =0; } } }}//////////////////AKHIR LOOP///////////////////////////////////// //////////////////////////////////////////////////////////// /////////////////////////////////// Selanjutnya ikuti Fungsi spesifik yang dipanggil dari dalam loopvoid LIGHTSHOW1 ( int durasi, uint8_t tunggu) {untuk (int t =16; t <24; t++) { strip.setPixelColor(t, 0, 0, 0); // matikan BINGO Leds dengan karakter Biru seperti yang dipasang pada set up strip.show(); } for (int k =0; k   

Suku cadang dan penutup khusus

tekening_gaten_patroon_puntjes_xgW76A8Jmw.svgUntuk digunakan sebagai Template untuk bagian depan tampilan

Skema

bingo_sketch_66WRdQITE2.fzz

Proses manufaktur

  1. Membuat Mesin Tulis Pekerjaan Rumah DIY di Rumah
  2. Jam IV9 Numitron DIY paling sederhana dengan Arduino
  3. Voltmeter DIY dengan Arduino dan Tampilan Nokia 5110
  4. Roda Pengukur Sederhana DIY dengan Rotary Encoder
  5. Pemantau Kualitas Udara DIY dengan Sensor Sharp GP2Y1010AU0F
  6. Game Pong Arduino 1D DIY dengan WS2812 LED Strip
  7. Mesin CNC
  8. UPS yang Sesuai HID dengan Arduino
  9. Ide DIY dengan RFID
  10. Mesin Kopi Cerdas dengan Arduino dan Bluetooth