Помогите пожалуйста с кодом для Ардуино. Запутался..

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

#48 - не понял....
куда записывать - второй вопрос :)
опишите задачу для трёх СД.... чё как мигает - и как надо нажать кнопки в ответ ? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34 пишет:

SU-27-16 пишет:

прерывание цикла - не происходит, заканчивается время его исполнения ( прерывания - это другое )
что значит поморгали ?

Прерывание в том плане, что если мы уже нажали не ту кнопку, то смысла продолжать дальше цикл бесполезно. break самое то. Я так думаю. Поморгали. Значит что загорелся СД 1, потом погас, потом загорелся СД 3, погас, и СД 3 загорел и погас. 

это будет ещё сложнее.... сначала - вот вам секунда, по истечении которой анализируется ответ....
если анализировать что первое же нажатие неправильное и минусовать жизнь - написание кода растянется на месяц.... или 100500 месяцев...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Поморгали. Значит что загорелся СД 1, потом погас, потом загорелся СД 3, погас, и СД 3 загорел и погас. 

...это я обозвал кадром
от уровня будет зависить колво вспышек ? в кадре всегда мигает ТОЛЬКО один СД ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

начал понимать, кажися....

level_1 - один из трёх мигнул

level_2 - один из трёх мигнул , потом ещё раз один из трёх мигнул ( хоть и 1 потом снова 1 )

.............

level_7 - один из трёх мигнул , потом ещё раз один из трёх мигнул ( хоть и 1 потом снова 1 ) - семь миганий

так ?

 

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

начал понимать, кажися....

level_1 - один из трёх мигнул

level_2 - один из трёх мигнул , потом ещё раз один из трёх мигнул ( хоть и 1 потом снова 1 )

.............

level_7 - один из трёх мигнул , потом ещё раз один из трёх мигнул ( хоть и 1 потом снова 1 ) - семь миганий

так ?

 

В точку!) Я просто не вижу смысла добавления 10 СД для 10 уровней. Если можно сделать это все на 3 СД

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

надо повторить мигания, например
2
12
123
1231
22312
222313
?
колво миганий = уровень ?

попутный вопрос для ваших думок - 
как игроку показать что идёт индикация колва жизней ?
как игроку показать что идёт индикация начала задания ?
как игроку показать что идёт индикация окончания задания ?

решить мона всё ( почти ) - думайте.... как организовать задержку на время ввода ответа - поняли ?

кстати ! её ( задержку ) нужно увеличивать пропорционально уровню ( колву нажатий кнопок для ответа )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

В точку!) Я просто не вижу смысла добавления 10 СД для 10 уровней. Если можно сделать это все на 3 СДВ точку!) Я просто не вижу смысла добавления 10 СД для 10 уровней. Если можно сделать это все на 3 СД

ваша не прав ! можно выбрать для задания 2..........64 СД - кто как хочет...
при 1-ом или 2-ух СД - можно научить игрока азбуке Морзе, при большем колве СД - тренировка внимания и памяти оперативной :)

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

надо повторить мигания, например
....
колво миганий = уровень ?

попутный вопрос для ваших думок - 
как игроку показать что идёт индикация колва жизней ?
как игроку показать что идёт индикация начала задания ?
как игроку показать что идёт индикация окончания задания ?

1. Не хотелось бы, чтобы один и тотже сведодиод загорался подряд несколько раз. 

2. Индикация жизни была реализована. 3 СД красного цвета. Вначале загораются сразу 3. Далее, с уменьшением жизни, тухнет один СД. Когда жизней не остается, все 3 светодиода начинают моргать 3 раза. Что означает конец игры! 

//Проверяем и изменяем индикацию жизни

   if (Dead == 3)

  {

    digitalWrite(Dead3, HIGH);

    digitalWrite(Dead2, HIGH);

    digitalWrite(Dead1, HIGH);

  }

  else if (Dead == 2)

  {

    digitalWrite(Dead3, LOW);

    digitalWrite(Dead2, HIGH);

    digitalWrite(Dead1, HIGH);

  }

  else if (Dead == 1)

  {

    digitalWrite(Dead3, LOW);

    digitalWrite(Dead2, LOW);

    digitalWrite(Dead1, HIGH);

  } 

  else if (Dead == 0)

  {

    for (int i = 0 ; i < 3 ; i++)

    {
153
      digitalWrite(Dead3, HIGH);
154
      digitalWrite(Dead2, HIGH);
155
      digitalWrite(Dead1, HIGH);
156
      delay (500);
157
      digitalWrite(Dead3, LOW);
158
      digitalWrite(Dead2, LOW);
159
      digitalWrite(Dead1, LOW);
160
      delay (500);
161
    }
162
  }

