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

Matriks LED 8x8 dengan Teks Berjalan Bluetooth – Proyek Arduino

Komponen dan Perlengkapan

Alat dan Mesin yang Diperlukan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Setelah beberapa percobaan untuk membuat teks berjalan pada matriks 8x8, saya menemukan panduan yang paling lengkap di halaman Embedded Lab: https://embedded-lab.com/blog/portable-bluetooth-enabled-scrolling-led-matrix-display-part-1/.

Perangkat ini berisi Arduino nano, modul Bluetooth untuk menerima data dari smartphone, dan 8 matriks LED 8x8 yang dikemudikan oleh MAX7219.

Berbeda dengan yang ada di sana, saya menggunakan modul matriks 8x8 jadi dengan chip MAX7219 yang dapat dibeli sangat murah di Ebay atau Alexpress. Saat ini, saya hanya memiliki 7 modul, jadi saya melakukan modifikasi kecil pada kode. Aplikasi Android tidak lagi ada di Google Play store, jadi Anda dapat mengunduhnya dari:

https://bluetooth-spp-pro.en.uptodown.com/android

. Aplikasi dapat mengontrol kecepatan scrolling, kecerahan LED, jeda, hapus teks, dan beberapa tombol teks yang telah ditentukan.

Akhirnya, saya menempatkan seluruh perangkat dalam kotak, yang saya buat dari bahan PVC yang saya tutupi dengan dinding kertas dinding hitam.

Library Arduino:

https://github.com/markruys/arduino-Max72xxPanel

https://github.com/adafruit/Adafruit-GFX-Library

Kode

