Peggy 2/2LE Photo Display – Part 3

Home Evil Mad Scientist Forums LED Matrix Kits Peggy 2/2LE Photo Display – Part 3

Viewing 1 post (of 1 total)
  • Author
  • #20153

    // [8] – Adafruit
      0x00000000, 0x00000000, 0x00008000, 0x00000000, 0x00000000, 0x00000000, 0x0000001C, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00001400, 0x00000000, 0x00000800, 0x00000000, 0x00000000, 0x00002000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002040, 0x00004000, 0x00040000, 0x00000000}
      0x00008000, 0x00004000, 0x00008000, 0x00000800, 0x00000000, 0x00010200, 0x00000061, 0x00000000, 0x000B0000, 0x00800004, 0x00800100, 0x01000108, 0x00002010, 0x00404800, 0x00283600, 0x00057700, 0x00024010, 0x00000010, 0x00000808, 0x00000800, 0x00000180, 0x00002038, 0x00000008, 0x00000000, 0x00000000}
      0x00004000, 0x00008000, 0x00000000, 0x00000C00, 0x00000000, 0x00000000, 0x000102FE, 0x00010001, 0x000F0000, 0x00600002, 0x01000104, 0x01000508, 0x00802400, 0x00200820, 0x00103200, 0x00001000, 0x00006010, 0x00040000, 0x00040000, 0x00040C00, 0x00040100, 0x00042060, 0x00044000, 0x00048000, 0x00000000}
      0x00002000, 0x00007000, 0x00007800, 0x0000F000, 0x0000FC00, 0x0000FC00, 0x0000FC00, 0x0000FFFE, 0x0000FFFE, 0x001FEFFC, 0x00FFEEF8, 0x00FFF8F0, 0x007F1BF0, 0x003FF7C0, 0x000FC9E0, 0x0003CDE0, 0x00039FE0, 0x0003FFF0, 0x0003FFF0, 0x0003F3F8, 0x0003F0F8, 0x0003C018, 0x00038000, 0x00030000, 0x00020000}

    int NumberPics = ((PictureTable.rows()+1)/4); // Determine the number of pictures in the table

    // declare frame buffers
    Peggy2 frame1;
    Peggy2 frame2;
    Peggy2 frame3;
    Peggy2 frame4;


    void setup()

      // Call this once to init the hardware.
      // (Only needed once, even if you’ve got lots of frames.)

      randomSeed(analogRead(0)); //set up random seed generator

      /* write each row of the frame buffers from the bitmap data.
       Initial writing of rows so there is something to erase in
       the begining of the frame-writing loop*/
      int row;
      for (row = 0; row < 25; row++)
        frame1.WriteRow(row, PictureTable[0][row]);
        frame2.WriteRow(row, PictureTable[1][row]);
        frame3.WriteRow(row, PictureTable[2][row]);
        frame4.WriteRow(row, PictureTable[3][row]);


    void loop()
      /* Clears frame from memory when no longer needed */
      if (PictureNew == 1) {
        PictureNew = 0;

        int row;
        for (row = 0; row < 25; row++)
        { /* Reads frames from flash memory and writes frame to SRAM */
          frame1.WriteRow(row, PictureTable[((PictureNumber*4)-4)][row]);
          frame2.WriteRow(row, PictureTable[((PictureNumber*4)-3)][row]);
          frame3.WriteRow(row, PictureTable[((PictureNumber*4)-2)][row]);
          frame4.WriteRow(row, PictureTable[((PictureNumber*4)-1)][row]);
      /* Draw the picture in greyscale  */
      frame1.RefreshAll(1);  // draw frame buffer 1 time
      frame2.RefreshAll(2);  // draw frame buffer 2 times
      frame3.RefreshAll(4);  // draw frame buffer 4 times
      frame4.RefreshAll(8);  // draw frame buffer 8 times

      CountNumber++;             // increase timer counter

      if (CountNumber == 900){ // Balpark estimate of 12 seconds for picture to display

        PictureNumber = random(NumberPics);
        PictureNumber++;       // These lines select new picture at random

        PictureNew = 1;        // Let the ‘frame.clear’ routine know it’s a new picture

        CountNumber = 0;       // Reset display timer




    • This topic was modified 3 years, 6 months ago by Windell Oskay.
Viewing 1 post (of 1 total)
  • You must be logged in to reply to this topic.