3. Индикация о начале игры, хотелось реализовать на индикаторе 7-ми сегментном. Когда включается игра, показывается 0. Как только начинается игра, на индикаторе высвечивается текущий уровень. Это и означало бы начало игры. Сейчас можно просто поставить СД с подписью "Начало игры". Ну или что-нибудь пободное. 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

если с "диспетчером задач" понятно - то вам нужно решить след. задачи :

- вывод колва жизней на 3-ри СД
- вывод вкл случайного одного СД в зависимости от уровня=N N раз

это в секции_1 ( для контроля происходящего выводите в Serial промежуточные данные )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

на индикаторе 7-ми сегментном.

хотел затронуть эту тему - это отдаление реализации проекта на Х-недель :(

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

ваша не прав ! можно выбрать для задания 2..........64 СД - кто как хочет...
при 1-ом или 2-ух СД - можно научить игрока азбуке Морзе, при большем колве СД - тренировка внимания и памяти оперативной :)

Это да.. Но если делать 50 уровней, где я найду столько пинов для управления СД?) 

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

если с "диспетчером задач" понятно - то вам нужно решить след. задачи :

- вывод колва жизней на 3-ри СД
- вывод вкл случайного одного СД в зависимости от уровня=N N раз

это в секции_1 ( для контроля происходящего выводите в Serial промежуточные данные )

Как я делал первоначально. Так нельзя? #58-90  это случайные СД. #130-162 это индикация жизни

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

3 СД красного цвета. Вначале загораются сразу 3.

нуууууууу, как-то жёстко :( - жизни обычно зелёным :)

все режимы можно организовать поведением СД....
- короткие редкие вспышки
- короткие частые вспышки
- плавное затухание-зажигание
- для RGB СД - изменение цвета

....думайте-придумывайте :)
....вариантов 65....100, но сначала нужно на простом варианте научиться.... нет ?
содать техзадание и его отработать, а не постоянно его улучшать ( это вы потом и сами сможете )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Как я делал первоначально. Так нельзя? #58-90  это случайные СД. #130-162 это индикация жизни

честно, моя не вникал.... вы спрашивали про "задержку"....
сваяйте код с учётом "диспетчера задач" - потом посмотрим, ага ?

самообучение - основная форма обучения ............ ( армия ) , как на гражданке - не знаю :(

guliyev34
Offline
Зарегистрирован: 17.03.2015

Можно сделать что-то типа подсветки кнопок. Например прошла 1 секция со светодиодами. Далее включается подсветка кнопок, означающая что теперь очередь игрока) 

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

честно, моя не вникал.... вы спрашивали про "задержку"....
сваяйте код с учётом "диспетчера задач" - потом посмотрим, ага ?

самообучение - основная форма обучения ............ ( армия ) , как на гражданке - не знаю :(

Договорились) Я пока на работе, скоро буду дома, напишу и выложу) Только вот непойму.. Идея с массивами это нормально? Или же надо придумать что-то иное? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Но если делать 50 уровней, где я найду столько пинов для управления СД?) 

не надо их искать - поищи тему про регистры.... увеличение колва выводных пинов ( позже кину ссылку )

про подсветку кнопок - не было информации !

3 - на жизнь , 3 - на задачу , 3 - на готовность кнопок = 9 СД !!!!!!!!!!!!! проект разбухает по бюджету :)
.......и пинам :(

означающая что теперь очередь игрока) 

.....классное решение ( если есть такие кнопки, с независимым от нажатий СД )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Идея с массивами это нормально? Или же надо придумать что-то иное? 

без запоминания чего-то - не обойтись...
продумайте - байт массив битов, далее - массив байтов, массив интов, массив ...............................
какой массив выбрать - такой и код ( с + и - соответственно )

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

.....классное решение ( если есть такие кнопки, с независимым от нажатий СД )

