Применение millis для нескольких процессов

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

Опять тупоконечники напали на остроконечников.

)))

astwo
Offline
Зарегистрирован: 10.07.2019

sadman41 пишет:

Опять тупоконечники напали на остроконечников.


Так и надо поступать, и по яйцам их, по яйцам. :)
Вопрос: как лучше бить по яйцам.
Ответ: по яйцам надо бить неожиданно и с ноги.

SLKH
Offline
Зарегистрирован: 17.08.2015

Logik пишет:

SLKH пишет:

ua6em пишет:

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

Мне просто не нравится сама идея постоянного долбежа в открытую дверь, а всё остальное - в принципе универсальности кода - зачёт

А что с дверью сделается? Ускорится износ микроконтроллера?

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

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

С выводом в состоянии HIGH абсолютно ничего не сделается от ещё одной команды digitalWrite(pin, HIGH). Это не механика и даже не кинескоп с его старением и т.п.

А "Лишняя команда остается лишней даже если не вредит." - да, действительно, в том числе если эта команда - лишнее логическое условие. Привыкнет долбящий лишние && писать...

Logik
Offline
Зарегистрирован: 05.08.2014

Ок, если digitalWrite(pin, HIGH) выполняемая там где pin и так HIGH, то и две такие допускаем, и три раза тоже гуд, а чем это хуже чем два!  значить и 100500 тоже, если памяти хватает ))) Ниче же не сделается от блинка на всю память. К тому же память из МК не достанеш, в карман не положиш и в другой МК не доклеиш)) Всем так теперь писать!!

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

Полазь по форуму, скока тем - "У миня экран мигает, памагите!" А когда ему обясняют мол нехер его весь перерисовывать, если одна цифра меняется - искреннее удивление. Он на digitalWrite(pin, HIGH) привык, ему думать по другому сложно уже. Так и до БД доростают и обновляют значения на сами себя не думая о проверке.

К плохому лучше не привыкать, даже если его вред мало заметен поначалу. С этим не согласен?

Знаешь почему некоторые нации сильно аккуратные? Это не ДНК. Их даже до детского сада учат все делать аккуратно. Потому они как вырастут делают тоеты и бмв. А у других народов из деталей тоет и бмв только жигули выходят.

 

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

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

Только я не понял, с чего сыр-бор? Напиши по-другому.

В данном конкретном случае я не вижу никаких проблем с digitalWrite в лупе. Ну, могу на переменную состояния зацепиться, могу вон, как изначально, всегда digitalRead() дёргать. Есть смысл делать для решения бессмысленной задачи шедевр программирования?

 

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

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

astwo
Offline
Зарегистрирован: 10.07.2019

Logik пишет:

Знаешь почему некоторые нации сильно аккуратные? Это не ДНК. Их даже до детского сада учат все делать аккуратно. Потому они как вырастут делают тоеты и бмв. А у других народов из деталей тоет и бмв только жигули выходят.


Не выдавайте свои заблуждение за истину. Вот возьмём блин Японию. Чистота на улице и везде что больнице. Но лично в квартире помойка помойкой. Ну никто мозг не ебет ну и хер с ним. Если бы трахали за чистоту, то чистота идеальная. Это съемное жилье где хозяин сьемщику трахает мозг или кошелёк за грязь.
Или тот же порту, Португалия. Там улицу засрать не выйдет. Мало той улицы или парка. А та что есть убирается чуть ли каждый час. Вот вам и ихние тоеты с бмв в придачу.

Posol88
Offline
Зарегистрирован: 14.11.2019

Мне как то один человек сказал- делать надо хорошо, плохо оно само получится))) . По тому что то, что для одного хорошо, для друго неприемлемо. Все зависит от личного опыта каждого. И так во всем. В связи с этим не вижу смысла в споре.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

sadman41 пишет:

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

Только я не понял, с чего сыр-бор? Напиши по-другому.

В данном конкретном случае я не вижу никаких проблем с digitalWrite в лупе. Ну, могу на переменную состояния зацепиться, могу вон, как изначально, всегда digitalRead() дёргать. Есть смысл делать для решения бессмысленной задачи шедевр программирования?

"как назвать мужчину который хочет, но не может...импотент, а который может но не хочет...сволочь, он, сволочь..." ))) из анекдота

astwo
Offline
Зарегистрирован: 10.07.2019

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

Posol88
Offline
Зарегистрирован: 14.11.2019

astwo пишет:
И ардуина устарела из-за того что "перерисовывает экран медленно".

Офигеть. // я за неё только взялся, а она уже устарела...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Posol88 пишет:
astwo пишет:
И ардуина устарела из-за того что "перерисовывает экран медленно".
Офигеть. // я за неё только взялся, а она уже устарела...

не переживай, для твоих задач у неё запас 1000%

Logik
Offline
Зарегистрирован: 05.08.2014

astwo пишет:
Если большинству народу удобнее перерисовать экран, то и камни станут пожирнее. Ведь винда это и есть перерисовывание экрана. И ардуина устарела из-за того что "перерисовывает экран медленно". А так да с остальными задачами справляется при наличии ума у человека.

))))

