Инвалид в программировании

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Начал заниматься программированием и создал вот такой скетч для устройства управления звуковым сигналом при открытой двери более 15ти секунд. Millis покачто не освоил в полной мере. Вот выношу на ваш суд супер топорную программу (если её можно так назвать). Может кто советом поможет.

 

const int ledPin = 7;
// const int ledPin2 = 8;
const int buttonPin =2;
int Bstate = LOW;
// unsigned long previousMillis = 0;
// const long interval = 2500;
// const long interval_3 = 300;
int ledState = LOW;
//int butonState = digitalRead(buttonPin);
 
void setup() 
{
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin, INPUT);
//digitalWrite(ledPin, HIGH);
//attachInterrupt(buttonPin, swap, FALLING);
}
 
 
void loop() {
 
Bstate = digitalRead(buttonPin);
 // unsigned long currentMillis = millis();
 // unsigned long currentMillis2 = millis();
Serial.begin(9600);
Serial.println(Bstate);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
      
         if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
      
                           if (Bstate == HIGH)
       {
                                delay(2000);
                                digitalWrite(ledPin, HIGH);
                                Bstate = digitalRead(buttonPin);
        }
    else 
    digitalWrite(ledPin, LOW);
    delay(2000);
    Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
 
}
 
 
 
// if (currentMillis - previousMillis >= interval)
//    previousMillis = currentMillis;
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы инвали не только в программировании, Вы ещё и читать не умеете. Иначе прочитали бы как на этом форуме положено выкладывать код.

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Увидел только эту кнопку. Подскажите по миллис как его понять.

renoshnik
Offline
Зарегистрирован: 11.04.2013

godForgottenBeginner пишет:

Увидел только эту кнопку. Подскажите по миллис как его понять.

Если НЕ нашли кнопки чтобы правильно прикрепить код, думаю вы НЕ поймете "милис"...

Araris
Offline
Зарегистрирован: 09.11.2012

godForgottenBeginner пишет:

Увидел только эту кнопку.

Почитайте http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

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

godForgottenBeginner пишет:

Увидел только эту кнопку. Подскажите по миллис как его понять.

Вы чего-то недопоняли. Пока код не вставлен как положено, его вряд ли кто-нибудь вообще смотреть будет. Я не буду точно.

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017
const int ledPin = 7;
// const int ledPin2 = 8;
const int buttonPin =2;
int Bstate = LOW;
// unsigned long previousMillis = 0;
// const long interval = 2500;
// const long interval_3 = 300;
int ledState = LOW;
//int butonState = digitalRead(buttonPin);
 
void setup() 
{
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin, INPUT);
//digitalWrite(ledPin, HIGH);
//attachInterrupt(buttonPin, swap, FALLING);
}
 
 
void loop() {
 
Bstate = digitalRead(buttonPin);
 // unsigned long currentMillis = millis();
 // unsigned long currentMillis2 = millis();
Serial.begin(9600);
Serial.println(Bstate);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
      
         if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
      
                           if (Bstate == HIGH)
       {
                                delay(2000);
                                digitalWrite(ledPin, HIGH);
                                Bstate = digitalRead(buttonPin);
        }
    else 
    digitalWrite(ledPin, LOW);
    delay(2000);
    Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
 
}
 
 
 
// if (currentMillis - previousMillis >= interval)
//    previousMillis = currentMillis;

 

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

Данная программа не компилируется потому, что в строке 14 используется необъявленная переменная ledPin2. Это был Ваш вопрос? Если нет, потрудитесь сформулировать вопрос понятнее.

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

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

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

У нас не компилируеца, не тот скеч нам подсунули

godForgottenBeginner пишет:

может быть у кого-то есть принципиально новое решения таймера в этой среде.

в Сколково есть нанотаймеры. 

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

godForgottenBeginner пишет:

У меня всё компелируется и работает нормально,

Так, вечер перестаёт быть томным.

Берёте код из Вашего поста №6 (прямо из поста копипастом), проверяете и соглашаетесь, что он не компилируется. После этого постите правильный код копипастом из IDE, чтобы не получалось, что мы смотрим разные коды, как это есть сейчас.

Если же у Вас компилируется код из Вашего поста №6, то Вам лучше обратить в другой форум

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

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

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Вообще в идеале нужно: дверь 15 секунд открыта загорается светодиод, еще 3 секунды включается зумер, походят развязные роскошные девочки с 3им размером(про девочек с 3им размером шутка, конечно же с 4ым).

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

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

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Вот оригинальный код, работает клЯнусь. Там много лишнего потому что пытался сделать по "нормальному". Но он работает точно...

