LED cube 8x8x8
- Войдите на сайт для отправки комментариев
Пнд, 18/06/2018 - 18:16
Здравствуйте, решил спаять куб 8х8х8 с Arduino Pro Mini 328 (5V 16MHz) и с подключением RTC модуля. Схемы и скетч нашел в интернете, всё спаял, проверил работу сдвиговых регистров, всё отлично, но вот скетч куба не работает как нужно, зажигаеться большая часть светодиодов и некоторые с них мерцают, если нажать на подключенной клавиатуре кнопку включения/выключения мерцать перестают, а при повторном нажатии снова мерцают, на другие кнопки не реагирует. Все библиотеки которые были подключены - установлены. При компиляции никаких ошибок не выдаёт. Не могли бы помочь слегка с кодом?
// library for RTC #include <iarduino_RTC.h> iarduino_RTC time(RTC_DS1307); // library for SD card #include <SD.h> File CubeFile; // Pin_Layer int latch_layer = 5;// layer_ST_CP int clock_layer = 6;// layer_SH_CP int data_layer = 4;// layer_DS // Pin_Column int latch_column = 8;// column_ST_CP int clock_column = 9;// column_SH_CP int data_column = 7;// column_DS // Pin SD card: SD_MOSI=D11, SD_MISO=D12, SD_SCK=13 int SD_CS = 10; // Pin RTC card: RTC_SCL=A5, RTC_SDA=A4 //initialize and clear cube byte f1[8]={255,255,255,255,255,255,255,255}; byte f2[8]={255,255,255,255,255,255,255,255}; byte f3[8]={255,255,255,255,255,255,255,255}; byte f4[8]={255,255,255,255,255,255,255,255}; byte f5[8]={255,255,255,255,255,255,255,255}; byte f6[8]={255,255,255,255,255,255,255,255}; byte f7[8]={255,255,255,255,255,255,255,255}; byte f8[8]={255,255,255,255,255,255,255,255}; bool clear_cube=false; //for button volatile char button_mode=0; volatile char button_setup=0; char button_up=0; char button_down=0; char button_change=0; char button_reset=0; char status_mode=1;// 1=time; -1=programm char status_setup=0; char status_up=0; char status_down=0; char status_change=1;// 1=hour; 2=minute; 3=day; 4=month; 5=year; 6=day of week char status_reset=0; //for time char time_hour=0; char time_minute=0; char time_day=0; char time_month=0; char time_year=0; char time_day_of_week=0; char time_seconds=0; char time_x=0; //for programm unsigned int file_position=0; String file_name="001.bin"; char file_name_0=0; char file_name_1=0; char file_name_2=1; void setup() { //for cube pinMode(latch_layer, OUTPUT);// set pinMode OUTPUT for layer and column pinMode(clock_layer, OUTPUT); pinMode(data_layer, OUTPUT); pinMode(latch_column, OUTPUT); pinMode(clock_column, OUTPUT); pinMode(data_column, OUTPUT); //for SD pinMode(SD_CS, OUTPUT);// for correct work library SD //for button attachInterrupt(1,f_mode,RISING);//mode interrupt attachInterrupt(0,f_setup,RISING);//setup interrupt pinMode(14,INPUT);//A0=reset pinMode(15,INPUT);//A1=up pinMode(16,INPUT);//A2=down pinMode(17,INPUT);//A3=change //open serial //Serial.begin(9600); // //for time time.begin(); time.gettime(); time_hour=time.Hours; time_minute=time.minutes; time_day=time.day; time_month=time.month; time_year=time.year; time_day_of_week=time.weekday; } void loop() { if(button_mode==1) { delay(300); interrupts(); if(status_mode==-1)status_mode=1; else status_mode=-1; button_mode=0; status_reset=0; status_up=0; status_down=0; status_setup=0; } if(button_setup==1) { delay(300); interrupts(); status_setup=1; button_setup=0; button_mode=0; status_reset=0; status_up=0; status_down=0; } if(digitalRead(14)==HIGH)//button reset { status_reset=1; delay(300); } if(digitalRead(16)==HIGH)//button up { status_up=1; delay(300); } if(digitalRead(15)==HIGH)//button down { status_down=1; delay(300); } if(digitalRead(17)==HIGH)//button change { delay(300); switch(status_change){ case 1: status_change=2; break; case 2: status_change=3; break; case 3: status_change=4; break; case 4: status_change=5; break; case 5: status_change=6; break; case 6: status_change=1; break;} } if(status_mode==1) { CubeFile.close(); if(clear_cube==false) { for(char x=0; x<8; x++) { f1[x]=255; f2[x]=255; f3[x]=255; f4[x]=255; f5[x]=255; f6[x]=255; f7[x]=255; f8[x]=255; } clear_cube=true; } //time mode if(status_setup==1) { change_time(); } else { //clear cube time.gettime(); time_hour=time.Hours; time_minute=time.minutes; time_day=time.day; time_month=time.month; time_year=time.year; time_day_of_week=time.weekday; if(status_reset==1) { left_side(time.month,0); right_side(time.day); word_top(3); for(int x=0; x<500; x++) { cube(f1,f2,f3,f4,f5,f6,f7,f8); } status_reset=0; } else { if(time_seconds!=time.seconds && time_x<30) { left_side(time.Hours,1); right_side(time.minutes); day_of_week(time.weekday); cube(f1,f2,f3,f4,f5,f6,f7,f8); time_x++; if(time_x==30)time_seconds=time.seconds; } else { left_side(time.Hours,0); right_side(time.minutes); day_of_week(time.weekday); cube(f1,f2,f3,f4,f5,f6,f7,f8); time_x=0; } } } } if(status_mode==-1) { if(clear_cube==true)clear_cube=false; //programm mode if(status_setup==1) { file_name=change_programm(); file_position=0; status_setup=0; } else { SD.begin(10);//Initialization for SD CubeFile=SD.open(file_name); if(CubeFile.available()>file_position) { for(char x=0; x<8; x++) { CubeFile.seek(file_position); f1[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f2[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f3[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f4[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f5[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f6[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f7[x]=CubeFile.peek(); file_position++; CubeFile.seek(file_position); f8[x]=CubeFile.peek(); file_position++; } cube(f1,f2,f3,f4,f5,f6,f7,f8); } else { file_position=0; file_name=change_programm(); } CubeFile.close(); } } } void word_top(char x) { switch(x){ case 0: f1[6]=B10111011; f1[5]=B10111011; f1[4]=B10000011; f1[3]=B10111011; f1[2]=B10111011; f1[1]=B10111011; break;//H case 1: f1[6]=B10111011; f1[5]=B10010011; f1[4]=B10101011; f1[3]=B10111011; f1[2]=B10111011; f1[1]=B10111011; break;//M case 2: f1[6]=B10111011; f1[5]=B11010111; f1[4]=B11101111; f1[3]=B11101111; f1[2]=B11101111; f1[1]=B11101111; break;//Y case 3: f1[6]=B10001111; f1[5]=B10110111; f1[4]=B10111011; f1[3]=B10111011; f1[2]=B10110111; f1[1]=B10001111; break;//D case 4: f1[6]=B10111111; f1[5]=B10010111; f1[4]=B10101011; f1[3]=B10101011; f1[2]=B10101011; f1[1]=B10101011; break;//m case 5: f1[6]=B11111111; f1[5]=B10111011; f1[4]=B10101011; f1[3]=B10101011; f1[2]=B10101011; f1[1]=B11010111; break;//w case 6: f1[6]=B10001111; f1[5]=B10110111; f1[4]=B10110111; f1[3]=B10001111; f1[2]=B10111111; f1[1]=B10111111; break;}//P } void day_of_week(char x) { switch(x){ case 0: f1[6]=B10011111;f1[5]=B10101011;f1[4]=B10010101;f1[3]=B10010111;f1[2]=B10100101;f1[1]=B10011011; break;//Вс case 1: f1[6]=B10001111;f1[5]=B10100101;f1[4]=B10100101;f1[3]=B10100001;f1[2]=B10100101;f1[1]=B10100101; break;//Пн case 2: f1[6]=B10011111;f1[5]=B10100001;f1[4]=B10011011;f1[3]=B10011011;f1[2]=B10101011;f1[1]=B10011011; break;//Вт case 3: f1[6]=B11011111;f1[5]=B10100011;f1[4]=B10110101;f1[3]=B10110011;f1[2]=B10100111;f1[1]=B11010111; break;//Ср case 4: f1[6]=B10101111;f1[5]=B10100001;f1[4]=B10101011;f1[3]=B11001011;f1[2]=B11101011;f1[1]=B11101011; break;//Чт case 5: f1[6]=B10001111;f1[5]=B10100001;f1[4]=B10101011;f1[3]=B10101011;f1[2]=B10101011;f1[1]=B10101011; break;//Пт case 6: f1[6]=B11011111;f1[5]=B10100001;f1[4]=B10110111;f1[3]=B10110011;f1[2]=B10100101;f1[1]=B11010011; break;}//Сб } void right_side(char x) { char x1, x2; x1=x/10; x2=x%10; char y1, y2, y3, y_x; for(char y=0; y<2; y++) { if(y==0) { y1=1; y2=2; y3=3; y_x=x1; } else { y1=5; y2=6; y3=7; y_x=x2; } switch(y_x){ case 0: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=255; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=254; f5[y1]=254; f6[y1]=254; f7[y1]=254; break; case 1: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=255; f4[y2]=254; f5[y2]=255; f6[y2]=255; f7[y2]=255; f3[y1]=255; f4[y1]=255; f5[y1]=254; f6[y1]=255; f7[y1]=255; break; case 2: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=255; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=255; f5[y1]=254; f6[y1]=254; f7[y1]=254; break; case 3: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=255; f5[y1]=254; f6[y1]=255; f7[y1]=254; break; case 4: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=255; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=255; f3[y1]=254; f4[y1]=254; f5[y1]=254; f6[y1]=255; f7[y1]=255; break; case 5: f3[y3]=254; f4[y3]=255; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=254; f5[y1]=254; f6[y1]=255; f7[y1]=254; break; case 6: f3[y3]=254; f4[y3]=255; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=254; f5[y1]=254; f6[y1]=254; f7[y1]=254; break; case 7: f3[y3]=254; f4[y3]=254; f5[y3]=255; f6[y3]=255; f7[y3]=255; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=255; f3[y1]=254; f4[y1]=255; f5[y1]=255; f6[y1]=254; f7[y1]=254; break; case 8: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=254; f5[y1]=254; f6[y1]=254; f7[y1]=254; break; case 9: f3[y3]=254; f4[y3]=254; f5[y3]=254; f6[y3]=254; f7[y3]=254; f3[y2]=254; f4[y2]=255; f5[y2]=254; f6[y2]=255; f7[y2]=254; f3[y1]=254; f4[y1]=254; f5[y1]=254; f6[y1]=255; f7[y1]=254; break;} } } void left_side(char x, char y) { if(y==0) { switch(x){ case 0: f3[0]=B00010001; f4[0]=B01010101; f5[0]=B01010101; f6[0]=B01010101; f7[0]=B00010001; break; case 1: f3[0]=B00011101; f4[0]=B01011001; f5[0]=B01010101; f6[0]=B01011101; f7[0]=B00011101; break; case 2: f3[0]=B00010001; f4[0]=B01011101; f5[0]=B01010001; f6[0]=B01010111; f7[0]=B00010001; break; case 3: f3[0]=B00010001; f4[0]=B01011101; f5[0]=B01010001; f6[0]=B01011101; f7[0]=B00010001; break; case 4: f3[0]=B00010101; f4[0]=B01010101; f5[0]=B01010001; f6[0]=B01011101; f7[0]=B00011101; break; case 5: f3[0]=B00010001; f4[0]=B01010111; f5[0]=B01010001; f6[0]=B01011101; f7[0]=B00010001; break; case 6: f3[0]=B00010001; f4[0]=B01010111; f5[0]=B01010001; f6[0]=B01010101; f7[0]=B00010001; break; case 7: f3[0]=B00010001; f4[0]=B01011101; f5[0]=B01011011; f6[0]=B01010111; f7[0]=B00010111; break; case 8: f3[0]=B00010001; f4[0]=B01010101; f5[0]=B01010001; f6[0]=B01010101; f7[0]=B00010001; break; case 9: f3[0]=B00010001; f4[0]=B01010101; f5[0]=B01010001; f6[0]=B01011101; f7[0]=B00010001; break; case 10: f3[0]=B11010001; f4[0]=B10010101; f5[0]=B01010101; f6[0]=B11010101; f7[0]=B11010001; break; case 11: f3[0]=B11011101; f4[0]=B10011001; f5[0]=B01010101; f6[0]=B11011101; f7[0]=B11011101; break; case 12: f3[0]=B11010001; f4[0]=B10011101; f5[0]=B01010001; f6[0]=B11010111; f7[0]=B11010001; break; case 13: f3[0]=B11010001; f4[0]=B10011101; f5[0]=B01010001; f6[0]=B11011101; f7[0]=B11010001; break; case 14: f3[0]=B11010101; f4[0]=B10010101; f5[0]=B01010001; f6[0]=B11011101; f7[0]=B11011101; break; case 15: f3[0]=B11010001; f4[0]=B10010111; f5[0]=B01010001; f6[0]=B11011101; f7[0]=B11010001; break; case 16: f3[0]=B11010001; f4[0]=B10010111; f5[0]=B01010001; f6[0]=B11010101; f7[0]=B11010001; break; case 17: f3[0]=B11010001; f4[0]=B10011101; f5[0]=B01011011; f6[0]=B11010111; f7[0]=B11010111; break; case 18: f3[0]=B11010001; f4[0]=B10010101; f5[0]=B01010001; f6[0]=B11010101; f7[0]=B11010001; break; case 19: f3[0]=B11010001; f4[0]=B10010101; f5[0]=B01010001; f6[0]=B11011101; f7[0]=B11010001; break; case 20: f3[0]=B00010001; f4[0]=B11010101; f5[0]=B00010101; f6[0]=B01110101; f7[0]=B00010001; break; case 21: f3[0]=B00011101; f4[0]=B11011001; f5[0]=B00010101; f6[0]=B01111101; f7[0]=B00011101; break; case 22: f3[0]=B00010001; f4[0]=B11011101; f5[0]=B00010001; f6[0]=B01110111; f7[0]=B00010001; break; case 23: f3[0]=B00010001; f4[0]=B11011101; f5[0]=B00010001; f6[0]=B01111101; f7[0]=B00010001; break; case 24: f3[0]=B11111111; f4[0]=B11111111; f5[0]=B11111111; f6[0]=B11111111; f7[0]=B11111111; break; case 25: f3[0]=B10111011; f4[0]=B10101011; f5[0]=B10101011; f6[0]=B10101011; f7[0]=B11010111; break;}; } else { switch(x){ case 0: f3[0]=B00010001; f4[0]=B01010100; f5[0]=B01010101; f6[0]=B01010100; f7[0]=B00010001; break; case 1: f3[0]=B00011101; f4[0]=B01011000; f5[0]=B01010101; f6[0]=B01011100; f7[0]=B00011101; break; case 2: f3[0]=B00010001; f4[0]=B01011100; f5[0]=B01010001; f6[0]=B01010110; f7[0]=B00010001; break; case 3: f3[0]=B00010001; f4[0]=B01011100; f5[0]=B01010001; f6[0]=B01011100; f7[0]=B00010001; break; case 4: f3[0]=B00010101; f4[0]=B01010100; f5[0]=B01010001; f6[0]=B01011100; f7[0]=B00011101; break; case 5: f3[0]=B00010001; f4[0]=B01010110; f5[0]=B01010001; f6[0]=B01011100; f7[0]=B00010001; break; case 6: f3[0]=B00010001; f4[0]=B01010110; f5[0]=B01010001; f6[0]=B01010100; f7[0]=B00010001; break; case 7: f3[0]=B00010001; f4[0]=B01011100; f5[0]=B01011011; f6[0]=B01010110; f7[0]=B00010111; break; case 8: f3[0]=B00010001; f4[0]=B01010100; f5[0]=B01010001; f6[0]=B01010100; f7[0]=B00010001; break; case 9: f3[0]=B00010001; f4[0]=B01010100; f5[0]=B01010001; f6[0]=B01011100; f7[0]=B00010001; break; case 10: f3[0]=B11010001; f4[0]=B10010100; f5[0]=B01010101; f6[0]=B11010100; f7[0]=B11010001; break; case 11: f3[0]=B11011101; f4[0]=B10011000; f5[0]=B01010101; f6[0]=B11011100; f7[0]=B11011101; break; case 12: f3[0]=B11010001; f4[0]=B10011100; f5[0]=B01010001; f6[0]=B11010110; f7[0]=B11010001; break; case 13: f3[0]=B11010001; f4[0]=B10011100; f5[0]=B01010001; f6[0]=B11011100; f7[0]=B11010001; break; case 14: f3[0]=B11010101; f4[0]=B10010100; f5[0]=B01010001; f6[0]=B11011100; f7[0]=B11011101; break; case 15: f3[0]=B11010001; f4[0]=B10010110; f5[0]=B01010001; f6[0]=B11011100; f7[0]=B11010001; break; case 16: f3[0]=B11010001; f4[0]=B10010110; f5[0]=B01010001; f6[0]=B11010100; f7[0]=B11010001; break; case 17: f3[0]=B11010001; f4[0]=B10011100; f5[0]=B01011011; f6[0]=B11010110; f7[0]=B11010111; break; case 18: f3[0]=B11010001; f4[0]=B10010100; f5[0]=B01010001; f6[0]=B11010100; f7[0]=B11010001; break; case 19: f3[0]=B11010001; f4[0]=B10010100; f5[0]=B01010001; f6[0]=B11011100; f7[0]=B11010001; break; case 20: f3[0]=B00010001; f4[0]=B11010100; f5[0]=B00010101; f6[0]=B01110100; f7[0]=B00010001; break; case 21: f3[0]=B00011101; f4[0]=B11011000; f5[0]=B00010101; f6[0]=B01111100; f7[0]=B00011101; break; case 22: f3[0]=B00010001; f4[0]=B11011100; f5[0]=B00010001; f6[0]=B01110110; f7[0]=B00010001; break; case 23: f3[0]=B00010001; f4[0]=B11011100; f5[0]=B00010001; f6[0]=B01111100; f7[0]=B00010001; break;}; } } void change_time() { { if(status_change==1) { if(status_up==1) { status_up=0; time_hour++; if(time_hour==24)time_hour=0; } if(status_down==1) { status_down=0; time_hour--; if(time_hour==-1)time_hour=23; } right_side(time_hour); left_side(24,0); word_top(0); cube(f1,f2,f3,f4,f5,f6,f7,f8); } if(status_change==2) { if(status_up==1) { status_up=0; time_minute++; if(time_minute==60)time_minute=0; } if(status_down==1) { status_down=0; time_minute--; if(time_minute==-1)time_minute=59; } right_side(time_minute); left_side(24,0); word_top(1); cube(f1,f2,f3,f4,f5,f6,f7,f8); } if(status_change==3) { if(status_up==1) { status_up=0; time_day++; if(time_day==32)time_day=1; } if(status_down==1) { status_down=0; time_day--; if(time_day==0)time_day=31; } right_side(time_day); left_side(24,0); word_top(3); cube(f1,f2,f3,f4,f5,f6,f7,f8); } if(status_change==4) { if(status_up==1) { status_up=0; time_month++; if(time_month==13)time_month=1; } if(status_down==1) { status_down=0; time_month--; if(time_month==0)time_month=12; } right_side(time_month); left_side(24,0); word_top(4); cube(f1,f2,f3,f4,f5,f6,f7,f8); } if(status_change==5) { if(status_up==1) { status_up=0; time_year++; if(time_year==100)time_year=0; } if(status_down==1) { status_down=0; time_year--; if(time_year==-1)time_year=99; } right_side(time_year); left_side(20,0); word_top(2); cube(f1,f2,f3,f4,f5,f6,f7,f8); } if(status_change==6) { if(status_up==1) { status_up=0; time_day_of_week++; if(time_day_of_week==7)time_day_of_week=0; } if(status_down==1) { status_down=0; time_day_of_week--; if(time_day_of_week==-1)time_day_of_week=6; } day_of_week(time_day_of_week); right_side(time_day_of_week); left_side(25,0); cube(f1,f2,f3,f4,f5,f6,f7,f8); } if(status_reset==1) { status_setup=0; status_reset=0; time.settime(0, time_minute, time_hour, time_day, time_month, time_year, time_day_of_week); } } } String change_programm() { String x; bool d_0=false; bool d_1=false; d_1=change_digital(file_name_2); if(d_1==true) { d_0=change_digital(file_name_1); } if(d_0==true) { change_digital(file_name_0); } x=digital_to_word(file_name_0)+digital_to_word(file_name_1)+digital_to_word(file_name_2)+".bin"; if(!SD.exists(x)) { x="001.bin"; file_name_0=0; file_name_1=0; file_name_2=1; } return(x); } bool change_digital(char &digital) { bool x=false; switch(digital) { case 0: digital=1; break; case 1: digital=2; break; case 2: digital=3; break; case 3: digital=4; break; case 4: digital=5; break; case 5: digital=6; break; case 6: digital=7; break; case 7: digital=8; break; case 8: digital=9; break; case 9: digital=0; x=true; break; } return (x); } String digital_to_word(char digital) { String x; switch(digital) { case 0: x="0"; break; case 1: x="1"; break; case 2: x="2"; break; case 3: x="3"; break; case 4: x="4"; break; case 5: x="5"; break; case 6: x="6"; break; case 7: x="7"; break; case 8: x="8"; break; case 9: x="9"; break; } return (x); } void f_mode() { button_mode=1; noInterrupts(); } void f_setup() { button_setup=1; noInterrupts(); } void cube(byte f1[8], byte f2[8], byte f3[8], byte f4[8], byte f5[8], byte f6[8], byte f7[8], byte f8[8])// функция прорисовки куба { layer_column(f1,B00000001); layer_column(f2,B00000010); layer_column(f3,B00000100); layer_column(f4,B00001000); layer_column(f5,B00010000); layer_column(f6,B00100000); layer_column(f7,B01000000); layer_column(f8,B10000000); layer_column(f5,B00000000); } void layer_column(byte lc_column[8], byte lc_layer)// функчия выбора слоя и выполнение функции заполения столбцов { // устанавливаем синхронизацию "защелки" на LOW digitalWrite(latch_layer, LOW); // выбираем слой shiftOut(data_layer, clock_layer, MSBFIRST, lc_layer); // выбираем столбцы column(lc_column); //"защелкиваем" регистр, тем самым устанавливая значения на выходах digitalWrite(latch_layer, HIGH); } void column(byte c_column[8])// функция заполнения столбцов { // устанавливаем синхронизацию "защелки" на LOW digitalWrite(latch_column, LOW); // передаем последовательно на dataPin for(byte x=0; x<8; x++) { shiftOut(data_column, clock_column, MSBFIRST, c_column[x]); } //"защелкиваем" регистр, тем самым устанавливая значения на выходах digitalWrite(latch_column, HIGH); }
Вот ссылка на материалы - http://cxem.net/arduino/arduino210.php
А есть уверенность. что оно вообще должно работать? А то, судя по коду - писал настоящий %%%% - кто ж эффекты записывает через СВИТЧИ с 25 вариантами ...
Кстати, в скетче библиотека SDи куяа массивов... а памяти-то хватает?
Уверенности в работоспособности кода всё меньше и меньше, по этому и попросил помощи.
Памяти вроде как хватает.
Памяти вроде как хватает.
на чём основано это заявление? Проверки проводились? Память мониторилась? Как?
на чём основано это заявление? Проверки проводились? Память мониторилась? Как?
Проверки не проводились, слепая вера характеристикам и результатам компиляции.
На сколько мне известно, скетчи храняться в Flash-памяти, скетч занимает около 3 тыс. байт, когда объём Flash-памяти составляет 16 кБ
Проверки не проводились, слепая вера характеристикам и результатам компиляции.
На сколько мне известно, скетчи храняться в Flash-памяти, скетч занимает около 3 тыс. байт, когда объём Flash-памяти составляет 16 кБ
По этим словам видно, что вы совершенно не в теме. Не надо фантазировать - откомпилируйте скетч и выложите диагностику, где указывается ращмер кода и данных.
Хотя если вам не интересно - можете не делать. Нам тут тем более :)
На сколько мне известно, скетчи храняться в Flash-памяти, скетч занимает около 3 тыс. байт, когда объём Flash-памяти составляет 16 кБ
Во-первых, не 16, а во-вторых, причёт тут вообще flash? Вы пользуете динамическую память, и что там у Вас творится в ram надо смотреть и проверять, а не слепо верить.