kodeArduino
 /* Berikut adalah perintah yang dikenali Arduino. 1. Setiap aliran karakter harus dikirim di dalam tanda kurung. Contoh: Misalnya jika Anda ingin menampilkan pesan "Hello! How are you doing?" Anda harus mengirimkannya seperti ini: (Hello! How are you doing?) Saat Arduino menerima karakter pertama sebagai '(', ia memahami bahwa karakter berikutnya adalah data tampilan hingga ')' diterima. Pesan ditampilkan sebagai scrolling dari kanan ke kiri. 2. Intensitas tampilan dapat ditingkatkan atau dikurangi dengan mengirim /+ atau /- masing-masing. Setiap kali Arduino menerima '/', ia memahami bahwa ini adalah perintah. Ini mendukung 16 level kecerahan. 3. Demikian pula, kecepatan scrolling dapat ditingkatkan atau dikurangi dengan mengirim /< atau /> masing-masing. 4. /p digunakan untuk jeda pesan scrolling. Mengirim perintah ini lagi akan melanjutkan scroll. 5. /e digunakan untuk menghapus buffer dan membersihkan tampilan Koneksi: Easy Matrix Arduino VCC +5V DIN MOSI (Pin 11) LOAD pinCS defined in the program below CLK SCK (Pin 13) GND Gnd Komunikasi UART terjadi pada 9600 baud. Ditulis oleh: Rajendra Bhatt Kontak: admin@embedded-lab.com Tautan produk Easy Matrix: https://embedded-lab.com/blog/?p=9186 */ #include <SPI.h> #include <Adafruit_GFX.h> #include <Max72xxPanel.h> int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf https://arduino.cc/en/Reference/SPI ) int numberOfHorizontalDisplays = 7; int numberOfVerticalDisplays = 1; Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays); int scrollspeed = 100; // Default scrollspeed (milliseconds) int spacer = 1; // Space between two characters int width = 5 + spacer; // The font width is 5 pixels boolean inChar = false, NewData = false, pause = false; boolean dataAvailable = false; char inputString[512]; int count = 0, BTvalue = 5; void setup() { matrix.setIntensity(1); // Use a value between 0 and 15 for brightness // Adjust to your own needs matrix.setPosition(0, 0, 0); // The first display is at <0, 7> matrix.setPosition(1, 1, 0); // The second display is at <1, 0> matrix.setPosition(2, 2, 0); // The third display is at <2, 0> matrix.setPosition(3, 3, 0); // And the last display is at <3, 0> matrix.setPosition(4, 4, 0); // The first display is at <0, 0> matrix.setPosition(5, 5, 0); // The second display is at <1, 0> matrix.setPosition(6, 6, 0); // The third display is at <2, 0> // ... // matrix.setRotation(0, 2); // The first display is position upside down // matrix.setRotation(3, 2); // The same hold for the last display matrix.fillScreen(0); matrix.write(); Serial.begin(9600); // serial communication initialize // Using interrupt 0 on digital pin 2. pinMode(2, INPUT); digitalWrite(2, LOW); attachInterrupt(0, serialInterrupt, CHANGE); } void loop(){ if(dataAvailable){ display_data(); } } void display_data(){ for ( int i = 0 ; i < width * count + matrix.width() - 1 - spacer; i++ ) { matrix.fillScreen(0); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; // center the text vertically while ( x + width - spacer >= 0 && letter >= 0 ) { if ( letter < count ) { matrix.drawChar(x, y, inputString[letter], HIGH, LOW, 1); } letter--; x -= width; } matrix.write(); // Send bitmap to display if(!dataAvailable){ i = width * count + matrix.width() - 1 - spacer; matrix.fillScreen(LOW); matrix.write(); } if(NewData){ i = 0; matrix.fillScreen(LOW); matrix.write(); NewData = false; } while(pause == true){ delay(0); } // Pause here if pause command is received delay(scrollspeed); } } // Volatile, since it is modified in an ISR. volatile boolean inService = false; void serialInterrupt(){ if (inService) return; // You was not in service. Now you are. inService = true; // Reenable interrupts, to allow Serial to work. We do this only if inService is false. interrupts(); while(!Serial.available()); while (Serial.available()) { char ch = Serial.read(); if(ch =='('){ count = 0; inChar = true; while(inChar){ if (Serial.available()) { ch = Serial.read(); if(ch == ')'){ inChar = false; dataAvailable = true; } else{ inputString[count] = ch; count++; } if(count > 0) { NewData = true; } } } } if(ch =='/'){ // Command mode inChar = true; while(inChar){ if (Serial.available()) { ch = Serial.read(); // '/+' is for brightness increment if(ch == '+'){ if(BTvalue < 15) { BTvalue ++; matrix.setIntensity(BTvalue); } break; } // '/-' is for brightness decrement if(ch == '-'){ if(BTvalue > 0){ BTvalue --; matrix.setIntensity(BTvalue); } break; } // '/>' is to slow down scroll if(ch == '>'){ if(scrollspeed < 200) { scrollspeed = scrollspeed + 20; } break; } // '/<' is to make scroll faster if(ch == '<'){ if(scrollspeed > 10){ scrollspeed=scrollspeed-10; } break; } // '/e' is to erase display if(ch == 'e'){ dataAvailable = false; break; } // '/p' is to pause display if(ch == 'p'){ if(pause == false){ pause = true; } else { pause = false; } break; } else { break; // Unrecognized command } } } } // if(ch == '!') } // while(serial.available) inService = false; } 

Skematik

Matriks LED 8x8 dengan Teks Berjalan Bluetooth – Proyek Arduino

Proses manufaktur

  1. Bangun Tabung Pintar: Kendalikan Penerima Koin dengan Arduino Nano
  2. Bangun Konsol Pong LED 24×16 dengan Arduino Nano & MAX7219
  3. Kontrol LED melalui Bluetooth dengan Arduino – Panduan DIY Sederhana
  4. Teleporter Teks Bluetooth: Proyek Arduino + Android
  5. Peralatan Rumah Tangga Diaktifkan Suara: Kontrol Bluetooth dengan Google Assistant
  6. Menguasai Matriks LED 8×8 dengan Arduino Uno: Panduan Langkah demi Langkah
  7. Pengukuran Radiasi Matahari Akurat dengan Arduino UNO dan Ethernet Shield
  8. Kendali Jarak Jauh Mobil Menggunakan Arduino Uno & Bluetooth: Panduan Langkah demi Langkah
  9. Kirim & Terima SMS dengan Mudah menggunakan GSM SIM900 Shield untuk Arduino Mega
  10. UPS Berbasis Arduino: Tingkatkan Dummy Power Supply Anda Menjadi Cadangan Kompatibel USB