8x8 dot matrix 64 led'de yanıyor yardım
  • elimde sadece 8x8 dot matrix var arduinoya direk bağlantılarını yayptım bir sitede gördüm ordanda şemanın olduğu siteden kodları alıp yükledim ama 64 ledde yanıyor acaba kodun amacı 64 led yaktırmakmı ben koddan birşey anlamadımda ? elinde kalp şeklini gösterecek kodu olan varsa vereiblirmi yardımlarınız icin şimdiden teşekkürler arkadaşlar

    #include

    byte col = 0;
    byte leds[8][8];

    // pin[xx] on led matrix connected to nn on Arduino (-1 is dummy to make array start at pos 1)
    int pins[17]= {-1, 5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6};

    // col[xx] of leds = pin yy on led matrix
    int cols[8] = {pins[13], pins[3], pins[4], pins[10], pins[06], pins[11], pins[15], pins[16]};

    // row[xx] of leds = pin yy on led matrix
    int rows[8] = {pins[9], pins[14], pins[8], pins[12], pins[1], pins[7], pins[2], pins[5]};

    #define DELAY 0
    #define SIZE 8
    extern byte leds[SIZE][SIZE];
    byte world[SIZE][SIZE][2];
    long density = 50;

    void setup() {
    setupLeds();
    randomSeed(analogRead(5));
    for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
    if (random(100) < density) {
    world[i][j][0] = 1;
    }
    else {
    world[i][j][0] = 0;
    }
    world[i][j][1] = 0;
    }
    }
    }

    void loop() {
    // Display current generation
    for (int i = 0; i < SIZE; i++) {
    for (int j = 0; j < SIZE; j++) {
    leds[i][j] = world[i][j][0];
    }
    }
    delay(DELAY);

    // Birth and death cycle
    for (int x = 0; x < SIZE; x++) {
    for (int y = 0; y < SIZE; y++) {
    // Default is for cell to stay the same
    world[x][y][1] = world[x][y][0];
    int count = neighbours(x, y);
    if (count == 3 && world[x][y][0] == 0) {
    // A new cell is born
    world[x][y][1] = 1;
    }
    if ((count < 2 || count > 3) && world[x][y][0] == 1) {
    // Cell dies
    world[x][y][1] = 0;
    }
    }
    }

    // Copy next generation into place
    for (int x = 0; x < SIZE; x++) {
    for (int y = 0; y < SIZE; y++) {
    world[x][y][0] = world[x][y][1];
    }
    }
    }

    int neighbours(int x, int y) {
    return world[(x + 1) % SIZE][y][0] +
    world[x][(y + 1) % SIZE][0] +
    world[(x + SIZE - 1) % SIZE][y][0] +
    world[x][(y + SIZE - 1) % SIZE][0] +
    world[(x + 1) % SIZE][(y + 1) % SIZE][0] +
    world[(x + SIZE - 1) % SIZE][(y + 1) % SIZE][0] +
    world[(x + SIZE - 1) % SIZE][(y + SIZE - 1) % SIZE][0] +
    world[(x + 1) % SIZE][(y + SIZE - 1) % SIZE][0];
    }

    void setupLeds() {
    // sets the pins as output
    for (int i = 1; i <= 16; i++) {<br />pinMode(pins[i], OUTPUT);
    }

    // set up cols and rows
    for (int i = 1; i <= 8; i++) {<br />digitalWrite(cols[i - 1], LOW);
    }

    for (int i = 1; i <= 8; i++) {<br />digitalWrite(rows[i - 1], LOW);
    }

    clearLeds();

    // Turn off toggling of pin 11 and 3
    FrequencyTimer2::disable();
    // Set refresh rate (interrupt timeout period)
    FrequencyTimer2::setPeriod(2000);
    // Set interrupt routine to be called
    FrequencyTimer2::setOnOverflow(display);

    }

    void clearLeds() {
    // Clear display array
    for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
    leds[i][j] = 0;
    }
    }
    }

    // Interrupt routine
    void display() {
    digitalWrite(cols[col], LOW); // Turn whole previous column off
    col++;
    if (col == 8) {
    col = 0;
    }
    for (int row = 0; row < 8; row++) {
    if (leds[col][7 - row] == 1) {
    digitalWrite(rows[row], LOW); // Turn on this led
    }
    else {
    digitalWrite(rows[row], HIGH); // Turn off this led
    }
    }
    digitalWrite(cols[col], HIGH); // Turn whole column on at once (for equal lighting times)
    }

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.