/* 自定義代碼塊樣式 */

2019年8月2日 星期五

使用 MAX7219 驅動4個 8x8 矩陣式LED 顯示器



之前買了三個 6cm x 6cm 的MAX7219 白光LED點矩陣,把三個點矩陣串接起來並使用MaxMatrix Library做NTP時鐘,顯示都正常,所以就再加碼,買了比較小一點 4 in 1的,打算放在臥室



就在收到貨後,立馬更換,點亮了~,不過字體怎麼怪怪的,轉了90度,Google了一下,發現有MD_MAX72XX library 可以做轉向顯示,但是我已經用MaxMatrix 寫好code,不想大改了,所以只好捲起袖子,開始 trace MaxMatrix的code,看看能不能在最小幅度的修改下,達到文字旋轉90度的需求



下面是修改MaxMatrix.c,轉90度顯示所做的修改,有三個副程式需做修改

  1. void MaxMatrix::setColumn(byte col, byte value)
  2. {
  3.     int xx = (col%8);   
  4.     int yy = 0 ;   
  5.    
  6.     for (int row_i=0;row_i<8;row_i++){
  7.         yy = (col/8)*8+row_i;
  8.         setDot(xx, yy, bitRead(value, row_i));
  9.     }
  10. }


  1. void MaxMatrix::setDot(byte col, byte row, byte value)
  2. {
  3.     int yy = 7-(col%8);
  4.     int xx = (col/8)*8+row;
  5.    
  6.     bitWrite(buffer[xx], yy, value);
  7.    
  8.     int n = xx / 8;
  9.     int c = (xx % 8);
  10.     digitalWrite(load, LOW);
  11.     for (int i=0; i digitalWrite(load, LOW);
  12. digitalWrite(load, HIGH);
  13. }


  1. void MaxMatrix::writeSprite(int x, int y, const byte* sprite)
  2. {
  3. int w = sprite[0];
  4. int h = sprite[1];
  5.  
  6. for (int i=0; i=0 && c<80 && r>=0 && r<8)
  7. setDot(c, r, bitRead(sprite[i+2], j));
  8. }
  9. }
  10. }



修改完結果如下,可正常顯示,但Scroll 移動的部分就沒有修改,所以若要捲動的話顯示會出問題的,這部份等有空再來改了







定義Arduino Flash Partition

在Arduino 的工程目錄中,增加一個 partitions.csv 文字檔案,內容範例如下 # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, o...