Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2017, 02:00   #1
denis9675
Новичок
Джуниор
 
Регистрация: 22.08.2017
Сообщений: 2
По умолчанию выполнить один раз!

Доброго времени суток,ув.програмисты!Подскажите решение моей,для меня не легкой задачи,есть часть кода который должен отработать один раз,и до перезапуска питания на плате не срабатывать,за ранее спасибо,если кто то отзавется!


if (uidDec==1919189049){Serial.print(" OK ");
digitalWrite(8, HIGH);
delay(100);
digitalWrite (8,LOW);
delay (100);
}
denis9675 вне форума Ответить с цитированием
Старый 22.08.2017, 09:59   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Поместите код в функцию setup, а не в loop:
Код:
void setup ()
{
   //код, выполняющийся один раз при старте
}

void loop()
{
   //основной цикл
}
Если, например, этот код должен работать не в начале, то:
Код:
boolean is_once /* = true*/;
void setup() 
{
   is_once = true;//Устанавливаем флаг
}

void loop()
{
   //...
   if (is_once) {
      //Наш код, выполняющийся один раз
      is_once = false;//Не забываем сбросить флаг
   }
   //...
}

Последний раз редактировалось Croessmah; 22.08.2017 в 10:35.
Croessmah вне форума Ответить с цитированием
Старый 22.08.2017, 11:28   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Setup - это называется Initialization в микроконтроллерах или Init кратко. Это там у него по ходу Arduino на микроконтроллере AVR Atmel. Вы бы хоть автор написали какая у Вас плата-то.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 на форуме Ответить с цитированием
Старый 22.08.2017, 11:35   #4
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Это там у него по ходу Arduino на микроконтроллере AVR Atmel.
Судя по коду - да. Поэтому и привел пример для Arduino. )))
Croessmah вне форума Ответить с цитированием
Старый 22.08.2017, 17:08   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
у него по ходу Arduino на микроконтроллере AVR
почему именно на авр? может у него stm. или msp. или, не дай б-г, x86.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 22.08.2017, 18:52   #6
denis9675
Новичок
Джуниор
 
Регистрация: 22.08.2017
Сообщений: 2
По умолчанию

да,вы правы это arduino atmega 328,у меня rfid метки в количестве 50 шт.и каждая метка должна отработать один раз,и больше не срабатывать до перезагрузки платы
denis9675 вне форума Ответить с цитированием
Старый 22.08.2017, 19:18   #7
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Так заведите массив меток и ставьте в нем пометки
Black Fregat вне форума Ответить с цитированием
Старый 22.08.2017, 19:28   #8
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Ну да согласен булевский массив нужно завести или двухмерный массив: первый столбец - какой-то ID-номер карточки RFID, второй столбец - булевская переменная, отметился этот человек или нет.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 на форуме Ответить с цитированием
Старый 22.08.2017, 19:29   #9
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

ИМХО проще завести один массив и затирать в нём метки по мере появления
Black Fregat вне форума Ответить с цитированием
Старый 24.08.2017, 13:22   #10
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 734
По умолчанию

Лучше с Булевским столбцом - зачем метки-то затирать, пригодятся еще.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнить в Access несколько SQL команд за один раз Stilet Microsoft Office Access 3 25.01.2011 15:54
Как выполнить действие только один раз? dolphin705 Общие вопросы Delphi 5 25.08.2009 09:33
Выполнить действие один раз. IVANSour Общие вопросы Delphi 5 02.02.2009 22:01
Выполнить действие один раз. IVANSour Общие вопросы Delphi 6 01.02.2009 17:15
Выполнить действие один раз. IVANSour Общие вопросы Delphi 11 01.02.2009 14:17