Детская викторина из двух кнопок и двух светодиодов,помощь новичку

all-uzer43
Offline
Зарегистрирован: 17.01.2019
Доброго дня форумчане.Это первый мой проект.Прошу помощи в написании скетча.
Алгоритм такой:
Есть две кнопки - "Button 1" и "Button 2".
Есть два светодиода - "LED 1" и "LED 2".
При нажатии "Button 1" должен загореться "LED 1" на время 6 секунд и погаснуть
При нажатии "Button 2" должен загореться "LED 2" на время 6 секунд и погаснуть
Есть одно условие: если загорелся "LED 1" то "LED 2" загораться не должен и наоборот если загорелся "LED 2" то "LED 1"загораться не должен.
Вот скетч от которого происходят мои пляски:
int button = 3;
 
int led = 12;
 
void setup() {
 
pinMode(led, OUTPUT);
 
pinMode(button, INPUT);
 
}
 
void loop(){
 
if (digitalRead(button) == HIGH) {
 
digitalWrite(led, HIGH);
delay(6000);
 
}
 
else {
 
digitalWrite(led, LOW);
 
}
 
}
 
Не получается добавить вторую кнопку со светодиодом и не могу прописать условие описанное выше.
Я думаю для грамотного Arduinщика написание такого скетча,это как раз плюнуть.
Прошу помочь..
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

all-uzer43 пишет:

Я думаю для грамотного Arduinщика написание такого скетча,это как раз плюнуть.

http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov

Я думаю для грамотного человека прочитать здешние правила,это как раз плюнуть.

 

 

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/**/
const byte btnAPin =/*пин*/2;
const byte btnBPin =/*пин*/3;
const byte LedAPin =/*пин*/13;
const byte LedBPin =/*пин*/12;
/*состояние -Игра,ВыигалA,ВыигралB*/
enum state_t {sGame, sWinA, sWinB} state;
unsigned long past;
void stand(state_t s) {
  state = s;
  past = millis();
  switch (state) {
    case sGame:
      digitalWrite(LedAPin, LOW);
      digitalWrite(LedBPin, LOW);
      break;
    case sWinA:
      digitalWrite(LedAPin, HIGH);
      break;
    case sWinB:
      digitalWrite(LedBPin, HIGH);
      break;
  }
}
bool btnA = false, btnB = false;
//------main--------------------
void setup() {
  pinMode(btnAPin, INPUT_PULLUP);
  pinMode(btnBPin, INPUT_PULLUP);
  pinMode(LedAPin, OUTPUT);
  pinMode(LedBPin, OUTPUT);
  stand(sGame);
}
void loop() {
  switch (state) {
    case sGame:
      break;
    case sWinA:
      if (millis() - past >= 6000)  stand(sGame);
      break;
    case sWinB:
      if (millis() - past >= 6000)  stand(sGame);
      break;
  }
  /*кнопка A*/
  bool tmp = digitalRead(btnAPin);
  switch (btnA) {
    case false:
      if (!tmp) {
        delay(50);
        btnA = true;
        if (state == sGame) stand(sWinA);
      }
      break;
    case true:
      if (tmp) {
        delay(50);
        btnA = false;
      }
      break;
  }
  /*кнопка B*/
  tmp = digitalRead(btnBPin);
  switch (btnB) {
    case false:
      if (!tmp) {
        delay(50);
        btnB = true;
        if (state == sGame) stand(sWinB);
      }
      break;
    case true:
      if (tmp) {
        delay(50);
        btnB = false;
      }
      break;
  }
}

ПС: Аналогично и для трех и более кнопок.

bizzon
Offline
Зарегистрирован: 29.03.2016

Amperka.ru - вики- эксперимент 12- кнопочные ковбои. Ваш случай.

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018
[code]
int buttonPin1 = 9, buttonPin2 = 10,ledPin1 = 3, ledPin2 = 4;
void setup() {DDRD=24;}
void loop() {if (digitalRead (buttonPin1 == 0)) {digitalWrite (ledPin1, LOW);}
else {digitalWrite (ledPin1, HIGH);
delay (5995);}
if (digitalRead (buttonPin2 == 0)) {digitalWrite (ledPin2, LOW);}
else {digitalWrite (ledPin2, HIGH);
delay (5995);}  }
[/code]

 

all-uzer43
Offline
Зарегистрирован: 17.01.2019

Спасибо за ответ!

Что нужно прописать в квадратных скобках в 1 и 10 пункте?

all-uzer43
Offline
Зарегистрирован: 17.01.2019

Как исключить из данного скетча пищалку?

#define BUZZER_PIN   12  // пин с пищалкой
#define PLAYER_COUNT 2   // количество игроков-ковбоев
// вместо перечисления всех пинов по-одному, мы объявляем пару
// списков: один с номерами пинов с кнопками, другой — со
// светодиодами. Списки также называют массивами (англ. array)
int buttonPins[PLAYER_COUNT] = {3, 13};
int ledPins[PLAYER_COUNT] = {9, 11};
 
void setup()
{
  pinMode(BUZZER_PIN, OUTPUT);
  for (int player = 0; player < PLAYER_COUNT; ++player) {
    // при помощи квадратных скобок получают значение в массиве
    // под указанным в них номером. Нумерация начинается с нуля
    pinMode(ledPins[player], OUTPUT);
    pinMode(buttonPins[player], INPUT_PULLUP);
  }
}
 
void loop()
{
  // даём сигнал «пли!», выждав случайное время от 2 до 7 сек
  delay(random(2000, 7000));
  tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд
 
  for (int player = 0; ; player = (player+1) % PLAYER_COUNT) {
    // если игрок номер «player» нажал кнопку...
    if (!digitalRead(buttonPins[player])) {
      // ...включаем его светодиод и сигнал победы на 1 сек
      digitalWrite(ledPins[player], HIGH);
      tone(BUZZER_PIN, 4000, 1000);
      delay(1000);
      digitalWrite(ledPins[player], LOW);
      break; // Есть победитель! Выходим (англ. break) из цикла
    }
  }
}
Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

all-uzer43 пишет:

Спасибо за ответ!

Что нужно прописать в квадратных скобках в 1 и 10 пункте?

В первой строке написать   /*,

а в10  */

all-uzer43
Offline
Зарегистрирован: 17.01.2019

Т.е готовый скетч будет выглядеть вот так:

[/*,]
int buttonPin1 = 9, buttonPin2 = 10,ledPin1 = 3, ledPin2 = 4;
void setup() {DDRD=24;}
void loop() {if (digitalRead (buttonPin1 == 0)) {digitalWrite (ledPin1, LOW);}
else {digitalWrite (ledPin1, HIGH);
delay (5995);}
if (digitalRead (buttonPin2 == 0)) {digitalWrite (ledPin2, LOW);}
else {digitalWrite (ledPin2, HIGH);
delay (5995);}  }
[/*/]
all-uzer43
Offline
Зарегистрирован: 17.01.2019

Платформа Arduino Nano с процессором ATmega328P

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018
      Посмотри вверх. Видишь там треугольную планочку примерно 7 см катетом? Так это твой личный плинтус. Вот до него ты должен дотянуться сам! Потом тебе можно будет помочь. 
 
    Вот так будет выглядеть скетч! И это мой последний ответ.
 
int buttonPin1 = 9, buttonPin2 = 10,ledPin1 = 3, ledPin2 = 4;
void setup() {DDRD=24;}
void loop() {if (digitalRead (buttonPin1 == 0)) {digitalWrite (ledPin1, LOW);}
else {digitalWrite (ledPin1, HIGH);
delay (5995);}
if (digitalRead (buttonPin2 == 0)) {digitalWrite (ledPin2, LOW);}
else {digitalWrite (ledPin2, HIGH);
delay (5995);}  }
 
 
 
kalapanga
Offline
Зарегистрирован: 23.10.2016

Муж_Долговой пишет:

Посмотри вверх. Видишь там треугольную планочку примерно 7 см катетом? Так это твой личный плинтус. Вот до него ты должен дотянуться сам! Потом тебе можно будет помочь. 
 
Вот так будет выглядеть скетч! И это мой последний ответ.
 
int buttonPin1 = 9, buttonPin2 = 10,ledPin1 = 3, ledPin2 = 4;
void setup() {DDRD=24;}
void loop() {if (digitalRead (buttonPin1 == 0)) {digitalWrite (ledPin1, LOW);}
else {digitalWrite (ledPin1, HIGH);
delay (5995);}
if (digitalRead (buttonPin2 == 0)) {digitalWrite (ledPin2, LOW);}
else {digitalWrite (ledPin2, HIGH);
delay (5995);}  }

Муж_Долговой, Вы человеку который одну строку из скетча выкинуть не может, специально такие советы даёте типа {DDRD=24;}? Чтобы уж точно ничего не понял и поменять у себя не смог?

И ещё. Вам нужно два пина включить на выход - зачем Вы остальные пины порта (включая пины сериала!) на вход переключаете? А настройки пинов кнопок в Вашем скетче нет.

Может зря Вы так про плинтус-то? Не рано Вам?

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

Ты сам понял, что написал? Про DDRD?

P.S. Специадьно для общего развития kalapanga:

DDRD = 24 - означает "назначить выходом пины 3 и 4". (8 + 16) = 24.

Что анологично двум строкам Ардуино UNO:

pinMode (ledPin3, OUTPUT);

pinMode (ledPin4, OUTPUT);

Входы и так входы. Что их настраивать?

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

Муж_Долговой, я с Вами на брудершафт не пил и не собираюсь. Не тыкайте мне. Я сделал три замечания:

1) Вы нахамили незнакомому человеку (своими остротами про плинтусы)

2) Вы предложили совершенно нулёвому новичку излишне сложное для него решение c регистром (лучше было использовать pinMode...)

3) С регистром правильнее было бы обращаться так: DDRD |= 24;

Вы с чем-то из этого несогласны? Впрочем, можете не отвечать, мне это безразлично.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Один неадекват хочет пожизненный эцик с гвоздями?

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

Так и я о том же! Не понимает ... а туда же. Замечание делает.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я про тебя

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

Тебе тоже мой скетч новичку не нравится? Работает. Проверил.

Все условия выполняются.

Что не так?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Спорить не собираюсь. Посты с наездами буду тереть. Заработай себе репутацию сначала, чтоб опускать всех без разбора и новичков и старожилов. 

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

После #5 это был единственный способ ТС оживить.

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

Муж_Долговой пишет:

Тебе тоже мой скетч новичку не нравится? Работает. Проверил.

Что не так?

послушай, чей-то там муж.
Не далее чем 3 дня назад ты сам тут нес полную чушь в ветке "не все условия if выполняются" - ссылку дать? (одно название уже чего стоит - что-то из разряда "Помогите, мой компьютер тайком редактирует мои документы!")

Скетч твой, хоть формально и правильный - яркий образец говнокода.
Во-первых - несколько операторов на строке и полное отсутсвие форматирования
Во-вторых - если ты решил выпендрится и заменить pinMode работой с регистрами - почему у тебя в скетче остались digitalWrite и digitalRead? - или боишься не осилить?
В-третьих, если у ТС задержка 6сек - почему в твоем коде 5995? - думаю, опять пустой выпендреж от недалекого ума...
В-четвертых  прежде чем поучать новичков - научись хотя бы код в сообщение вставлять

 

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

5997 потому, что на остальные строки контроллер затрачивает время. 

В сумме выходит 6 сек. Ничего личного.

А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.Вам это не понять. Слишком сложно. А я сам догадался. Хоть и новичок.

gfx125
Offline
Зарегистрирован: 27.05.2017

Муж_Долговой пишет:

Тебе тоже мой скетч новичку не нравится? Работает. Проверил.

Все условия выполняются.

Что не так?

Серьезно? Работает именно так как нужно ТС-у?

 

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

Муж_Долговой пишет:

5997 потому, что на остальные строки контроллер затрачивает время. 

Ну я так и думал, что это от большого ума :) Слабо самому прикинуть, сколько занимает один IF и одна запись в пин в таоем скетче? :)

Это тебе проходное задание. Не осилишь - лучше тебе выбрать другой форум. все равно засмеют.

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

Муж_Долговой пишет:

А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 + 100500

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

b707 пишет:

Муж_Долговой пишет:

А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.

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

Я же писал, что не поймёшь.

А пишу без отступов потому что лень далеко гонять туда-сюда по IDE во время наладки. Компилятор всё равно игнорирует все пробелы и переносы.

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

Муж_Долговой пишет:

Я же писал, что не поймёшь.

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

Давай так - если ты правильно посчитаешь, какая задержка должна стоять для 6 сек в коде выше - я тебе обьясню, что не так с IF-ами

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

Время зрительное впечатление глаза после выключения учитывать?

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

Муж_Долговой пишет:

Время зрительное впечатление глаза после выключения учитывать?

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

