Гость angelv Опубликовано 14 Февраля, 2016 в 07:44 Жалоба Поделиться Опубликовано 14 Февраля, 2016 в 07:44 (изменено) на днях собрал данный кубик, _https://yadi.sk/i/779cbaYYoob9X _https://yadi.sk/i/Nixz4bpioobKJ пока что подключил его для тестирования к Arduino UNO, но сделаю все на одну плату на Arduino mini Примерная схема на картинке, схема подключения контактов: [(x,y)-Pin] (1,1)-13 (1,2)-12 (1,3)-11 (1,4)-10 (2,1)-9 (2,2)-8 (2,3)-7 (2,4)-6 (3,1)-5 (3-2)-4 (3-3)-3 (3,4)-2 (4,1)-1 (4,2)-0 (4,3)-A5 (4,4)-A4 Layers a-A0 b-A1 c-A2 d-A3 Стрейч: //initializing and declaring led rows int column[16]={13,12,11,10,9,8,7,6,5,4,3,2,1,0,A5,A4}; //initializing and declaring led layers int layer[4]={A3,A2,A1,A0}; int time = 250; void setup() { //setting rows to ouput for(int i = 0; i<16; i++) { pinMode(column[i], OUTPUT); } //setting layers to output for(int i = 0; i<4; i++) { pinMode(layer[i], OUTPUT); } //seeding random for random pattern randomSeed(analogRead(10)); } //xxxxxxxxxxxxxxxxxxxxFUNCTION LOOPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx void loop() { turnEverythingOff();//turn all off flickerOn(); turnEverythingOn();//turn all on delay(time); turnOnAndOffAllByLayerUpAndDownNotTimed(); layerstompUpAndDown(); turnOnAndOffAllByColumnSideways(); delay(time); aroundEdgeDown(); turnEverythingOff(); randomflicker(); randomRain(); diagonalRectangle(); goThroughAllLedsOneAtATime(); propeller(); spiralInAndOut(); flickerOff(); turnEverythingOff(); delay(2000); } //xxxxxxxxxxxxxxxxxxxxFUNCTIONSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ///////////////////////////////////////////////////////////turn all off void turnEverythingOff() { for(int i = 0; i<16; i++) { digitalWrite(column[i], 1); } for(int i = 0; i<4; i++) { digitalWrite(layer[i], 0); } } ////////////////////////////////////////////////////////////turn all on void turnEverythingOn() { for(int i = 0; i<16; i++) { digitalWrite(column[i], 0); } //turning on layers for(int i = 0; i<4; i++) { digitalWrite(layer[i], 1); } } ///////////////////////////////////////////////////////turn columns off void turnColumnsOff() { for(int i = 0; i<16; i++) { digitalWrite(column[i], 1); } } /////////////////////////////////////////////////////////////flicker on void flickerOn() { int i = 150; while(i != 0) { turnEverythingOn(); delay(i); turnEverythingOff(); delay(i); i-= 5; } } //////////////turn everything on and off by layer up and down NOT TIMED void turnOnAndOffAllByLayerUpAndDownNotTimed() { int x = 75; for(int i = 5; i != 0; i--) { turnEverythingOn(); for(int i = 4; i!=0; i--) { digitalWrite(layer[i-1], 0); delay(x); } for(int i = 0; i<4; i++) { digitalWrite(layer[i], 1); delay(x); } for(int i = 0; i<4; i++) { digitalWrite(layer[i], 0); delay(x); } for(int i = 4; i!=0; i--) { digitalWrite(layer[i-1], 1); delay(x); } } } //////////////////////////turn everything on and off by column sideways void turnOnAndOffAllByColumnSideways() { int x = 75; turnEverythingOff(); //turn on layers for(int i = 0; i<4; i++) { digitalWrite(layer[i], 1); } for(int y = 0; y<3; y++) { //turn on 0-3 for(int i = 0; i<4; i++) { digitalWrite(column[i], 0); delay(x); } //turn on 4-7 for(int i = 4; i<8; i++) { digitalWrite(column[i], 0); delay(x); } //turn on 8-11 for(int i = 8; i<12; i++) { digitalWrite(column[i], 0); delay(x); } //turn on 12-15 for(int i = 12; i<16; i++) { digitalWrite(column[i], 0); delay(x); } //turn off 0-3 for(int i = 0; i<4; i++) { digitalWrite(column[i], 1); delay(x); } //turn off 4-7 for(int i = 4; i<8; i++) { digitalWrite(column[i], 1); delay(x); } //turn off 8-11 for(int i = 8; i<12; i++) { digitalWrite(column[i], 1); delay(x); } //turn off 12-15 for(int i = 12; i<16; i++) { digitalWrite(column[i], 1); delay(x); } //turn on 12-15 for(int i = 12; i<16; i++) { digitalWrite(column[i], 0); delay(x); } //turn on 8-11 for(int i = 8; i<12; i++) { digitalWrite(column[i], 0); delay(x); } //turn on 4-7 for(int i = 4; i<8; i++) { digitalWrite(column[i], 0); delay(x); } //turn on 0-3 for(int i = 0; i<4; i++) { digitalWrite(column[i], 0); delay(x); } //turn off 12-15 for(int i = 12; i<16; i++) { digitalWrite(column[i], 1); delay(x); } //turn off 8-11 for(int i = 8; i<12; i++) { digitalWrite(column[i], 1); delay(x); } //turn off 4-7 for(int i = 4; i<8; i++) { digitalWrite(column[i], 1); delay(x); } //turn off 0-3 for(int i = 0; i<4; i++) { digitalWrite(column[i], 1); delay(x); } } } /////////////////////////////////////////up and down single layer stomp void layerstompUpAndDown() { int x = 75; for(int i = 0; i<4; i++) { digitalWrite(layer[i], 0); } for(int y = 0; y<5; y++) { for(int count = 0; count<1; count++) { for(int i = 0; i<4; i++) { digitalWrite(layer[i], 1); delay(x); digitalWrite(layer[i], 0); } for(int i = 4; i !=0; i--) { digitalWrite(layer[i-1], 1); delay(x); digitalWrite(layer[i-1], 0); } } for(int i = 0; i<4; i++) { digitalWrite(layer[i], 1); delay(x); } for(int i = 4; i!=0; i--) { digitalWrite(layer[i-1], 0); delay(x); } } } ////////////////////////////////////////////////////////////flicker off void flickerOff() { turnEverythingOn(); for(int i = 0; i!= 150; i+=5) { turnEverythingOff(); delay(i+50); turnEverythingOn(); delay(i); } } ///////////////////////////////////////////around edge of the cube down void aroundEdgeDown() { for(int x = 200; x != 0; x -=50) { turnEverythingOff(); for(int i = 4; i != 0; i--) { digitalWrite(layer[i-1], 1); digitalWrite(column[5], 0); digitalWrite(column[6], 0); digitalWrite(column[9], 0); digitalWrite(column[10], 0); digitalWrite(column[0], 0); delay(x); digitalWrite(column[0], 1); digitalWrite(column[4], 0); delay(x); digitalWrite(column[4], 1); digitalWrite(column[8], 0); delay(x); digitalWrite(column[8], 1); digitalWrite(column[12], 0); delay(x); digitalWrite(column[12], 1); digitalWrite(column[13], 0); delay(x); digitalWrite(column[13], 1); digitalWrite(column[15], 0); delay(x); digitalWrite(column[15], 1); digitalWrite(column[14], 0); delay(x); digitalWrite(column[14], 1); digitalWrite(column[11], 0); delay(x); digitalWrite(column[11], 1); digitalWrite(column[7], 0); delay(x); digitalWrite(column[7], 1); digitalWrite(column[3], 0); delay(x); digitalWrite(column[3], 1); digitalWrite(column[2], 0); delay(x); digitalWrite(column[2], 1); digitalWrite(column[1], 0); delay(x); digitalWrite(column[1], 1); } } } /////////////////////////////////////////////////////////random flicker void randomflicker() { turnEverythingOff(); int x = 10; for(int i = 0; i !=750; i+=2) { int randomLayer = random(0,4); int randomColumn = random(0,16); digitalWrite(layer[randomLayer], 1); digitalWrite(column[randomColumn], 0); delay(x); digitalWrite(layer[randomLayer], 0); digitalWrite(column[randomColumn], 1); delay(x); } } ////////////////////////////////////////////////////////////random rain void randomRain() { turnEverythingOff(); int x = 100; for(int i = 0; i!=60; i+=2) { int randomColumn = random(0,16); digitalWrite(column[randomColumn], 0); digitalWrite(layer[0], 1); delay(x+50); digitalWrite(layer[0], 0); digitalWrite(layer[1], 1); delay(x); digitalWrite(layer[1], 0); digitalWrite(layer[2], 1); delay(x); digitalWrite(layer[2], 0); digitalWrite(layer[3], 1); delay(x+50); digitalWrite(layer[3], 0); digitalWrite(column[randomColumn], 1); } } /////////////////////////////////////////////////////diagonal rectangle void diagonalRectangle() { int x = 350; turnEverythingOff(); for(int count = 0; count<5; count++) { //top left for(int i = 0; i<8; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[3], 1); digitalWrite(layer[2], 1); delay(x); turnEverythingOff(); //middle middle for(int i = 4; i<12; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[1], 1); digitalWrite(layer[2], 1); delay(x); turnEverythingOff(); //bottom right for(int i = 8; i<16; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[0], 1); digitalWrite(layer[1], 1); delay(x); turnEverythingOff(); //bottom middle for(int i = 4; i<12; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[0], 1); digitalWrite(layer[1], 1); delay(x); turnEverythingOff(); //bottom left for(int i = 0; i<8; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[0], 1); digitalWrite(layer[1], 1); delay(x); turnEverythingOff(); //middle middle for(int i = 4; i<12; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[1], 1); digitalWrite(layer[2], 1); delay(x); turnEverythingOff(); //top right for(int i = 8; i<16; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[2], 1); digitalWrite(layer[3], 1); delay(x); turnEverythingOff(); //top middle for(int i = 4; i<12; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[2], 1); digitalWrite(layer[3], 1); delay(x); turnEverythingOff(); } //top left for(int i = 0; i<8; i++) { digitalWrite(column[i], 0); } digitalWrite(layer[3], 1); digitalWrite(layer[2], 1); delay(x); turnEverythingOff(); } //////////////////////////////////////////////////////////////propeller void propeller() { turnEverythingOff(); int x = 90; for(int y = 4; y>0; y--) { for(int i = 0; i<6; i++) { //turn on layer digitalWrite(layer[y-1], 1); //a1 turnColumnsOff(); digitalWrite(column[0], 0); digitalWrite(column[5], 0); digitalWrite(column[10], 0); digitalWrite(column[15], 0); delay(x); //b1 turnColumnsOff(); digitalWrite(column[4], 0); digitalWrite(column[5], 0); digitalWrite(column[10], 0); digitalWrite(column[11], 0); delay(x); //c1 turnColumnsOff(); digitalWrite(column[6], 0); digitalWrite(column[7], 0); digitalWrite(column[8], 0); digitalWrite(column[9], 0); delay(x); //d1 turnColumnsOff(); digitalWrite(column[3], 0); digitalWrite(column[6], 0); digitalWrite(column[9], 0); digitalWrite(column[12], 0); delay(x); //d2 turnColumnsOff(); digitalWrite(column[2], 0); digitalWrite(column[6], 0); digitalWrite(column[9], 0); digitalWrite(column[13], 0); delay(x); //d3 turnColumnsOff(); digitalWrite(column[1], 0); digitalWrite(column[5], 0); digitalWrite(column[10], 0); digitalWrite(column[14], 0); delay(x); } } //d4 turnColumnsOff(); digitalWrite(column[0], 0); digitalWrite(column[5], 0); digitalWrite(column[10], 0); digitalWrite(column[15], 0); delay(x); } //////////////////////////////////////////////////////spiral in and out void spiralInAndOut() { turnEverythingOn(); int x = 60; for(int i = 0; i<6; i++) { //spiral in clockwise digitalWrite(column[0], 1); delay(x); digitalWrite(column[1], 1); delay(x); digitalWrite(column[2], 1); delay(x); digitalWrite(column[3], 1); delay(x); digitalWrite(column[7], 1); delay(x); digitalWrite(column[11], 1); delay(x); digitalWrite(column[15], 1); delay(x); digitalWrite(column[14], 1); delay(x); digitalWrite(column[13], 1); delay(x); digitalWrite(column[12], 1); delay(x); digitalWrite(column[8], 1); delay(x); digitalWrite(column[4], 1); delay(x); digitalWrite(column[5], 1); delay(x); digitalWrite(column[6], 1); delay(x); digitalWrite(column[10], 1); delay(x); digitalWrite(column[9], 1); delay(x); ///////////////////////////////////////spiral out counter clockwise digitalWrite(column[9], 0); delay(x); digitalWrite(column[10], 0); delay(x); digitalWrite(column[6], 0); delay(x); digitalWrite(column[5], 0); delay(x); digitalWrite(column[4], 0); delay(x); digitalWrite(column[8], 0); delay(x); digitalWrite(column[12], 0); delay(x); digitalWrite(column[13], 0); delay(x); digitalWrite(column[14], 0); delay(x); digitalWrite(column[15], 0); delay(x); digitalWrite(column[11], 0); delay(x); digitalWrite(column[7], 0); delay(x); digitalWrite(column[3], 0); delay(x); digitalWrite(column[2], 0); delay(x); digitalWrite(column[1], 0); delay(x); digitalWrite(column[0], 0); delay(x); ///////////////////////////////////////spiral in counter clock wise digitalWrite(column[0], 1); delay(x); digitalWrite(column[4], 1); delay(x); digitalWrite(column[8], 1); delay(x); digitalWrite(column[12], 1); delay(x); digitalWrite(column[13], 1); delay(x); digitalWrite(column[14], 1); delay(x); digitalWrite(column[15], 1); delay(x); digitalWrite(column[11], 1); delay(x); digitalWrite(column[7], 1); delay(x); digitalWrite(column[3], 1); delay(x); digitalWrite(column[2], 1); delay(x); digitalWrite(column[1], 1); delay(x); digitalWrite(column[5], 1); delay(x); digitalWrite(column[9], 1); delay(x); digitalWrite(column[10], 1); delay(x); digitalWrite(column[6], 1); delay(x); //////////////////////////////////////////////spiral out clock wise digitalWrite(column[6], 0); delay(x); digitalWrite(column[10], 0); delay(x); digitalWrite(column[9], 0); delay(x); digitalWrite(column[5], 0); delay(x); digitalWrite(column[1], 0); delay(x); digitalWrite(column[2], 0); delay(x); digitalWrite(column[3], 0); delay(x); digitalWrite(column[7], 0); delay(x); digitalWrite(column[11], 0); delay(x); digitalWrite(column[15], 0); delay(x); digitalWrite(column[14], 0); delay(x); digitalWrite(column[13], 0); delay(x); digitalWrite(column[12], 0); delay(x); digitalWrite(column[8], 0); delay(x); digitalWrite(column[4], 0); delay(x); digitalWrite(column[0], 0); delay(x); } } //////////////////////////////////////go through all leds one at a time void goThroughAllLedsOneAtATime() { int x = 15; turnEverythingOff(); for(int y = 0; y<5; y++) { //0-3 for(int count = 4; count != 0; count--) { digitalWrite(layer[count-1], 1); for(int i = 0; i<4; i++) { digitalWrite(column[i], 0); delay(x); digitalWrite(column[i], 1); delay(x); } digitalWrite(layer[count-1], 0); } //4-7 for(int count = 0; count < 4; count++) { digitalWrite(layer[count], 1); for(int i = 4; i<8; i++) { digitalWrite(column[i], 0); delay(x); digitalWrite(column[i], 1); delay(x); } digitalWrite(layer[count], 0); } //8-11 for(int count = 4; count != 0; count--) { digitalWrite(layer[count-1], 1); for(int i = 8; i<12; i++) { digitalWrite(column[i], 0); delay(x); digitalWrite(column[i], 1); delay(x); } digitalWrite(layer[count-1], 0); } //12-15 for(int count = 0; count < 4; count++) { digitalWrite(layer[count], 1); for(int i = 12; i<16; i++) { digitalWrite(column[i], 0); delay(x); digitalWrite(column[i], 1); delay(x); } digitalWrite(layer[count], 0); } } } Изменено 14 Февраля, 2016 в 19:08 пользователем angelv Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость angelv Опубликовано 14 Февраля, 2016 в 15:45 Жалоба Поделиться Опубликовано 14 Февраля, 2016 в 15:45 (изменено) следующий шаг собрать на Atmel AVR Atmega16. по данной схеме. в схеме написано, что кварц должен быть 14.7456 его можно заменить на 15 или 14? Изменено 14 Февраля, 2016 в 15:47 пользователем angelv Ссылка на комментарий Поделиться на другие сайты Поделиться
Datagor Опубликовано 14 Февраля, 2016 в 17:16 Жалоба Поделиться Опубликовано 14 Февраля, 2016 в 17:16 От спасибо, исправился! :smile: Нет, без изменения программы заменить кварц нельзя. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти