//========================================================= // LPC1114 Project //========================================================= // File Name : main.c // Function : Main Routine //--------------------------------------------------------- // Rev.01 2010.08.01 Munetomo Maruyama //--------------------------------------------------------- // Copyright (C) 2010-2011 Munetomo Maruyama //========================================================= // ---- License Information ------------------------------- // Anyone can FREELY use this code fully or partially // under conditions shown below. // 1. You may use this code only for individual purpose, // and educational purpose. // Do not use this code for business even if partially. // 2. You should use this code under the GNU GPL. // 3. You should remain this header text in your codes // including Copyright credit and License Information. // 4. Your codes should inherit this license information. //========================================================= // ---- Patent Notice ------------------------------------- // I have not cared whether this system (hw + sw) causes // infringement on the patent, copyright, trademark, // or trade secret rights of others. You have all // responsibilities for determining if your designs // and products infringe on the intellectual property // rights of others, when you use technical information // included in this system for your business. //========================================================= // ---- Disclaimers --------------------------------------- // The function and reliability of this system are not // guaranteed. They may cause any damages to loss of // properties, data, money, profits, life, or business. // By adopting this system even partially, you assume // all responsibility for its use. //========================================================= #ifdef __USE_CMSIS #include "LPC11xx.h" #endif #include "array_com.h" #include "color_led.h" #include "led_array.h" #include "systick.h" //=============================== // LED Array with Synchronization //=============================== //------------------------ // Draw LED Array (a Demo) //------------------------ void Draw_LED_Array(void) { uint32_t x,a,scene,step;//a MARYの座標 uint32_t LEDC=LED_ARRAY_ORG;//LEDマトリクスの色定義 x=0; step = (Get_Ticks() >> 5);//シフト数によりスピード変化 scene=step&0x1f;//最大31(1+F)ラインシフト(四文字のため) a=Array_COM_Get_ID_PosX(); uint32_t z[47][8]={ //M {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC}, //A {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC}, //R {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, //Y {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LEDC,LEDC}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, //M 初期表示までの表示用 {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC,LEDC}, //A 初期表示までの表示用(MARY2個での表示用) {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, {LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LED_ARRAY_BLK,LEDC,LEDC,LED_ARRAY_BLK,LED_ARRAY_BLK}, }; if(a==0){//a==0でMARYが左側 for(x=0;x<=7;x++){ Set_LED_Array(x, 0, z[x+scene][0]); Set_LED_Array(x, 1, z[x+scene][1]); Set_LED_Array(x, 2, z[x+scene][2]); Set_LED_Array(x, 3, z[x+scene][3]); Set_LED_Array(x, 4, z[x+scene][4]); Set_LED_Array(x, 5, z[x+scene][5]); Set_LED_Array(x, 6, z[x+scene][6]); Set_LED_Array(x, 7, z[x+scene][7]); }; }else{//a≠0でMARYが右側 if((x+scene+8)<41){ for(x=0;x<=7;x++){ Set_LED_Array(x, 0, z[x+scene+8][0]); Set_LED_Array(x, 1, z[x+scene+8][1]); Set_LED_Array(x, 2, z[x+scene+8][2]); Set_LED_Array(x, 3, z[x+scene+8][3]); Set_LED_Array(x, 4, z[x+scene+8][4]); Set_LED_Array(x, 5, z[x+scene+8][5]); Set_LED_Array(x, 6, z[x+scene+8][6]); Set_LED_Array(x, 7, z[x+scene+8][7]); } } }; } //----------------------- // Main Routine //----------------------- int main(void) { uint32_t tick_curr; uint32_t tick_sync_intv; uint32_t tick_sync_intv_prev = 0; // // Initialization // Init_SysTick(); Init_Array_COM(); Array_COM_ID_Assignment(); Init_Color_LED(); Init_LED_Array(); // // Main Loop // while(1) { // // Draw LEDs // Draw_Color_LED(); Draw_LED_Array(); // // Do Array Sync // tick_curr = Get_Ticks(); tick_sync_intv = tick_curr - tick_sync_intv_prev; if (tick_sync_intv > 128) // 1.28sec { tick_sync_intv_prev = (tick_curr / 128) * 128; // // Do Sync with Adjacent Block // Sync_Ticks_Tx(S); // South Sync_Ticks_Tx(E); // East } } return 0; } //========================================================= // End of Program //=========================================================