Narges NouraniLara Lili
Published

Running man animation

On this 8x8 piece, using the code, an animation of a running humanoid in a circle, entering from the right and exiting from the left at a me

BeginnerProtip1 hour97
Running man animation

Things used in this project

Hardware components

LED Dot Matrix Display, Red
LED Dot Matrix Display, Red
×1
Arduino Nano R3
Arduino Nano R3
×1
USB-A to Mini-USB Cable
USB-A to Mini-USB Cable
×1
Jumper wires (generic)
Jumper wires (generic)
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Running man animation

Arduino
#include <LedControl.h>

// : DIN = D2, CLK = D4, CS = D3
LedControl lc = LedControl(2, 4, 3, 1);

byte runner1[8] = {
  B00011000,
  B00011000,
  B00111100,
  B00100100,
  B01000010,
  B01010100,
  B01010100,
  B00101000
};

byte runner2[8] = {
  B00011000,
  B00011000,
  B00111100,
  B00011000,
  B01010100,
  B01001000,
  B00101000,
  B00101000
};

byte runner3[8] = {
  B00011000,
  B00011000,
  B00111100,
  B00011000,
  B01000010,
  B00101000,
  B01010100,
  B00101000
};

byte runner4[8] = {
  B00011000,
  B00011000,
  B00111100,
  B00100100,
  B01000010,
  B01010100,
  B01010100,
  B00010100
};

void drawShifted(byte* frame, int shift);

void setup() {
  lc.shutdown(0, false);     
  lc.setIntensity(0, 8);     
  lc.clearDisplay(0);        
}

void loop() {
  for (int shift = 8; shift >= -8; shift--) {
    drawShifted(runner1, shift);
    delay(150);
    drawShifted(runner2, shift);
    delay(150);
    drawShifted(runner3, shift);
    delay(150);
    drawShifted(runner4, shift);
    delay(150);
  }
}

void drawShifted(byte* frame, int shift) {
  for (int row = 0; row < 8; row++) {
    byte rowData = frame[row];
    if (shift >= 0)
      lc.setRow(0, row, rowData >> shift);
    else
      lc.setRow(0, row, rowData << (-shift));
  }
}

Credits

Narges Nourani
3 projects • 0 followers
Lara Lili
3 projects • 0 followers

Comments