const int ledPin = 7;
const int ledPin2 = 8;
const int buttonPin =2;
int Bstate = LOW;
unsigned long previousMillis = 0;
const long interval = 2500;
const long interval_3 = 300;
int ledState = LOW;
//int butonState = digitalRead(buttonPin);

void setup() 
{
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin, INPUT);
//digitalWrite(ledPin, HIGH);
//attachInterrupt(buttonPin, swap, FALLING);
}


void loop() {

Bstate = digitalRead(buttonPin);
 // unsigned long currentMillis = millis();
 // unsigned long currentMillis2 = millis();
Serial.begin(9600);
Serial.println(Bstate);


if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
      
         if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);


if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


      
                           if (Bstate == HIGH)
       {
                                delay(2000);
                                digitalWrite(ledPin, HIGH);
                                Bstate = digitalRead(buttonPin);
        }
    else 
    digitalWrite(ledPin, LOW);
    delay(2000);
    Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);

}



// if (currentMillis - previousMillis >= interval)
//    previousMillis = currentMillis;

 

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

Ну, вот так бы сразу. Нафига было сюда неправильный код постить? Поиздеваться?

Ну, а теперь попробуйте прокомментировать это код, что и зачем в нём делается (комментарии умеете вставлять). Зачем Вы чёртову уёму раз кнопку опрашиваете и т.д., просто построчно прокомментируйте.

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Сейчас работу текущую разгребу... 

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017
Коментарии типа ты лох можно было проше сделать прошу не высказывать. Если есть идеи как оптимизировать код спасибо. 

const int ledPin = 7;            // пин светодиода
// const int ledPin2 = 8;
const int buttonPin =2;      // пин кнопки
int Bstate = LOW;              // переменная состояния кнопки
// unsigned long previousMillis = 0;
// const long interval = 2500;
// const long interval_3 = 300;
int ledState = LOW;                        // переменная состояния светодиода       
//int butonState = digitalRead(buttonPin);
 
void setup() 
{
pinMode(ledPin, OUTPUT);                 // тут всё понятно
pinMode(ledPin2, OUTPUT);        // тут всё понятно
pinMode(buttonPin, INPUT);        // тут всё понятно
//digitalWrite(ledPin, HIGH);
//attachInterrupt(buttonPin, swap, FALLING);
}
 
 
void loop() {
 
Bstate = digitalRead(buttonPin);                      //задаю переменную кнопки
 // unsigned long currentMillis = millis();
 // unsigned long currentMillis2 = millis();
Serial.begin(9600);                    // тут всё понятно
Serial.println(Bstate);                // тут всё понятно
 
 


// начинается цикл управления, если дверь открыта кнопка зажата...



if (Bstate == HIGH)                             // если кнопка нажат
  delay(2000);                                             // задержка 
  Bstate = digitalRead(buttonPin);          // снова задаю переменную кнопки т.к. после первого delay() программа не меняет значение  этой переменной, если значение переходит в 1 то это значение не меняется пока программа не увидит эту строчку снова
  if (Bstate == LOW)                             // если кнопка не нажата, то меняем пред идущее состояние на выкл, для того чтобы светодиод не горел(ну или зумер не свистел)
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);  //снова читаем состояние на всякий пожарный случай.
      
         if (Bstate == HIGH)   // если кнопка нажата по прежнему (уже 2 секунды продолжаем отсчет)
  delay(2000);
  Bstate = digitalRead(buttonPin);  // снова считываем 
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);
 
 
// теперь прошло около 14 секунд и если кнопка была все время нажата можно включать зуммер или световой индикатор

      
                           if (Bstate == HIGH)
       {
                                delay(2000);
                                digitalWrite(ledPin, HIGH);
                                Bstate = digitalRead(buttonPin);
        }
    else 
    digitalWrite(ledPin, LOW);
    delay(2000);
    Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);
 
}
 
 
 
// if (currentMillis - previousMillis >= interval)
//    previousMillis = currentMillis;

 

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

А если в течении delay(2000) разомкнулась и снова замкнулась, как МК об этом узнает?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

bwn пишет:

А если в течении delay(2000) разомкнулась и снова замкнулась, как МК об этом узнает?

а, ты когда спишь, себя контролируешь?

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

Клапауций 112 пишет:

а, ты когда спишь, себя контролируешь?

Пока, вроде, да. О памперсах не размышлял.))))

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

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

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

godForgottenBeginner пишет:

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

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

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Вообще вопрос филосовский, как работает работает эта функция, как её понять (millis). Для подобной задачи я использую и вот такой скетч(его подобие), но с ним не так лекгко работать. Может есть кто простым языкам расскажет физический смысл для таких долбозавров как я... Книгу Джеремми Блума я потихоньку читаю, но интересно услышать мысли умных людей.

 
const int ledPin =  13;      // номер выхода, подключенного к светодиоду
// Variables will change:
int ledState = LOW;             // этой переменной устанавливаем состояние светодиода
long previousMillis = 0;        // храним время последнего переключения светодиода
 
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)
 
