Serwisy partnerskie:
Close icon
Serwisy partnerskie

Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino

Article Image
Kompletny samouczek objaśniający krok po kroku jak przewijać tekst na matrycy LED z użyciem Arduino w Proteus ISIS.
1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino 59. Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino 60. Sterowanie prędkością obrotów silnika krokowego za pomocą Arduino 61. Pobieranie danych z serwera internetowego za pomocą Arduino Wi-Fi 62. Wprowadzenie do Arduino YUN 63. Dostęp do serwera Linux Arduino YUN za pomocą Putty
Rozwiń cały spis treści Zwiń spis treści

Witam wszystkich!

Matryca LED służy do wyświetlania długich wiadomości. Najlepsze w matrycy LED jest to, że można ją połączyć szeregowo i uzyskać dowolny rozmiar. W poniższym poście połączyłem 8 matryc LED, a następnie wyświetliłem na nich mój komunikat. Projekt jest płatny ponieważ włożyliśmy duży wysiłek w zaprojektowanie tej symulacji. Można go kupić za bardzo małą kwotę 20 USD klikając powyższy przycisk.

Oprogramowanie Proteus użyto do celów symulacji płytki Arduino jako mikrokontrolera. Wiemy, że Proteus nie obsługuje Arduino, ale mamy dla niego bibliotekę. Przeczytaj artykuł jak dodać bibliotekę Arduino dla Proteusa, a także jak pobrać plik hex z Arduino.

Projekt matrycy LED 8x8 z użyciem Arduino w Proteus ISIS

Na początku przyjrzyjmy się projektowi matrycy LED 8×8 z wykorzystaniem Arduino w Proteus ISIS, co pokazano na poniższym rysunku:

Na pewno zauważysz, że użyłem 8 matryc LED oraz MAX7219.

MAX7219 to rejestr przesuwny, który ma tutaj duże znaczenie, bo pobiera dane szeregowo i równolegle.

Znany jest również pod nazwą równoległo-szeregowy rejestr przesuwny. Wysyłamy do niego dane za pomocą pojedynczego pinu, który jest pinem danych, a dane te są wyzwalane zboczem przez impuls zegarowy.

Kiedy nasz impuls zegarowy przechodzi od stanu niskiego do wysokiego, dane są wysyłane do rejestru przesuwnego.

Połączyliśmy te rejestry przesuwne w rzędzie, jak widać na powyższym rysunku. Pierwszy rejestr jest połączony z drugim rejestrem przez pin Dout.

Załóżmy więc, że podłączyłem dwa rejestry przesuwne, a następnie wysyłam do nich dane. Moje dane wyjściowe będą miały łącznie 16 bitów.

W ten sposób możemy dodać tyle rejestrów przesuwnych, ile chcemy. W tym projekcie dodałem łącznie 8 rejestrów przesuwnych, więc moje wyjście ma w sumie 64 bity. Kontroluję te 64 bity za pomocą jednego pinu Arduino, który jest oczywiście pinem danych .

Wykorzystywane są również piny zegara i pin ładowania, które służą do wysyłania danych, a następnie ładowania ich w kolejności. Zatem za pomocą zaledwie 3 pinów Arduino mogę kontrolować dowolną liczbę rejestrów przesuwnych.

Każdy rejestr przesuwny steruje każdą matrycą LED 8×8, a powodem, dla którego używam 8 rejestrów przesuwnych, jest to, że używam 8 matryc LED 8×8.

To trochę trudne, ale nie do końca. Skoro mamy już pełny pogląd rejestru przesuwnego i jego działania, przejdźmy teraz do naszej symulacji.

Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino w Proteus ISIS

Zbuduj kompletny układ w oprogramowaniu Proteus ISIS, jak pokazano na poniższym rysunku:

Następną potrzebną rzeczą jest kod płytki Arduino, który został zamieszczony poniżej. Skopiuj go i wklej do swojego oprogramowania Arduino:

#include <MD_MAX72xx.h>  
#define     MAX_DEVICES   8 
 
#define     CLK_PIN      13  
#define     DATA_PIN     11  
#define     CS_PIN       10  

MD_MAX72XX mx = MD_MAX72XX(DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);  
  
#define SCROLL_DELAY     200
 
#define     CHAR_SPACING     1  
#define     BUF_SIZE     75  
char curMessage[BUF_SIZE];  
char newMessage[BUF_SIZE];  
   
uint8_t scrollDataSource(uint8_t dev, MD_MAX72XX::transformType_t t)  
{  
  static char        *p = curMessage;  
  static uint8_t     state = 0;  
  static uint8_t     curLen, showLen;  
  static uint8_t     cBuf[8];  
  uint8_t colData;  
  
  switch(state)  
  {  
  case 0:  
    showLen = mx.getChar(*p++, sizeof(cBuf)/sizeof(cBuf[0]), cBuf);  
    curLen = 0;  
    state++;  
    
    if (*p == '\0')  
    {  
      p = curMessage;  
    }  
  case 1:       
    colData = cBuf[curLen++];  
    
    if (curLen == showLen)  
    {  
      showLen = CHAR_SPACING;  
      curLen = 0;  
      state = 2;  
    }  
    
    break;  
  case 2:  
    colData = 0;  
    curLen++;  

    if (curLen == showLen)  
     state = 0;  
    
    break;  
    default:  
    state = 0;  
  }  
  return(colData);  
}  
  
