2 Replies Latest reply on Jun 22, 2015 9:51 AM by JernejH

    colors shield not support?

    garfieldcn

      Colors Shield - Arduino RGB LED Matrix driver shield

      its a led matrix driver,when I try to run the demo

      ide said"

      BlinkWithoutDelay.ino: In function 'void _IO_Init()':

      BlinkWithoutDelay.ino:96:3: error: 'DDRD' was not declared in this scope

      BlinkWithoutDelay.ino:97:3: error: 'DDRC' was not declared in this scope

      BlinkWithoutDelay.ino:98:3: error: 'DDRB' was not declared in this scope

      BlinkWithoutDelay.ino:100:3: error: 'PORTD' was not declared in this scope

      BlinkWithoutDelay.ino:101:3: error: 'PORTC' was not declared in this scope

      BlinkWithoutDelay.ino:102:3: error: 'PORTB' was not declared in this scope

      BlinkWithoutDelay.ino: In function 'void _TC2_Init()':

      BlinkWithoutDelay.ino:121:3: error: 'TCCR2A' was not declared in this scope

      BlinkWithoutDelay.ino:121:19: error: 'WGM21' was not declared in this scope

      BlinkWithoutDelay.ino:121:34: error: 'WGM20' was not declared in this scope

      BlinkWithoutDelay.ino:122:3: error: 'TCCR2B' was not declared in this scope

      BlinkWithoutDelay.ino:122:18: error: 'CS22' was not declared in this scope

      BlinkWithoutDelay.ino:122:28: error: 'CS20' was not declared in this scope

      BlinkWithoutDelay.ino:123:19: error: 'CS21' was not declared in this scope

      BlinkWithoutDelay.ino:125:3: error: 'ASSR' was not declared in this scope

      BlinkWithoutDelay.ino:125:15: error: 'AS2' was not declared in this scope

      BlinkWithoutDelay.ino:126:3: error: 'TIMSK2' was not declared in this scope

      BlinkWithoutDelay.ino:126:17: error: 'TOIE2' was not declared in this scope

      BlinkWithoutDelay.ino:126:30: error: 'OCIE2B' was not declared in this scope

      BlinkWithoutDelay.ino:127:3: error: 'TCNT2' was not declared in this scope

      BlinkWithoutDelay.ino:128:7: error: 'sei' was not declared in this scope

      BlinkWithoutDelay.ino: At global scope:

      BlinkWithoutDelay.ino:135:4: error: expected constructor, destructor, or type conversion before '(' token

      "

       

       

       

       

      /*

        Colorduino - Colorduino DEMO for Arduino.

        Copyright (c) 2010 zzy@IteadStudio.  All right reserved.

       

       

        This DEMO is free software; you can redistribute it and/or

        modify it under the terms of the GNU Lesser General Public

        License as published by the Free Software Foundation; either

        version 2.1 of the License, or (at your option) any later version.

       

       

        This DEMO is distributed in the hope that it will be useful,

        but WITHOUT ANY WARRANTY; without even the implied warranty of

        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

        Lesser General Public License for more details.

       

       

        You should have received a copy of the GNU Lesser General Public

        License along with this library; if not, write to the Free Software

        Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

      */

      #include <Wire.h>

      #include "Arduino.h"

      #include <avr/pgmspace.h>

      /*****************************

      define the operate commands

      *****************************/

       

       

      /*****************************

      define the status

      *****************************/

       

       

      /*****************************

      define the IO

      *****************************/

      #define RST_BIT 0x04

      #define LAT_BIT 0x02

      #define SLB_BIT 0x01

      #define SCL_BIT 0x40

      #define SDA_BIT 0x80

       

       

      #define RST PORTC

      #define LAT PORTC

      #define SLB PORTC

      #define SDA PORTD

      #define SCL PORTD

       

       

      #define open_line0 {PORTB=0x01;}

      #define open_line1 {PORTB=0x02;}

      #define open_line2 {PORTB=0x04;}

      #define open_line3 {PORTB=0x08;}

      #define open_line4 {PORTB=0x10;}

      #define open_line5 {PORTB=0x20;}

      #define open_line6 {PORTD=0x08;}

      #define open_line7 {PORTD=0x10;}

      #define close_all_line {PORTD=0x00;PORTB=0x00;}

       

       

      /*******************************************

      define the data zone

      *******************************************/

      /*

      //Test dots

      unsigned char Tdots[8][8][3]=     {{{0,0,255},     {0,0,255},      {0,0,255},     {0,0,255},    {0,0,255},      {0,0,255},       {0,0,255},        {0,0,255}},

                                        {{0,165,255},   {0,165,255},    {0,165,255},   {0,165,255},  {0,165,255},    {0,165,255},     {0,165,255},      {0,165,255}},

                                        {{0,255,255},   {0,255,255},    {0,255,255},   {0,255,255},  {0,255,255},    {0,255,255},     {0,255,255},      {0,255,255}},

                                        {{0,255,0},     {0,255,0},      {0,255,0},     {0,255,0},    {0,255,0},      {0,255,0},       {0,255,0},        {0,255,0}},

                                        {{255,127,0},   {255,127,0},    {255,127,0},   {255,127,0},  {255,127,0},    {255,127,0},     {255,127,0},      {255,127,0}},

                                        {{255,0,0},     {255,0,0},      {255,0,0},     {255,0,0},    {255,0,0},      {255,0,0},       {255,0,0},        {255,0,0}},

                                        {{255,0,139},   {255,0,139},    {255,0,139},   {255,0,139},  {255,0,139},    {255,0,139},     {255,0,139},      {255,0,139}},

                                        {{255,255,255}, {255,255,255},  {255,255,255}, {255,255,255},{255,255,255},  {255,255,255},   {255,255,255},    {255,255,255}}

                                       };

      */

      unsigned char dots[2][8][8][3] = {0};

      //dots matrix

      //[2]:Page:one for display, one for receive data

      //[8]:Row:8 row in LED plane

      //[8]:Column:8 column in one row

      //[3]:Color:RGB data: 0 for Red; 1 for green, 2 for Blue

      unsigned char Gamma_Value[3] = {10,63,63};

      //Gamma correctly value, every LED plane is different.value range is 0~63

      //[3]:RGB data, 0 for Red; 1 for green, 2 for Blue

      unsigned char Page_Index = 0; // the index of buffer

      unsigned char row = 0;//the value of row in LED plane, from 0~7

      unsigned char column = 0;//the value of every row, from 0~7

      unsigned char color = 0;//the value of every dots, 0 is Red, 1 is Green, 2 is Blue

       

       

      unsigned char line = 0;

       

       

      /**************************************************

      define the extern data zone

      **************************************************/

      extern unsigned char font8_8[92][8];

      extern unsigned char pic[4][8][8][3];

      /***************************************************

      all parts inition functions zone

      ***************************************************/

      void _IO_Init()

      {

        DDRD = 0xff; // set all pins direction of PortD

        DDRC = 0xff; // set all pins direction of PortC

        DDRB = 0xff; // set all pins direction of PortB

       

        PORTD = 0x00; // set all pins output is low of PortD

        PORTC = 0x00; // set all pins output is low of PortC

        PORTB = 0x00; // set all pins output is low of PortB

      }

      void _LED_Init()

      {

        /*

        LED_RST(1);

        LED_Delay(1);

        LED_RST(0);

        LED_Delay(1);

        LED_RST(1);

        LED_Delay(1);

        */

        LED_RST(1);

        SetGamma();

        line = 0;

       

      }

      void _TC2_Init()

      {

        TCCR2A |= (1 << WGM21) | (1 << WGM20);  

        TCCR2B |= ((1<<CS22)|(1<<CS20));   // by clk/64

        TCCR2B &= ~((1<<CS21));   // by clk/64

        TCCR2A &= ~((1<<WGM21) | (1<<WGM20));   // Use normal mode

        ASSR |= (1<<AS2);       // Use internal clock - external clock not used in Arduino

        TIMSK2 |= (1<<TOIE2) | (0<<OCIE2B);   //Timer2 Overflow Interrupt Enable

        TCNT2 = 0xff;

        sei();

      }

       

       

       

       

      /****************************************************

      the timer2 operate functions zone

      ****************************************************/

      ISR(TIMER2_OVF_vect)          //Timer2  Service

      {

        cli(); 

        TCNT2 = 0x64;      //flash a led matrix frequency is 100.3Hz,period is 9.97ms

        //TCNT2 = 0x63;      //flash a led matrix frequency is 99.66Hz,period is 10.034ms  

          if(line > 7) line = 0;   

          close_all_line; 

          run(line);

          open_line(line);

          line++;

          sei();

      }

      /****************************************************

      the LED Hardware operate functions zone

      ****************************************************/

      void LED_SDA(unsigned char temp)

      {

        if (temp)

          SDA|=SDA_BIT;

        else

          SDA&=~SDA_BIT;

      }

       

       

      void LED_SCL(unsigned char temp)

      {

        if (temp)

          SCL|=SCL_BIT;

        else

          SCL&=~SCL_BIT;

      }

       

       

      void LED_RST(unsigned char temp)

      {

        if (temp)

          RST|=RST_BIT;

        else

          RST&=~RST_BIT;

      }

       

       

      void LED_LAT(unsigned char temp)

      {

        if (temp)

          LAT|=LAT_BIT;

        else

          LAT&=~LAT_BIT;

      }

       

       

      void LED_SLB(unsigned char temp)

      {

        if (temp)

          SLB|=SLB_BIT;

        else

          SLB&=~SLB_BIT;

      }

      /***************************************************

      the LED datas operate functions zone

      ***************************************************/

      void SetGamma()

      {

        unsigned char i = 0;

        unsigned char j = 0;

        unsigned char k = 0;

        unsigned char temp = 0;

        LED_LAT(0);

        LED_SLB(0);

        for(k=0;k<8;k++)

          for(i = 3;i > 0 ;i--)

          {

            temp = Gamma_Value[i-1]<<2;

            for(j = 0;j<6;j++)

            {

              if(temp &0x80)

                LED_SDA(1);

              else

                LED_SDA(0);

             

              temp =temp << 1;

              LED_SCL(0);

              LED_SCL(1);

          }

        }

        LED_SLB(1);

      }

      void run(unsigned char k)

      {

        unsigned char i = 0;

        unsigned char j = 0;

        unsigned char p = 0;

        unsigned char temp = 0;

        LED_SLB(1);

        LED_LAT(0);

        for(i = 0;i<8;i++)

        {

         

          for(j=0;j<3;j++)

          {

            temp = dots[Page_Index][k][i][2-j];

            for(p=0;p<8;p++)

            {

               if(temp & 0x80)

                 LED_SDA(1);

               else

                 LED_SDA(0);

                

               temp = temp<<1; 

               LED_SCL(0);

               LED_SCL(1);

             }

           }

        }

        LED_LAT(1);

        LED_LAT(0);

      }

      void open_line(unsigned char x)

      {

        switch

        { 

          case 0 :open_line0;

                  break;

          case 1 :open_line1;

                  break;

          case 2 :open_line2;

                  break;

          case 3 :open_line3;

                  break;

          case 4 :open_line4;

                  break;

          case 5 :open_line5;

                  break;

          case 6 :open_line6;

                  break;

          case 7 :open_line7;

                  break;

          default: close_all_line;

                  break;

        }

      }

      /********************************************************

      Name:DispShowChar

      Function:Display a English latter in LED matrix

      Parameter:chr :the latter want to show

                R: the value of RED.   Range:RED 0~255

                G: the value of GREEN. Range:RED 0~255

                B: the value of BLUE.  Range:RED 0~255

                bias: the bias of a letter in LED Matrix.Range -7~7

      ********************************************************/

      void DispShowChar(char chr,unsigned char R,unsigned char G,unsigned char B,char bias)

      {

        unsigned char i,j,Page_Write,temp;

        unsigned char Char;

        unsigned char chrtemp[24] = {0};

       

        if ((bias > 8) || (bias < -8))

          return;

         

       

        Char = chr - 32;

       

        if(Page_Index == 0)

          Page_Write = 1;

        if(Page_Index == 1)

          Page_Write = 0;

        j = 8 - bias;

        for(i = 0;i< 8;i++)

        {

          chrtemp[j] = pgm_read_byte(&(font8_8[Char][i]));   

          j++;

        } 

        for(i = 0;i < 8;i++)

        {

         

          temp = chrtemp[i+8];

          for(j = 0;j < 8;j++)

          {

            if(temp & 0x80)

            {

              dots[Page_Write][j][i][0] = B;

              dots[Page_Write][j][i][1] = G;

              dots[Page_Write][j][i][2] = R;

            }

            else

            {

              dots[Page_Write][j][i][0] = 0;

              dots[Page_Write][j][i][1] = 0;

              dots[Page_Write][j][i][2] = 0;

            }

            temp = temp << 1;

          }

        }

        Page_Index = Page_Write; 

      }

      /********************************************************

      Name:DispShowColor

      Function:Fill a color in LED matrix

      Parameter:R: the value of RED.   Range:RED 0~255

                G: the value of GREEN. Range:RED 0~255

                B: the value of BLUE.  Range:RED 0~255

      ********************************************************/

      void DispShowColor(unsigned char R,unsigned char G,unsigned char B)

      {

        unsigned char Page_Write,i,j;

       

        if(Page_Index == 0)

          Page_Write = 1;

        if(Page_Index == 1)

          Page_Write = 0;

         

        for (i = 0;i<8;i++)

          for(j = 0;j<8;j++)

          {

            dots[Page_Write][i][j][2] = R;

            dots[Page_Write][i][j][1] = G;

            dots[Page_Write][i][j][0] = B;

          }

       

        Page_Index = Page_Write;

      }

      /********************************************************

      Name:DispShowPic

      Function:Fill a picture in LED matrix from FLASH

      Parameter:Index:the index of picture in Flash.

      ********************************************************/

      void DispShowPic(unsigned char Index)

      {

        unsigned char Page_Write,i,j;

       

        if(Page_Index == 0)

          Page_Write = 1;

        if(Page_Index == 1)

          Page_Write = 0;

         

        for (i = 0;i<8;i++)

        {

         

          for(j = 0;j<8;j++)

          {

           

            dots[Page_Write][i][j][0] = pgm_read_byte(&(pic[Index][i][j][2]));

            dots[Page_Write][i][j][1] = pgm_read_byte(&(pic[Index][i][j][1]));

            dots[Page_Write][i][j][2] = pgm_read_byte(&(pic[Index][i][j][0]));

          }

        }

        Page_Index = Page_Write;

       

      }

       

       

      /******************************************

      the other operate functions zone

      ******************************************/

      void LED_Delay(unsigned char i)

      {

        unsigned int y;

        y = i * 10;

        while(y--);

      }

      /****************************************************

      Main Functions zone

      ****************************************************/

      void setup()

      {

        _IO_Init();           //Init IO

        _LED_Init();          //Init LED Hardware

        _TC2_Init();          //Init Timer/Count2

      }

      void loop()

      {

        unsigned int i = 1000;

        char j=0;

        /*

        DispShowChar('A',255,0,0,0);

        delay(i);

        DispShowChar('B',0,255,0,0);

        delay(i);

        DispShowChar('C',0,0,255,0);

        delay(i);

        DispShowChar('D',255,255,255,0);

        delay(i);

        DispShowChar('E',0,255,255,0);

        delay(i);

        DispShowChar('F',255,255,0,0);

        delay(i);

        DispShowChar('G',255,0,255,0);

        delay(i);

        DispShowChar('H',255,127,0,0);

        delay(i);

        DispShowChar('I',127,255,0,0);

        delay(i);

        DispShowChar('J',127,0,255,0);

        delay(i);

        DispShowChar('K',255,127,127,0);

        delay(i);

        DispShowChar('L',127,127,255,0);

        delay(i);

        DispShowChar('M',127,255,127,0);

        delay(i);

        DispShowChar('N',255,127,255,0);

        delay(i);

        DispShowChar('O',200,120,120,0);

        delay(i);

          DispShowChar('P',120,200,120,0);

        delay(i);

        DispShowChar('Q',200,120,120,0);

        delay(i);

        DispShowChar('R',120,120,200,0);

        delay(i);

        DispShowChar('S',120,120,120,0);

        delay(i);

        DispShowChar('T',127,0,100,0);

        delay(i);

        DispShowChar('U',255,0,200,0);

        delay(i);

         DispShowChar('V',200,255,120,0);

        delay(i);

        DispShowChar('W',120,200,200,0);

        delay(i);

        DispShowChar('X',200,200,120,0);

        delay(i);

        DispShowChar('Y',127,0,180,0);

        delay(i);

        DispShowChar('Z',0,1800,200,0);

        delay(i);

        DispShowChar('a',255,0,0,0);

        delay(i);

        DispShowChar('b',0,255,0,0);

        delay(i);

        DispShowChar('c',0,0,255,0);

        delay(i);

        DispShowChar('d',255,255,255,0);

        delay(i);

        DispShowChar('e',0,255,255,0);

        delay(i);

        DispShowChar('f',255,255,0,0);

        delay(i);

        DispShowChar('g',255,0,255,0);

        delay(i);

        DispShowChar('h',255,127,0,0);

        delay(i);

        DispShowChar('i',127,255,0,0);

        delay(i);

        DispShowChar('j',127,0,255,0);

        delay(i);

        DispShowChar('k',255,127,127,0);

        delay(i);

        DispShowChar('l',127,127,255,0);

        delay(i);

        DispShowChar('m',127,255,127,0);

        delay(i);

        DispShowChar('n',255,127,255,0);

        delay(i);

        DispShowChar('0',200,120,120,0);

        delay(i);

        DispShowChar('p',120,200,120,0);

        delay(i);

        DispShowChar('q',200,120,120,0);

        delay(i);

        DispShowChar('r',120,120,200,0);

        delay(i);

        DispShowChar('s',120,120,120,0);

        delay(i);

        DispShowChar('t',127,0,100,0);

        delay(i);

        DispShowChar('u',255,0,200,0);

        delay(i);

         DispShowChar('v',200,255,120,0);

        delay(i);

        DispShowChar('w',120,200,200,0);

        delay(i);

        DispShowChar('x',200,200,120,0);

        delay(i);

        DispShowChar('y',127,0,180,0);

        delay(i);

        DispShowChar('z',0,1800,200,0);

        delay(i);

        DispShowChar('0',200,120,120,0);

        delay(i);

        DispShowChar('1',120,120,200,0);

        delay(i);

        DispShowChar('2',120,120,120,0);

        delay(i);

        DispShowChar('3',127,0,100,0);

        delay(i);

        DispShowChar('4',255,0,200,0);

        delay(i);

         DispShowChar('5',200,255,120,0);

        delay(i);

        DispShowChar('6',120,200,200,0);

        delay(i);

        DispShowChar('7',200,200,120,0);

        delay(i);

        DispShowChar('8',127,0,180,0);

        delay(i);

        DispShowChar('9',0,1800,200,0);

        delay(i);

       

       

        DispShowPic(0);

        delay(i);

        DispShowPic(1);

        delay(i);

        DispShowPic(2);

        delay(i);

        DispShowPic(3);

        delay(i);

       

       

        for(j = -7;j < 7;j++)

        {

          DispShowChar('I',255,255,0,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('t',0,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('e',255,0,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('a',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('d',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('s',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('t',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('u',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('d',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('i',255,255,255,j);

          delay(i);

        }

        for(j = -7;j < 7;j++)

        {

          DispShowChar('o',255,255,255,j);

          delay(i);

        }

       

        */

        DispShowPic(0);

        delay(i);

        DispShowPic(1);

        delay(i);

        DispShowPic(2);

        delay(i);

        /*

        DispShowPic(3);

        delay(i);

        DispShowPic(4);

        delay(i);

        DispShowPic(5);

        delay(i);

        */

      }