Так мы просто в секции 2 записываем вклчение светодиодов для подсветки.. Светодиоды будут спрятаны внутри корпуса. Вот как на картинке например) 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

на чём остановимся ?

- 3 СД для индикации жизней ( горят 3 - жизней >=3 , 2 - жизней=2 , жизней=1 , жизней=0=конец игры )
- 3 СД для уровня - как отобразить 10 уровней ? в двоичном коде возможно отображение только 8-ми, в позиционном коде - только 4-ёх состояний
- 3 СД на кнопки - все горят = приглашение к вводу ответной комбинации

......ОПРЕДЕЛИТЕСЬ с задачей - это называется технической задачей ( или ещё как-то )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

это нНЕ кнопки, а переключатели ! ....хотя и с ними возможно решение задачи

в секции заданияЗадачи надо будет прописать условие что все выключатели установлены в офф - только после этого высветится-поморгают СД оновой комбинации....

определитесь с кнопками или переключателями, сколько чего и др.

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

это нНЕ кнопки, а переключатели ! 

Так на фото переключатели, я знаю. Я просто показал пример подсветки. Т.е когда будет ввод, подсветка загорится. 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

типерь понятно.... 
но лучше бы было если бы вы написали так - как приглашение к вводу ответа >>>> вкл. подсветки панели кнопок :)
....вопросов не возникнет :)

итого :
разработайте задачу, алгоритм ( конечный-итоговый ) - можно будет обсудить и помочь....
...дальше проект будете улучшать ( увеличивать колво кнопок, СД, алгоритм ) сами

если ТУ на проект постоянно будет изменяться вами - то это не помощь с моей стороны, а разработка с пояснениями вам.....
....моя на это не готов :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Т.е когда будет ввод, подсветка загорится. 

когда БУДЕТ предоставлена возможность ввода - подсветка загорится

моя вас ни сколько не ровняет, не глумицца..... думайте как МК - получится нормальный код.....
:)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
#define knopka1 2
#define knopka2 3
#define knopka3 4
#define ledDead1 10
#define ledDead2 9
#define ledDead3 8
#define led1 5
#define led2 6
#define led3 7

byte levelStart=1;
byte levelMax=10;
byte deadStart=3;

// переменные и определения для "диспетчера задач"
// описываем перечислительную переменную для задач - пока их три
enum SECTION{sectionOut,sectionIn,sectionResult};     // 0 , 1 , 2 - по умолчанию так сделает компилятор
// sectionOut - вывод на индикацию колва жизней, уровня, задания и др.
// sectionIn - ввод решения задания
// sectionResult - вывод результата решения задачи и др.

// назначаем-порождаем перечислительную переменную для задач типа SECTION
// и присваиваем ей значение sectionOut <=> 0 - т.е. вывод на индикацию колва жизней, уровня, задания и др.
SECTION section=sectionOut;
// переменная для засечки времени в системе МК
unsigned long oldMillis;
//=========================================================================
void setup()
{
  Serial.begin (9600);
  pinMode (knopka1,INPUT);    // кнопки переподключите по схеме 1
  digitalWrite(knopka1,HIGH); // включение подтяжки внутренним резистором на 20 kOm , внешние можно убрать
  pinMode (knopka2 ,INPUT);
  digitalWrite(knopka2,HIGH);
  pinMode (knopka3,INPUT);
  digitalWrite(knopka3,HIGH);
  
  pinMode (led1,OUTPUT);
  pinMode (led2,OUTPUT);
  pinMode (led3,OUTPUT);
  
  pinMode (ledDead1,OUTPUT);
  pinMode (ledDead2,OUTPUT);
  pinMode (ledDead3,OUTPUT);
  
  randomSeed (analogRead(0));
  
  oldMillis=millis();   // засечка времени в системе МК - "вкл. секундомера"
}
//=========================================================================
void loop()
{
// начало секции sectionOut
  if(section==sectionOut)
  {
    // .........................
    section=sectionIn;        // переход к выполнению sectionIn
    oldMillis=millis();       // засечка времени в системе МК - "вкл. секундомера"
  }
  
  
  
// начало секции sectionIn
  if(section==sectionIn)
  {
    if((millis()-oldMillis)<1000)    // делаем что-то пока разница
                                     // текущего времени МК и секундомера не станет больше 1 секунды
                                     // т.е. - это время на принятие решения и нажатия кнопок
    {
      // включить подсветку блока кнопок - ввод разрешён
      // нажатие кнопок, формирование результата ответа
      // .......................................................
    }
    else
    {
      section=sectionResult;    // переход к выполнению sectionIn
     // выключить подсветку блока кнопок - время на ввод истекло
    }
  }
  
  
  
// начало секции sectionResult
  if(section==sectionResult)
  {
    // .........................
    section=sectionOut;       // переход к выполнению sectionOut
  }
}
//=========================================================================