В мемориз!

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

А как Вы вобще забрели на форум устаревшего железа, не пройти ли вам на квантовые компютеры?

 

Posol88
Offline
Зарегистрирован: 14.11.2019
  int reg() {
    int val = analogRead(3);
    return map(val, 0, 1023, 0, 100);
    }
exit status 1
a function-definition is not allowed here before '{' token
 
создать переменную "reg". в ней создать переменную "val" значение ее считать с 3 пина. затем преобразовать значение с помощью функции map  и с помощью функции return присвоить получившееся значение функции reg.
 где я неправ подскажите пожалуйста... 
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); 
#define translitter 3


void setup()
{
  lcd.init();                     
  lcd.backlight();
}
void loop(){
    lcd.setCursor(0, 0);
  lcd.print("Ov");
  
   int reg() {
    int val = analogRead(translitter);
    return map(val, 0, 1023, 0, 100);
    }
  lcd.setCursor(0, 1);
   lcd.print( reg() );
    }
  }

 

 

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

Наерна в int reg()

Одна функция не может сидеть унутре другой

Logik
Offline
Зарегистрирован: 05.08.2014

Лямбды! Лямбды!  -  требуют зрители!

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

Posol88, Вы бы хоть немного с используемым языком программирования познакомились. Даже здесь на сайте есть страничка про функции, где всё про Вашу ситуацию написано. http://arduino.ru/Reference/FunctionDeclaration Только в тамошние примеры поправку внести надо - функцию объявляют выше её первого использования, а не где попало.

Posol88
Offline
Зарегистрирован: 14.11.2019
если вынести, то все рввно ругается только теперь на return
void loop(){
    lcd.setCursor(0, 0);
  lcd.print("Ov");
  int val = analogRead(translitter);
   int reg {
    return map(val, 0, 1023, 0, 100);
    }
  lcd.setCursor(0, 1);
   lcd.print( reg() );
    }
  }

 

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

Формально, он и обьявил ее выше, не докопаешса

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Формально, он и обьявил ее выше, не докопаешса

он то плакал, то смеялся...

Posol88
Offline
Зарегистрирован: 14.11.2019

https://www.youtube.com/watch?v=IDHisqiw54o&t=341s

time cod 4:55  создает функцию в функции и все у него работает. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Posol88 пишет:

https://www.youtube.com/watch?v=IDHisqiw54o&t=341s

time cod 4:55  создает функцию в функции и все у него работает. 

вам же советуют, как это сделать правильно

Posol88
Offline
Зарегистрирован: 14.11.2019
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); 
#define translitter 3


void setup()
{
  lcd.init();                     
  lcd.backlight();
}
void loop(){
    int val = analogRead(translitter);{
    return map(val, 0, 1023, 0, 100);}
    lcd.setCursor(0, 0);
  lcd.print("Ov"); 
 lcd.setCursor(1, 1);
   lcd.print(val)/100;  
    }

тут вот еще какая проблема. все что я пишу в коде ниже вычислений"int val = analogRead(translitter);{

    return map(val, 0, 1023, 0, 100);}" на LCD дисплее не отображается

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

Удивительно, правда?

Posol88
Offline
Зарегистрирован: 14.11.2019

да

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

Посол, а может все ж таки учебник почитать? - ну ведь в каждом сообщении ваш код все бредовей и бредовей...

Оператор return означает - бросить все и выйти из функции.

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

b707 пишет:

Посол, а может все ж таки учебник почитать? - ну ведь в каждом сообщении ваш код все бредовей и бредовей...

Оператор return означает - бросить все и выйти из функции.

Которая еще и void

Posol88
Offline
Зарегистрирован: 14.11.2019

точно... я неправильно понял, думал что она значение функции возвращает. которая int

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

Какой жырный нынче тролль пошел. 

Posol88
Offline
Зарегистрирован: 14.11.2019

но подсчеты опять не правильные . видимо опять проблемы с ul или как там было в предыдущем моем кривом скетче))

Posol88
Offline
Зарегистрирован: 14.11.2019
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); 
#define translitter 3

void setup()
{
  lcd.init();                     
  lcd.backlight();
 lcd.setCursor(0, 0);
  lcd.print("Vv"); 
 
}
void loop(){   
  int val = analogRead(translitter);{
     val = map(val, 0, 1023, 0, 64);
    }
    lcd.setCursor(1, 1);
    lcd.print(val);
    delay(20);
    }
  

все ,дошло где промахнулся . там надо было значение указывать кратно 4 от 1023. но это или 255 или 64... а если мне нужно что бы 100 отображалось? не написано такого в инструкциях... а в учебниках такого понаписано, что мозг через уши вытекать начинает...

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

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

Обьясните, что означают в вашем коде #281 скобки на строчках 15 и 17 ?

Posol88
Offline
Зарегистрирован: 14.11.2019