И в любом случае,  5мс НИКАКОГО отношения к периоду реакции глаза не имеют.

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

b707 пишет:

Муж_Долговой пишет:

А внутри if действительно не все инструкции выполнялись. Потму что работа велась с виртуальнчми портами через Blynk -сервер. А там время отклика 0,5 сек. Они просто не успевали.

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

Там, поди, blynkWrite() просто внутри сразу делало return, если с момента предыдущего его вызова пакет еще не ушёл на сервер )) Поэтому всё от эфирного ветра зависело. Сильно дует - if() всё успевает выполнить, слабо - не всё...

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

sadman41 пишет:

Там, поди, blynkWrite() просто внутри сразу делало return, если с момента предыдущего его вызова пакет еще не ушёл на сервер )) Поэтому всё от эфирного ветра зависело. Сильно дует - if() всё успевает выполнить, слабо - не всё...

ну это же не означает, что программа выборочно исполнила операторы в цикле? :) Операторы в IF-е у "мужа" исполняются все, просто результата нет.

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

 

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

220

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

b707 пишет:

sadman41 пишет:

Там, поди, blynkWrite() просто внутри сразу делало return, если с момента предыдущего его вызова пакет еще не ушёл на сервер )) Поэтому всё от эфирного ветра зависело. Сильно дует - if() всё успевает выполнить, слабо - не всё...

ну это же не означает, что программа выборочно исполнила операторы в цикле? :) Операторы в IF-е у "мужа" исполняются все, просто результата нет.

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

 

Вот это вот всё трудно было сразу пояснить?  И подсказать куда костыли ставить. Я же новичок. Это мой первый проект на третьем скетче. Или корона бы слетела?

Пока сам не догадался. Завёл реальные переменные. С ними провожу вычисления и циклы. Потом эти значения присваиваю виртуальным портам. А они уж ... когда увидели - тогда увидели. Всё работает. 

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

b707 пишет:

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

Так я не спорил на этот счёт вроде как. Даже сам такого мнения придерживаюсь.

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

Уважаемые! Мне не шашечки ... мне ехать надо было.

Может пойдём меня гнобить на мою тему? Нехорошо как то ... в гостях.

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

Муж_Долговой пишет:

220

'это что такое? Если время - то в какие единицах? - секунды, миллисекунды, микро, нано?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Муж_Долговой пишет:

Время зрительное впечатление глаза после выключения учитывать?

Лучше приведите код глаза после выключения. Желательно по правилам форума и с адекватным форматированием.

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

Весело у вас тут. 

Хотел тоже чёнить умное сказать, но придумать умное ума не хватило :(

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

LOL

Слона-то я и не приметил :))

Уважаемый "муж" - не обьясните ли Вы, что по вашему делает эта шикарная конструкция? :)

if (digitalRead (buttonPin1 == 1)) {
  digitalWrite (ledPin1, LOW);
 }

значит код проверяли, "работает правильно"?

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

all-uzer43 пишет:

Как исключить из данного скетча пищалку?

Убрать:

#define BUZZER_PIN   12  // пин с пищалкой

tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд

pinMode(BUZZER_PIN, OUTPUT);

tone(BUZZER_PIN, 4000, 1000);

 

Муж_Долговой
Муж_Долговой аватар
Offline
Зарегистрирован: 07.10.2018

Шоу временно закрывается. Выпимши на форумах не пишу. Из уважения к другим диванным теоретикам.

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

Муж_Долговой пишет:

Шоу временно закрывается. Выпимши на форумах не пишу. Из уважения к другим диванным теоретикам.

Слив защитан. Попрошу вас впредь в форуме не сорить.

Теперь ответ на вопрос - сколько же времени занимает выполнение одного IF с digitalWrite() и digitalRead(). Чтобы не лезть в теоретические дебри - можно просто померить той же ардуиной. Понятно, что ответ получится приблизительным, но забегая вперед - даже такая грубая оценка показывает, насколько Вы далеки от реальности.

Напишем простой скетч, в котором в цикле прокрутим строчку

if (digitalRead (BtnPin1)) { digitalWrite (ledPin1, LOW);}

10 тыс раз и измерим время выполнения:

#define BtnPin1 5
#define ledPin1 7

