светодиодный куб ошибки

kainda
Offline
Зарегистрирован: 09.02.2017
// инициализация плюсовых пинов
 int column[25]={2,3,4,5,6,7,8,9,10,11,12,13,22,23,24,25,26,27,28,29,30,31,32,33,34};
// инициализация минусовых пинов
  int layer[5]={A0,A1,A2,A3,A4};
 
void setup()
{
  //Установка строк для вывода
  for(int i = 0; i<25; i++) // 10
  {
    pinMode(column[i], OUTPUT);
  }
  //Установка строк для вывода
  for(int i = 0; i<5; i++)
  {
    pinMode(layer[i], OUTPUT); //20 строка
  }

} //20

void loop()

{
 /////////// включить все, с кодом delay(200); гаснят ряды поочередно

 {
    for(int i = 0; i<25; i++)
   {
     digitalWrite(column[i], 1);
   } //30
   for(int i = 0; i<5; i++)
   {
     digitalWrite(layer[i], 0);
      
   }

// при включенных диодах данный код гасит ряды вверх вниз и снизу вверх
{
  int x = 75;
  for(int i = 5; i != 0; i--) ///40
  {
  
    for(int i = 5; i!=0; i--)
    {
      digitalWrite(layer[i-1], 0);
      delay(x);
    }
    for(int i = 0; i<5; i++)
    {
      digitalWrite(layer[i], 1);  //50
      delay(x);
    }
      for(int i = 0; i<5; i++)
    {
      digitalWrite(layer[i], 0);
      delay(x);
    }
    for(int i = 5; i!=0; i--)
    {
      digitalWrite(layer[i-1], 1);  //60
      delay(x);
    }}}
    ///
    void layerON ()
    
   {
     for(int i = 0; i<25; i++)
   
     {
     digitalWrite(column[i], 1);
   }
   
for(int i = 0; i<5; i++)  //70
   
     {
       digitalWrite(layer[i], 1);
   }}
      
   
   
     int x = 75;
    for(int i = 0; i<5; i++)
  {
    digitalWrite(layer[i], 1);
  }  //80
  for(int y = 0; y<3; y++)
  {
    //включить 0-3
    for(int i = 0; i<5; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //включить 4-7
    for(int i = 4; i<10; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //включить 8-11
    for(int i = 8; i<15; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //включить 12-15
    for(int i = 12; i<25; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //выключить 0-3
    for(int i = 0; i<5; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //включить 4-7
    for(int i = 5; i<10; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //включить 8-11
    for(int i = 10; i<15; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //выключить 12-15
    for(int i = 20; i<25; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //включить 12-15
    for(int i = 20; i<25; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //включить 8-11
    for(int i = 15; i<20; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //включить 4-7
    for(int i = 5; i<10; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //включить 0-3
    for(int i = 0; i<5; i++)
    {
      digitalWrite(column[i], 0);
      delay(x);
    }
    //выключить 12-15
    for(int i = 20; i<25; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //выключить 8-11
    for(int i = 10; i<15; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //выключить 4-7
    for(int i = 5; i<10; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    }
    //выключить 0-3
    for(int i = 0; i<5; i++)
    {
      digitalWrite(column[i], 1);
      delay(x);
    } }

ребята прошу помощи в програмировании куба 5х5х5

спаял куб, проверил, подключил к Меге...

пару действий подключил по отдельности - все работает. решил объединить эти действия... и все приплыл.

просьба в гугл не посылать... там я уже был и поэтому обращаюсь уже сюда.

не пойму где ошибка... скобки вроде везде стоят правильно, по при кампилировании все равно на них матерится...

 

 

kainda
Offline
Зарегистрирован: 09.02.2017
kub_5x5_test.ino: In function 'void loop()':
kub_5x5_test.ino:67:4: error: a function-definition is not allowed here before '{' token
kub_5x5_test.ino:184:7: error: expected '}' at end of input
kub_5x5_test.ino:184:7: error: expected '}' at end of input
Ошибка компиляции

ошибки забыл вставить

 

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Строка 26, что за скобка?

P.S. и 38?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kainda пишет:

просьба в гугл не посылать... 

А куда можно посылать?

kainda пишет:

скобки вроде везде стоят правильно

Это кто Вам такое сказал?

Знаете волшебную комбинацию клавиш Ctrl+T ?

Попробуйте - узнаете пмоного интересного про свои скобки :)

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

kainda пишет:

скобки вроде везде стоят правильно

Нет, скобки стоят неправильно.

P.S.   }}}   - так писать не следует. Переносите каждую скобку на новую строку и делайте разные отсупы от начала строки (можно нажать Ctrl+T, как уже сказали выше). Иначе тяжело разобраться во вложенности скобок.

kainda
Offline
Зарегистрирован: 09.02.2017

Yarik.Yar спасибо, 26 как раз лишней оказалась... еще где то в 66 строке лишняя скобка осталась

Евгений, а никуда посылать не надо - просто без лишней философии помочь... занимаюсь побочно от основной профессии ремонтом сотовых, на тех форумах почему то стараемся помочь друг другу... только здесь почему то еденицы делятся своими знаниями остальные гнобят новичков и тролят... не лично к вам притензия я видел ваши посты подробно расписанные, просто я уже сталкивался с подобным по отношению к себе и к другим начинающим...

попробова ctrl+t  попробовал... видно глаз за день замылился ничего толком не увидел...

зы Jeka спасибо, теперь увидел изменения данных кнопок.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

kainda пишет:

попробова ctrl+t  попробовал... видно глаз за день замылился ничего толком не увидел...

Странно. Он же при этом "скобку под скобкой" располагает. Должно быть сразу видно.

kainda
Offline
Зарегистрирован: 09.02.2017
 turnEverythingOff();//Выключить все
  flickerOn();
  turnEverythingOn();//включить все
  delay(time);
  turnOnAndOffAllByLayerUpAndDownNotTimed();
  layerstompUpAndDown();
  turnOnAndOffAllByColumnSideways();


void turnEverythingOff()
 {
   for(int i = 0; i<25; i++)

да, спасибо - видно... я просто уже по запарке не в тех местах натыкал... исправил.

у меня вопрос по чужому скетчу...

автор указал в loop строки с 1 по 7 далее он их вставляет в void...

не могу понять что это?? по гуглу не все термины находит... понимаю, что танный термин описывает в краце следующий код, а принцип работы кода с данной строкой понять не могу

откуда он взял эти строки с 1 по 7 строки???

 

b707
Offline
Зарегистрирован: 26.05.2017

kainda пишет:

далее он их вставляет в void...

вставляет в void... ну и скажете же.

Вот так, что ли?

void turnEverythingOff()

Это функции, которые он сам написал. Их можно называть как угодно, а потом использовать в других местах программы точно так же как стандартные операторы языка.

Ну и как после таких вопросов не издеваться? Скажите, если вам на форум придет человек, который не отличает симки от сд-шки и скажет, что хочет починить убитый телефон - вы ему все с нуля будете обьяснять или все-таки посоветуете к мастеру обратиться? :) намек понятен?

sadman41
Offline
Зарегистрирован: 19.10.2016

kainda пишет:
занимаюсь побочно от основной профессии ремонтом сотовых, на тех форумах почему то стараемся помочь друг другу... только здесь почему то еденицы делятся своими знаниями остальные гнобят новичков и тролят...

Просто ради интереса - если бы на ваш форум ходили постоянно с таким: "Хочу отремонтировать айфон самостоятельно, сам гитарист, с какой стороны держать паяльник и какие детальки с ножками нужны, напишите срочно!!!" - на котором бы человеке по счету вы сломались? 

b707
Offline
Зарегистрирован: 26.05.2017

sadman41, на самом деле это мы так мстим :) Стоит придти в чистой рубашке и галстуке к мастеру по ремонту сотовых или в автосервис - те почему-то считают, что ты полный лох в технике и тебе можно лить в мозги любой шлак и разводить на бабки по любому поводу. А тут, ребята, утритесь - это наша территория :)))

Шутка...

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

kainda пишет:

у меня вопрос по чужому скетчу...

http://arduino.ru/Reference/FunctionDeclaration

http://arduino.ru/Reference/Void

 

kainda
Offline
Зарегистрирован: 09.02.2017

отвечу на ваши вопросы:

1. я симку от флешки давно научился отличать... так же как и проц от другой микросхемы... резисторы, диоды и т.д.. ... в ремонте я не новичек...

не сомневайтесь с паяльником я дружу... плохо у меня только по части програмирования...

2. я уже давно научился отличать клиента от начинающего мастера... и если вижу что ему действительно интересно этим заниматся, то помогу... клиентов со свои тамагочами мы действительно пинаем не отрицаю...

но это клиент который даже закона ома не знает и лезет со 100 Ватным паяльником в телефон и после этого приходится еще после него переделывать.

я по моему ни у кого не спросил как пишется код... сам разбираюсь... только под вечер голова уже не варила, где ошибки - я бы не обратился к помощи форума... благо люди без стеба помогли и подсказали...

b707 чья територия? как и на любом форуме без вливания новой крови - форум умрет... не верите? я могу привести кучу форумов которые без пользователей тупо загибаются или на гране закрытия...

как и говорил выше - единицы готовы помогать начинающим... вы тоже не с ардуинкой в руках родились и тоже тупые на ваш нынешний взгляд спрашивали... повезло тому у кого рядом человек знающий оказался и помог разобратся... вокруг меня же только тайга, а у медведей не охото спрашивать и сомневаюсь, что они знают и расположены к дружеской беседе...

kainda
Offline
Зарегистрирован: 09.02.2017
 digitalWrite(25, HIGH);    
  digitalWrite(A4, HIGH);   
  delay(1000);  

еще один вопрос - как заставить загоратся в кубе только определенный диод?

пытаюсь заставить гореть последний 25 светодиод в пятом ряду...

погуглив нашел работу только с одним светодиодом... у меня же пять рядов - 25 плюсовых и 5 минусовых...

пробовал как указано в скетче выше, но ничего не выходит... загорается не тот светодиод...

 

b707
Offline
Зарегистрирован: 26.05.2017

вы же сами пишете, что одни ряды плюсовые, а другие минусовые. Чтобы загорелся нужный диод, нужно на его плюсовой контакт подать HIGH, а на минусовой - LOW

  digitalWrite(25, HIGH);    
  digitalWrite(A4, LOW);   
  delay(1000);  

PS Мне нравится выражение "куб ошибки". Это как "ветер надежды" или "дерево познания"...

kainda
Offline
Зарегистрирован: 09.02.2017

предпочел бы второе... :)

да я так и подаю... плюс на 26 и минус на А4... но загараются не те светодиоды и не по одному, а несколько в ряд...

есть одно предположение ошибки сегодня попрактикуюсь и видно будет.

sadman41
Offline
Зарегистрирован: 19.10.2016

Подайте плюсы и минусы без ардуины, проверите правильность предполагаемой адресации.

kainda
Offline
Зарегистрирован: 09.02.2017

sadman41 пишет:

Подайте плюсы и минусы без ардуины, проверите правильность предполагаемой адресации.

это я первым делом сделал как спаял куб.

sadman41
Offline
Зарегистрирован: 19.10.2016

kainda пишет:

sadman41 пишет:

Подайте плюсы и минусы без ардуины, проверите правильность предполагаемой адресации.

это я первым делом сделал как спаял куб.

Следующий шаг, как вы понимаете, поиграть с digitalWrite() на ноги, к которым подключен светодиод, который засветился при прозвонке. С пустым loop(), прямо в setup().

По коду у вас везде идет column[i], а потом вы сразу делаете digitalWrite(25, HIGH). Я, конечно, схемы не видел, но мне кажется, что пин column[25] и пин 25 - это две большие разницы для вашего куба. Ну и учтите, что нумерация массива в честном Си - с нуля, последний элемент - 24-й, а в 25-м хранится случайное (для вашего ожидания) число.

kainda
Offline
Зарегистрирован: 09.02.2017
// инициализация плюсовых пинов
int column[25] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34};
// инициализация минусовых пинов
int layer[5] = {A0, A1, A2, A3, A4};

void setup()
{
  //Установка строк для вывода
  for (int i = 0; i < 25; i++)
  {
    pinMode(column[i], OUTPUT);
  }
  //Установка строк для вывода
  for (int i = 0; i < 5; i++)
  {
    pinMode(layer[i], OUTPUT);
  }
}
void loop()
{
  
  digitalWrite(column[23], 1);
  digitalWrite(layer[A4], 1);
 

}

это последний вариант... в этом варианте горит полностью столбец

по разному пробовал прописывать... нифига не получается... или столбец загорается или вообще не горит...

вы правы в моем варианте счет от 0 до 24

sadman41
Offline
Зарегистрирован: 19.10.2016

kainda пишет:

void loop()
{  
  digitalWrite(column[23], 1);
  digitalWrite(layer[A4], 1); 
}

это последний вариант... в этом варианте горит полностью столбец

по разному пробовал прописывать... нифига не получается... или столбец загорается или вообще не горит...

Вот вы сейчас, выражаясь понятными терминами, при ремонте заменили двухногую деталь на первую попавшуюся трехногую, откусив лишний вывод.

Сделайте Serial.println(A4) - результат вас удивит.

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

kainda пишет:

  digitalWrite(column[23], 1);
  digitalWrite(layer[A4], 1);

по разному пробовал прописывать... нифига не получается... или столбец загорается или вообще не горит...

Так не надо всякий бред "по разному пробовать", надо написать правильно. Уже несколько раз повторили, что на один вывод HIGH, на другой LOW, а у Вас опять две единицы написаны. Напишите правильно, и если при этом получаете не то, что нужно, разбирайтесь с подключением - значит там ошибка.

kainda
Offline
Зарегистрирован: 09.02.2017
#include <LedCube.h>

#define SIZE 5
#define COLS (SIZE*SIZE)

byte levelPins[SIZE] = {A0, A1, A2, A3, A4};
byte colPins[COLS] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34};

LedCube cube(SIZE, levelPins, colPins);
int analogValue = 0;
void setup ()
{
}

void loop ()
{
  analogValue = analogRead(A0);
  Serial.println(A0);
  digitalWrite(colPins[24], 1);
}

sadman41 пишет:

Сделайте Serial.println(A4) - результат вас удивит.

не удивило... все так же загорается 24 столбик вместо 24 светодиода в ряду А4

все делал согласно примера по Serial.println,

 смущает в примере analogValue = analogRead (0); - в примере указано, что этосчитываются данные с входа, а у нас выход...

что опять неправильно сделал? указал, что analogvalue =0, считываем показания с выхода (или входа???) - 0, выводим

serial.println...