Max7219 dot matrix
  • Merhaba herkese bir proje üzerinde çalışıyorum. Okulda öğrencilerime bazı kuralları görsel olarak anlatmak için bir işe başladım fakat bir noktada takılıyorum yardımınıza ihtiyaç duyuyorum. Aşağıda göndermiş olduğum programda arduino uno 2 pinine bir anahtar bağlayarak her bastığımda karakterleri oluşturan dizileri sırasıyla yazdırmak istiyorum. Fakat her seferinde ilk çalışmada ekrana yarım karakterler çıkıyor. Bir de bazı karakterler 2 pini sürekli enerjiliyken tam çıkarken anahtarlama yaptığımızda karakterler şaşıyor. acaba nerede hata yapıyorum. şimdiden hepinize teşekkür ederim.

    #include "LedControl.h"
    unsigned char i;
    unsigned char j;
    int Max7219_pinCLK = 11;
    int Max7219_pinCS = 10;
    int Max7219_pinDIN = 12;
    D1=1;
    D2=2;
    int x = 2;
    int buttonState = 0;
    LedControl lc=LedControl(12,11,10,1);
    unsigned char disp1[8][8]={ //Eğer 22 den farklı sayıda ekran olan bir şey yapacaksanız 22 yi değişmeniz gerekir
    {0x3,0xE1,0x23,0x22,0xE3,0x80,0x80,0xE0},//2 kare
    {0x3,0xE1,0x23,0x22,0xE3,0x20,0x20,0xE0},//3 kare
    {0x3,0x81,0x83,0x82,0x83,0xA0,0xF0,0x20},//4 kare
    {0x3,0xE1,0x83,0x82,0xE3,0x20,0x20,0xE0},//5 kare
    {0x3,0xE1,0xA3,0x82,0xE3,0xA0,0xA0,0xE0},//6 kare
    {0x3,0xE1,0x23,0x22,0x73,0x20,0x20,0x20},//7 kare
    {0x3,0xE1,0xA3,0xA2,0xE3,0xA0,0xA0,0xE0},//8 kare
    {0x3,0xE1,0xA3,0xA2,0xE3,0x20,0xA0,0xE0},//9 kare
    };
    unsigned char disp2[8][8]={ //Eğer 22 den farklı sayıda ekran olan bir şey yapacaksanız 22 yi değişmeniz gerekir
    {0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x0},//1
    {0x3C,0x4,0x4,0x3C,0x20,0x20,0x3C,0x0},//2
    {0x3C,0x4,0x4,0x3C,0x4,0x4,0x3C,0x0},//3
    {0x20,0x20,0x20,0x20,0x28,0x3C,0x8,0x0},//4
    {0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5
    {0x3C,0x24,0x20,0x3C,0x24,0x24,0x3C,0x0},//6
    {0x38,0x8,0x8,0x1C,0x8,0x8,0x8,0x0},//7
    {0x3C,0x24,0x24,0x3C,0x4,0x4,0x3C,0x0},//8
    };
    unsigned char disp3[8][8]={ //Eğer 22 den farklı sayıda ekran olan bir şey yapacaksanız 22 yi değişmeniz gerekir
    {0x3C,0x4,0x4,0x3C,0x20,0x20,0x3C,0x0},//2
    {0x3C,0x4,0x4,0x3C,0x4,0x4,0x3C,0x0},//3
    {0x20,0x20,0x20,0x20,0x28,0x3C,0x8,0x0},//4
    {0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5
    {0x3C,0x24,0x20,0x3C,0x24,0x24,0x3C,0x0},//6
    {0x38,0x8,0x8,0x1C,0x8,0x8,0x8,0x0},//7
    {0x3C,0x24,0x24,0x3C,0x24,0x24,0x3C,0x0},//8
    {0x3C,0x24,0x24,0x3C,0x4,0x4,0x3C,0x0},//9
    };

    unsigned char disp4[8][8]={ //Eğer 22 den farklı sayıda ekran olan bir şey yapacaksanız 22 yi değişmeniz gerekir
    {0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x0},//1
    {0x20,0x20,0x20,0x20,0x28,0x3C,0x8,0x0},//4
    {0x3C,0x24,0x24,0x3C,0x4,0x4,0x3C,0x0},//9
    {0x4F,0xC9,0x48,0x4F,0x49,0x49,0xEF,0x0},//16
    {0xEE,0x28,0x28,0xEE,0x82,0x82,0xEE,0x0},//25
    {0xEE,0x2A,0x28,0xEE,0x2A,0x2A,0xEE,0x0},//36
    {0x87,0x85,0x85,0x87,0xA1,0xF5,0x27,0x0},//49
    {0xE8,0xA8,0x88,0xE8,0xAA,0xAF,0xE2,0x0},//64
    };
    unsigned char disp5[8][8]={ //Eğer 22 den farklı sayıda ekran olan bir şey yapacaksanız 22 yi değişmeniz gerekir
    {0x20,0x20,0x20,0x20,0x28,0x3C,0x8,0x0},//4
    {0x3C,0x24,0x24,0x3C,0x4,0x4,0x3C,0x0},//9
    {0x4F,0xC9,0x48,0x4F,0x49,0x49,0xEF,0x0},//16
    {0xEE,0x28,0x28,0xEE,0x82,0x82,0xEE,0x0},//25
    {0xEE,0x2A,0x28,0xEE,0x2A,0x2A,0xEE,0x0},//36
    {0x87,0x85,0x85,0x87,0xA1,0xF5,0x27,0x0},//49
    {0xE8,0xA8,0x88,0xE8,0xAA,0xAF,0xE2,0x0},//64
    {0xE4,0xAC,0xA4,0xE4,0xA4,0xA4,0xEE,0x0},//81
    };

    void Write_Max7219_byte(unsigned char DATA)
    {
    unsigned char i;
    digitalWrite(Max7219_pinCS,LOW);
    for(i=8;i>=1;i--)
    {
    digitalWrite(Max7219_pinCLK,LOW);
    digitalWrite(Max7219_pinDIN,DATA&0x80);
    DATA = DATA<<1;<br />digitalWrite(Max7219_pinCLK,HIGH);
    }
    }

    void Write_Max7219(unsigned char address,unsigned char dat){

    buttonState = digitalRead(x);
    if (buttonState == HIGH){
    digitalWrite(Max7219_pinCS,LOW);
    Write_Max7219_byte(address);
    Write_Max7219_byte(dat);
    digitalWrite(Max7219_pinCS,HIGH);
    }
    else {
    return;
    }
    if (D1==8&&D2=9){
    D1=1;
    D2=2;
    }
    }

    void Init_MAX7219(void){
    Write_Max7219(0x09, 0x00);
    Write_Max7219(0x0a, 0x03);
    Write_Max7219(0x0b, 0x07);
    Write_Max7219(0x0c, 0x01);
    Write_Max7219(0x0f, 0x00);
    }

    void setup(){

    pinMode(Max7219_pinCLK,OUTPUT);
    pinMode(Max7219_pinCS,OUTPUT);
    pinMode(Max7219_pinDIN,OUTPUT);
    delay(50);
    Init_MAX7219();
    lc.shutdown(0,false);
    /* Set the brightness to a medium values */
    lc.setIntensity(0,8);
    /* and clear the display */
    lc.clearDisplay(0);

    lc.shutdown(1,false);
    /* Set the brightness to a medium values */
    lc.setIntensity(1,8);
    /* and clear the display */
    lc.clearDisplay(1);
    pinMode(x, INPUT);
    }

    void loop(){

    for(j=0;j{
    for(i=1;i Write_Max7219(i,disp1[j][i-1]);
    clear();
    D1++;
    D2++;

    delay(1500);
    }
    }

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.