добавлено - подсветка/гашение блока кнопок      #70 и 77

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

kisoft ,

- если указать ваш ник в начале сообщения - вам сразу ОСОБЕННОЕ сообщение приходит ?
- или вы отслеживаете сообщения в режиме - где хочЮ там и ответЮ ?

trembo вычислил особенность-возможность сайта....
энтер - перевод на новую строку с бОльшим межстрочным интервалом

энтер + шифт - перевод на новую строку с мЕньшим межстрочным интервалом

так, поделился.... НО - вопросы остались ( если есть время для ответов ) - как вас позвать на помостч ? :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

админы ! вернее - АДМИНЫ ! а можно ли реализовать вызов конкретного участника в конкретную тему ? ессстессственно с сохранением его права отказаться от ответов-участия.... моя понимает, что можно ! нельзя ли реализовать это дело ? по запросу-ответу к воспрашаевываему..... 

guliyev34
Offline
Зарегистрирован: 17.03.2015

Ну вот что-то типа этого должно получится  в итоге. И так, начали. 

Цель игры: дойти до максимального уровня.

Правила игры: игра состоит из 10 уровней. Увеличение уровня усложняет игру добавлением одного мигания светодиода. Первоначально игроку дается 3 жизни, которые отражены на табло. Если игрок отвечает не правильно, у него отнимается 1 жизнь. Как только жизни упадут до 0, игра заканчивается и индикатор жизни проморгает 3 раза, это и будет сигналом что игра окончена. И начинается все сначала. На панели также есть кнопки, с помощью которых и происходит ввод игроком ответа. Каждая кнопка, по своему положению, соответствует определенному светодиоду. Когда наступает время игрока, загорается подсветка кнопок. 

Сама игра:

1. Игрок включает питание

2. Загорается индикация жизни. На данный момент их 3.

Далее на примере 5 уровня.

3. Загораются светодиоды в случайном порядке. Например : 2, 4, 1, 4, 3.

4. Далее загорается подсветка кнопок, которая "говорит" что сейчас очередь игрока.

5. Игрок нажимает на кнопки, соответствующие светодиодам. 

Допустим игрок не ошибся и нажал на кнопки по порядку: 2, 4, 1, 4, 3.

6. Возвращаемся на п.2 но уже уровень игры стал 6, жизней все также 3.  

Допустим игрок ошибся и нажал на кнопки не в том порядке: 2, 4, 3, 4, 3.

6. Возвращаемся на п.2. Уровень игры остался прежний, но у игрока отнялась 1 жизнь. 

И так далее, до тех пор, пока игрок либо не выйграет игру, пройдя 10 уровень, либо не проиграет, потратив все 3 жизни. 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

вот это ближе к теме ! 
....чё не сразу так ? 
:)

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

trembo вычислил особенность-возможность сайта....
энтер - перевод на новую строку с бОльшим межстрочным интервалом

энтер + шифт - перевод на новую строку с мЕньшим межстрочным интервалом

так, поделился.... НО - вопросы остались ( если есть время для ответов ) - как вас позвать на помостч ? :)

Немного пораньше бы)) 

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

вот это ближе к теме ! 
....чё не сразу так ? 
:)

Больше не повторится) 

guliyev34
Offline
Зарегистрирован: 17.03.2015

Почему #58 нельзя поставить например в #61 ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Немного пораньше бы)) 

trembo, может ( могет ) случайно чо пальцами зацепил.... но он это ПЕРВЫЙ кто опубликовал !!!!
...мине нравицца :) - пытаюсь ЕТО нести в массы :)

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

Немного пораньше бы)) 

trembo, может ( могет ) случайно чо пальцами зацепил.... но он это ПЕРВЫЙ кто опубликовал !!!!
...мине нравицца :) - пытаюсь ЕТО нести в массы :)