void setup() {
  // задаем режим выхода для порта, подключенного к светодиоду
  pinMode(ledPin, OUTPUT);     
}
 
void loop()
{
  // здесь будет код, который будет работать постоянно
  // и который не должен останавливаться на время между переключениями свето
  unsigned long currentMillis = millis();
  
  //проверяем не прошел ли нужный интервал, если прошел то
  if(currentMillis - previousMillis > interval) {
    // сохраняем время последнего переключения
    previousMillis = currentMillis; 
 
    // если светодиод не горит, то зажигаем, и наоборот
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
 
    // устанавливаем состояния выхода, чтобы включить или выключить светодиод
    digitalWrite(ledPin, ledState);
  }
}

 

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

Чтобы понять, расскажи начиная с 13 строки, своими словами, что в какой момент происходит. Если неверно, подправлю.

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

godForgottenBeginner пишет:

мысли умных людей.

С этим напряг :)

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

godForgottenBeginner пишет:

Вообще вопрос филосовский, как работает работает эта функция, как её понять (millis). Для подобной задачи я использую и вот такой скетч(его подобие), но с ним не так лекгко работать. Может есть кто простым языкам расскажет физический смысл для таких долбозавров как я... Книгу Джеремми Блума я потихоньку читаю, но интересно услышать мысли умных людей.

Я тебе прокоментирую этот код, если и так не дойдет, то надежды нет!

 
const int ledPin =  13;      // номер выхода, подключенного к светодиоду
// Variables will change:
int ledState = LOW;             // этой переменной устанавливаем состояние светодиода
long previousMillis = 0;        // храним время последнего переключения светодиода
 
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)
 
void setup() {
  // задаем режим выхода для порта, подключенного к светодиоду
  pinMode(ledPin, OUTPUT);     
}
 
void loop()
{
  // сижу на берегу обдолбанный в хлам созерцаю природу, в руках секндомер. Вяло трахаю свою даму (также обкуренную).
  unsigned long currentMillis = millis(); //посмотрел на секндомер
  
  //если секндомер отсчитал ИНТЕРВАЛ, то нужно что-то сделать с дамой, чтобы не уснула
  if(currentMillis - previousMillis > interval) {
    // сперва остановить, обнулить и снова запустить секундомер
    previousMillis = currentMillis; 
 
    // посмотреть на свой прибор и даму
    if (ledState == LOW) // если вынут - решить вставить
      ledState = HIGH;
    else  //иначе - решить вынуть
      ledState = LOW;
 
    // привести свое решение в действие
    digitalWrite(ledPin, ledState);
  }
} //вернуться к созерцанию и слежению за секундомером.

 

 

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Короче я писал длинное письмо... ПК завис... Я всё понял спасибо, смысл в том что "секундомер" начинает работать только тогда когда программа обрашается к строке if(currentMillis - previousMillis > interval).

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

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

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

godForgottenBeginner пишет:

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

-  Что за бред? - сразу и начинает. Мы запоминаем показания тогда, когда нужно.

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

wdrakula пишет:

godForgottenBeginner пишет:

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

-  Что за бред? - сразу и начинает. Мы запоминаем показания тогда, когда нужно.

Влад, вот поэтому и хотел, чтобы он сам рассказал как видит.

wdrakula
wdrakula аватар
Онлайн
Зарегистрирован: 15.03.2016

Все. Отползаю. У меня нет скилла в коррекционной педагогике.

Надо бы админа попросить из проектов это убрать в программирование или в общий.

Araris
Offline
Зарегистрирован: 09.11.2012

Убрано в программирование, хотя мне более уместными кажутся "Отвлечённые темы".

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

godForgottenBeginner пишет:

Короче я писал длинное письмо... ПК завис... Я всё понял спасибо, смысл в том что "секундомер" начинает работать только тогда когда программа обрашается к строке if(currentMillis - previousMillis > interval).

Ну, да, всё правильно, это такой солипсистский таймер и существует только в "сознании" программы, а пока программа на него не посмотрит, его и нет вовсе. Всё правильно :)

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Ну в принципе это не влияет ведь мы вычитаем предыдущие значение... правильно?

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Я понял как он работает физически, очень всем признателен. Действительно понял физический смысл.

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

godForgottenBeginner пишет:

Ну в принципе это не влияет ведь мы вычитаем предыдущие значение... правильно?

Предыдущие, чего?

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

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Попробую.

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

Сало как сало, чего его пробовать. Если поняли, то там делов на пять минут.