void scrollText(void)  
{  
  static uint32_t     prevTime = 0;  
  if (millis()-prevTime >= SCROLL_DELAY)  
  {  
    mx.transform(MD_MAX72XX::TSR);       
    prevTime = millis();  
  }  
}  
  
void setup()  
{  
  mx.begin();  
  mx.setShiftDataInCallback(scrollDataSource);  
  mx.control(MD_MAX72XX::INTENSITY, 10);
  strcpy(curMessage, "www.TheEngineeringProjects.com");

  newMessage[0] = '\0';  
}  
   
void loop()   
{  
  scrollText();  
}

Po skompilowaniu kodu w oprogramowaniu Arduino pobierz plik hex dla Arduino i wgraj go na swoją płytkę Arduino w Proteus ISIS.

Gdy uruchomisz symulację, otrzymasz wynik, jak pokazano na poniższym rysunku:

Popatrz, jak tekst się przewija. Wygląda bardzo fajnie.

W ten sposób możesz przewijać dowolny tekst.

To wszystko na dziś. Mam nadzieję, że podobał Ci się dzisiejszy projekt i przetestujesz go.

Do zobaczenia w następnym tutorialu.

Artykuł Scrolling Text on LED Matrix 8x8 using Arduino in Proteus opracowano w wersji polskiej na podstawie współpracy z portalem www.theengineeringprojects.com.

1. Praktyczny Kurs Arduino - przewodnik po artykułach składających się na kurs 2. Czym jest Arduino? 3. Porównanie Arduino z Raspberry Pi 4. Instalacja sterownika Arduino w systemie Windows 5. Generowanie pliku hex w Arduino 6. Jak wgrać bootloader w Atmega328? 7. Rozpoczęcie pracy z oprogramowaniem Arduino 8. Rozpoczęcie programowania w Arduino 9. Programowe resetowanie Arduino 10. Wprowadzenie do Arduino UNO 11. Wprowadzenie do Arduino NANO 12. Wprowadzenie do Arduino Pro Mini 13. Wprowadzenie do Arduino Mega 2560 14. Wprowadzenie do Arduino Due 15. Wprowadzenie do Arduino Lilypad 16. Wprowadzenie do ATmega328 17. Biblioteka Arduino dla Proteusa 18. Projekt płytki drukowanej Arduino UNO dla Proteus ARES 19. Biblioteka Arduino Lilypad dla Proteusa 20. Odczyt z portu szeregowego Arduino 21. Projektowanie układów LCD z Arduino 22. Łączenie klawiatury z Arduino 23. Wartość ADC na LCD przy użyciu Arduino 24. Symulacja czujnika ultradźwiękowego w Proteusie 25. Połączenie czujnika ultradźwiękowego z Arduino 26. Wiele czujników ultradźwiękowych z Arduino 27. Czujnik temperatury 18B20 z Arduino 28. Jak używać 18B20 w Proteus ISIS? 29. Łączenie LM35 z Arduino w Proteusie 30. Współpraca siedmiosegmentowego wyświetlacza z Arduino w Proteusie 31. Łączenie czujnika PIR z Arduino 32. Współpraca czujnika płomienia z Arduino 33. Interfejs NRF24L01 z Arduino 34. NRF24L01+ i Arduino - Response Timed Out 35. Połączenie RFID RC522 z Arduino 36. Komunikacja Bluetooth z Arduino przy użyciu HC05 37. Sterowanie serwomotorem za pomocą Arduino w Proteusie 38. Projekt sterowania sygnalizacją świetlną przy użyciu Arduino 39. Przewijanie tekstu na matrycy LED 8×8 z użyciem Arduino 40. Inteligentny system oszczędzania energii 41. Komunikacja USB pomiędzy Androidem i Arduino 42. Automatyka domowa z użyciem XBee i Arduino 43. Domowy system bezpieczeństwa oparty na GSM 44. Wysyłanie SMS-ów za pomocą Arduino UNO i SIM900 45. Odbieranie SMS-ów za pomocą komend AT przy użyciu Arduino 46. Projekt rozpoznawania głosu przy użyciu EasyVR Shield 47. Rozpoczęcie pracy z programem EasyVR Commander 48. Połączenie EasyVR z Arduino UNO 49. Błąd szkolenia - niepowodzenie rozpoznawania w EasyVR 50. Połączenie XBee z komputerem 51. Wprowadzenie do modułu XBee 52. Interfejs XBee z Arduino 53. Rozpoczęcie pracy z kamerą Pixy 54. Jak zainstalować oprogramowanie kamery Pixy - PixyMon 55. Aktualizacja firmware kamery Pixy do najnowszej wersji 56. Jak wytrenować kamerę Pixy za pomocą komputera 57. Sterowanie kierunkiem obrotu silnika prądu stałego za pomocą Arduino 58. Sterowanie prędkością obrotów silnika prądu stałego za pomocą Arduino 59. Sterowanie kierunkiem obrotu silnika krokowego za pomocą Arduino 60. Sterowanie prędkością obrotów silnika krokowego za pomocą Arduino 61. Pobieranie danych z serwera internetowego za pomocą Arduino Wi-Fi 62. Wprowadzenie do Arduino YUN 63. Dostęp do serwera Linux Arduino YUN za pomocą Putty
Rozwiń cały spis treści Zwiń spis treści
Firma:
Tematyka materiału: Symulator Arduino, Proteus, LED 8×8, MAX7219
AUTOR
Źródło
www.theengineeringprojects.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
Oceń najnowsze wydanie EdW
Wypełnij ankietę i odbierz prezent
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"