Ну да, я понимаю) Так, я пошел попробую описать 1 секцию. В первой секции производится выбор светодиодов случайным способом и их воспроизведение. На этом 1 секция заканчивается, так? А в 3 секции только жизни проверяется.. или как? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34 пишет:

SU-27-16 пишет:

Больше не повторится) 

в авиации нет присядок и отжиманий :( - моя на основе - как лошара лошаре помогу ! аха ?

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

ет присядок и отжиманий :( - моя на основе - как лошара лошаре помогу ! аха ?

Вы с авиацией имеете дело? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Допустим игрок ошибся и нажал на кнопки не в том порядке: 2, 4, 3, 4, 3.

добавлю - или не уложился в ту секунду что прописана в строке ..... - сам найди :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34 пишет:

Почему #58 нельзя поставить например в #61 ?

низя ! нарушится временнАя логика построения цикла задачи :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

секундомер нано вкл после подсвечивания задачи !
если ЭТО вывести за пределы секции_1 и до секции_2 - то время "секундомера" будет обнуляться в лупе раз 100500 и никогда не достигнет значения = 1000 миллисекунд :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34 пишет:

SU-27-16 пишет:

ет присядок и отжиманий :( - моя на основе - как лошара лошаре помогу ! аха ?

Вы с авиацией имеете дело? 

не имею.... я в ней живу :)
ник мой - ничё не напоминает :)-

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

не имею.... я в ней живу :)
ник мой - ничё не напоминает :)-

Напоминает. Истрибитель 4 поколения) Я давно заметил. И когда на дежурство уходили тоже думал. У меня тоже с авиацией связанна. Но пока только учеба. 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

ЕЩЁ РАЗ :

операторы, функции в лупе выполняются циклически... сверху вниз... СТАТИКИ как в делфи, например - НЕТУ ( она там кажущаяся )
отследите каждую строку кода с точки зрения МК ( в цикле ) - поймёте всё !
.....авиация :) - покрутицца на "лопинге" ( кому как - или сдал зачёт, или ......... )
...а вы как к авиации ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34]</p> <p>[quote=SU-27-16 пишет:

У меня тоже с авиацией связанна. Но пока только учеба. 

где ? на кого ? матчасть ?
....приказ 010 не отменён :( решай сам.....
:(

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

...а вы как к авиации ?

Мне это нравится. Я просто такой человек. Я бы не занимался тем что мне не интересно и к чему не лежит душа. 

Вопрос по коду. В первой секции будет проверяться количество жизней? И какой уровень? И как сделать чтобы когда выйграли 10 уровень, пошло все сначала ? 

 

guliyev34
Offline
Зарегистрирован: 17.03.2015

SU-27-16 пишет:

где ? на кого ? матчасть ?
....приказ 010 не отменён :( решай сам.....
:(

Учусь в Московском Авиационном Институте. Инженер радиоэлектронных систем и комплексов ЛА. 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

а лучшЕЕЕЕЕЕ - про ТехЗадание, которое ты сам и придумываешь :)-

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34 пишет:

SU-27-16 пишет:

...а вы как к авиации ?

Мне это нравится. Я просто такой человек. Я бы не занимался тем что мне не интересно и к чему не лежит душа. 

Вопрос по коду. В первой секции будет проверяться количество жизней? И какой уровень? И как сделать чтобы когда выйграли 10 уровень, пошло все сначала ? 

 

значительно вперёд забегающий вопрос :(

не нужно ли вам, сэр, для начала вывести как-то данные об уровне текущем жизни, о текущем значении уровня игры ? стартовые значения....

guliyev34
Offline
Зарегистрирован: 17.03.2015

Мне просто интересно в какой секции будет производиться проверка? Например мы выйграли 10 лвл, в какой секции это проверится? В 3? 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

т.е. - обговорить секцию_1 по поводу вывода на СД ( миганием, частым , редким, затуханием СД ) жизней и уровня 
 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

guliyev34 пишет:

Мне просто интересно в какой секции будет производиться проверка? Например мы выйграли 10 лвл, в какой секции это проверится? В 3? 

в тоё системе что я придумал - в ТРЕТЬЕЙ ! и назвал её соотвественнооооо......