я не знаю но теперь я понял что можно было и без них)) просто удалить забыл с тех пор как пытался внутри функции функцию написать

Posol88
Offline
Зарегистрирован: 14.11.2019

хотел спросить вот этот пример-

Пример
var = 0;
 
while(var < 200){
 // выполнить что-то, повторив 200 раз
 var++;

}
 

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

int var = 0;
void setup(){
Serial.begin(9600); 
}
void loop(){
while(var < 30){
 Serial.println(var);// выполнить что-то, повторив 200 раз
 var++;
delay(500);
}
 
}

 

оказалось что не важно. и в процессе понял какую глупость только что не спросил. 

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

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

Posol88 пишет:

оказалось что не важно

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

Posol88 пишет:

героическим усилием избавил Вас от идиотского вопроса.

Не получилось :(

 
Posol88
Offline
Зарегистрирован: 14.11.2019

У Вас талант к написанию статей. Но я не понял одного момента
Функция malloc

1
void * malloc(size_t __size);
получает один аргумент и пытается выделить указанное в нём количество байтов памяти. Если удалось, то возвращает указатель на выделенный участок, если не удалось (нет столько свободной памяти), возвращает 0. Выделенная память никак не инициализируется и в ней остётся тоже, что было до выделения.
Вот тут фраза "то возвращает указатель на выделенный участок" Что означает? Что за указатель?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Posol88 пишет:
Вот тут фраза "то возвращает указатель на выделенный участок" Что означает? Что за указатель?

Пожилой еврей всю жизнь молился Богу, вымаливая себе крупный выигрыш в лотерею. Каждый день он исправно возносил молитву с этой просьбой, пока наконец не достал этим Бога. В очередной раз тот явился таки к нему и взмолился:  - Хаим Абрамович! Ну дайте же мне хоть один шанс! Купите хотя бы один лотерейный билет!

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

Posol88
Offline
Зарегистрирован: 14.11.2019

Учебник по программированию или по программированию ардуино? Или какой

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Вы бы еще спросили как называется главная книга у мусульман, и как называется главная книга христиан. Ну про главную книгу евреев я не спрашиваю.

Экзамен.
Преподаватель спрашивает:
- Так...... вопрос на 5. Как меня зовут?
Все молчат.
- Ну хорошо....... вопрос на 4. Какого цвета учебник?
Все молчат.
- Ну ладно..... вопрос на 3. Ну какой предмет вы сейчас сдаете?
Один из учеников:"Ну ахренеть как препад валит!"

ПС .Запомни название книги. Там ответы на все ваши вопросы. Конкретно этот на стр 88 http://phbme.kpi.ua/~prat/edu/books/programming/c/1_K_R.pdf

nik182
Offline
Зарегистрирован: 04.05.2015

Квон! А как же Паскаль? Он же тоже с указателями? Чем он от си отличается?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

nik182 пишет:

Квон! А как же Паскаль? Он же тоже с указателями? Чем он от си отличается?

Паскаль рисовали глядя на си.

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

Posol88 пишет:
Что за указатель?

Номер "ячейки памяти". Все "ячейки" пронумерованы. Именно по номеру мы и знаем где именно в памяти лежит что нам нужно.

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

qwone пишет:

ПС .Запомни название книги. Там ответы на все ваши вопросы. Конкретно этот на стр 88 http://phbme.kpi.ua/~prat/edu/books/programming/c/1_K_R.pdf

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

bwn пишет:

qwone пишет:

ПС .Запомни название книги. Там ответы на все ваши вопросы. Конкретно этот на стр 88 http://phbme.kpi.ua/~prat/edu/books/programming/c/1_K_R.pdf

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

там и ВирТа нету (((

SLKH
Offline
Зарегистрирован: 17.08.2015

nik182 пишет:

Квон! А как же Паскаль? Он же тоже с указателями? Чем он от си отличается?

в Паскале как напишешь, так и скомпилируется. В отличие от.

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

Чё, Паскаль честный и чистый как спирт?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

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

Чё, Паскаль честный и чистый как спирт?

видимо да, я все функции по сортировке из книги Вирта на Инфо-Бухгалтере проверил, кроме одной, ту не понял просто )))

PS пока проверялось, наливали коньяк )))

Posol88
Offline
Зарегистрирован: 14.11.2019

всем добрейший вечерок. 

int KH=8;
int ledPin=13;
unsigned long TIM;
void flash (){
  digitalWrite(ledPin,HIGH);
  TIM;
  digitalWrite(ledPin, LOW);
  TIM;
}
void setup()
{
  pinMode(KH, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}
void loop(){
  if (digitalRead(KH)==LOW)
  {
      TIM=millis();
  }
  if (digitalRead(KH)==LOW)
  {
    flash(100);
  }
  else 
  {
    flash(500);
  }
}

что значит "слишком много аргументов для функции ' void flash()'" ?

и это... может мне создать отдельную тему "поможите кто чем может" или уж эту добивать?

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

О, господи!

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

Пока читать и понимать не начнешь, ничто тебе не поможет.