void setup() {
  Serial.begin(9600);
  pinMode(BtnPin1, INPUT_PULLUP);
  pinMode(ledPin1, OUTPUT);
  unsigned long next_micros ;
  unsigned long prev_micros = micros();

  for (int i = 0; i < 10000; i++) {
   if (digitalRead (BtnPin1)) { digitalWrite (ledPin1, LOW);}
   }
  next_micros = micros() - prev_micros;
  Serial.print( " Time = ");
  Serial.println(next_micros);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Результат исполнения на Ардуино Уно - 66023 мкс

То есть одно исполнение интересующей нас строчки занимает не более 6-7 микросекунд. "Не более" - потому что тут добавляются еще расходы на обслуживание цикла FOR, сравнимые с измеряемым временем. Но даже эта, очень приблизительная цифра - примерно в 1000 раз меньше оценки обсуждаемого автора.

 

all-uzer43
Offline
Зарегистрирован: 17.01.2019
Друзья всем спасибо за уделенное время,как говорится с миру по нитке,получился вот такой вот скетч:
 
#define PLAYER_COUNT 3   
 
int buttonPins[PLAYER_COUNT] = {3, 12 , 7}; 
int ledPins[PLAYER_COUNT] = {9, 11, 8}; 
 
void setup()
{
  for (int player = 0; player < PLAYER_COUNT; ++player) {
   
    pinMode(ledPins[player], OUTPUT);
    pinMode(buttonPins[player], INPUT_PULLUP);
  }
}
 
void loop()
{
 
  for (int player = 0; ; player = (player+1) % PLAYER_COUNT) {
    
    if (!digitalRead(buttonPins[player])) {
     
      digitalWrite(ledPins[player], HIGH);
     
      delay(6000); 
      digitalWrite(ledPins[player], LOW);
      break; // 
    }
  }
}
Все работает,светодиоды горят,условие выполняется...Ура!!!
 
all-uzer43
Offline
Зарегистрирован: 17.01.2019

Как сделать что бы светодиоды не просто горели,а моргали?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

all-uzer43 пишет:

Как сделать что бы светодиоды не просто горели,а моргали?

самое простое: купить моргающие светодиоды. 

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

Дед, как всегда, в точку!

all-uzer43 пишет:

Все работает

А код вставлять так и не научились :(

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

b707 пишет:

не обьясните ли Вы, что по вашему делает эта шикарная конструкция? :)

if (digitalRead (buttonPin1 == 1)) {
  digitalWrite (ledPin1, LOW);
 }

Знаю одного специалиста, который бы объяснил, что здесь просто читаются нулевой и первый пины, а написано так, чтобы "потроллить дураков" вроде нас с Вами. Не раз уже такие объяснения слышал :)))))

bwn
Offline
Зарегистрирован: 25.08.2014

Йэх, злые вы все, воскодячую звезду, в пузо, на взлете. Темен будет небосклон ваш.

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

all-uzer43 пишет:

Как сделать что бы светодиоды не просто горели,а моргали?

Может так

#define PLAYER_COUNT 3   

int buttonPins[PLAYER_COUNT] = {3, 12 , 7}; 
int ledPins[PLAYER_COUNT] = {9, 11, 8};
uint8_t led; 

void setup()
{
  for (int player = 0; player < PLAYER_COUNT; ++player) {
    pinMode(ledPins[player], OUTPUT);
    pinMode(buttonPins[player], INPUT_PULLUP);
  }
}

void del_blinc(uint8_t var){
  led = 0;
  uint32_t mallos = millis();
  while(millis() - mallos < 6000)
  {
    digitalWrite(var, millis()%(500)< (200));
  }
  digitalWrite(var, LOW);
}

void loop()
{
  for (int i = 0; i < PLAYER_COUNT; i++){
    if (!digitalRead(buttonPins[i])) {
      led = ledPins[i];
      break;
    }
  }

  if(led)
  {
    del_blinc(led);
  }
}

 

Гриша
Offline
Зарегистрирован: 27.04.2014

all-uzer43 пишет:

Как сделать что бы светодиоды не просто горели,а моргали?

Уважаемый гость, в первом посте (#1 DetSimen)  Вас попросили ознакомиться с правилами и там есть информация как правильно вставлять программный код (в первом посте от bwn #1) . Ваши посты со скетчами не читабельны.

ЕвгенийП пишет:

Дед, как всегда, в точку!

all-uzer43 пишет:

Все работает

А код вставлять так и не научились :(