Официальный сайт компании Arduino по адресу arduino.cc
Помогите объединить два скетча
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 10/08/2017 - 16:07
Здравствуйте!Недавно только заинтересовался Arduino, по этому очень много не знаю. Помогите пожалуйста объединить два скетча, или дайте полезный совет (ссылку и.т.д). Первый для bh 1750 и второй для светодиода. Спасибо за ваше внимание!
Скетч для bh1750:
#include #include BH1750 lightMeter; void setup() { Serial.begin(9600); lightMeter.begin(); } void loop() { uint16_t lux = lightMeter.readLightLevel(); Serial.println(String(lux) + " lx"); delay(100); }
Скетч для светодиода:
pinMode(13, OUTPUT); digitalWrite(13, HIGH); digitalWrite(13, LOW); void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000);
Вы при вставке кода половину строк потеряли. Но это, в общем-то, неважно. Главное можно сказать, даже смотря на эти обрывки - В общем случае обьединить два и более скетчей, в которых есть операторы delay - НЕВОЗМОЖНО.
Чтобы обойти эту проблему, необходимо переписать оба скетча без этого оператора. КАК - описаний в инете полно, ищите "блинк без делей".
Спасибо!
Пфф..В интернете молоток но мало толку! Так, чтоб что нибудь написать..!?
Вот - почитайте - по-русски.
http://arduino.ru/tutorials/BlinkWithoutDelay
Если не поймете - читайте сначала. Если не сможете этого понять - вы безнадежны....
Когда сможете что-то написать - приходите, поможем.
Давненько такой темы не было Помогите объединить два скетча . Самое удивительное камень падает в ту же воронку - delay
Вы при вставке кода половину строк потеряли. Но это, в общем-то, неважно. Главное можно сказать, даже смотря на эти обрывки - В общем случае обьединить два и более скетчей, в которых есть операторы delay - НЕВОЗМОЖНО.
Ну, конкретно эти можно, только мигать неравномерно будет. Но лучше пусть учится переписывать, конечно ))
Вот решение моей "проблемы", может, кому то будет полезно)
Спасибо, за нужную информацию!
Решение половинчатое. Светодиоды без делея переписали, а датчик нет.
НИЗАЧЕТ.
Вы это называете решением? Ну, да Бог Вам в помощь!
А вот это Вас никуда не повергло?
До полноты глубкомыслия не хватает только третью строку заменить на
} else if (ledState == HIGH) {
До полноты глубкомыслия не хватает только третью строку заменить на
Главное что не так
ПС: я бы написал так
Что вы накинулись на человека с delay, может ему нужно просто мигать и выводить показания ))
Вполне себе учебный скетч, delay() там не особо убивает:
Конечно, когда нужно будет интервалы разные взять, тут товарищу и пригодится millis()...
PS. Про прием с digitalWrite(ledPin, millis() % n < k) в курсе.
PS. Про прием с digitalWrite(ledPin, millis() % n < k) в курсе.
Это к чему было? Как ещё один пример уёб@#$%ного программирования?
PS. Про прием с digitalWrite(ledPin, millis() % n < k) в курсе.
совсем недавно я уже писал о этом "алгоритме"
====
Приведу такой пример: допустим, вы хотите сварить яйцо. Положили в воду, поставили на огонь, дождались пока закипит - дальше надо заметить 30 секунд. На часах 14:25:15 - значит выключим плиту, когда будет больше 45 секунд. В следующий раз вы посмотрели на часы. допустим, в 14:26:04. Пора выключать или нет? - с человеческой точки зрения - несомненно. Но с точки зрения компьютера - рано, ведь вы сформулировали условие как " если число секунд больше 45".
Приведу такой пример: допустим, вы хотите сварить яйцо. Положили в воду, поставили на огонь, дождались пока закипит - дальше надо заметить 30 секунд. На часах 14:25:15 - значит выключим плиту, когда будет
...мигать не будет на коротком лупе или что - выражайтесь понятней, как ЕвгенийП, да и в моде это нынче ))
выражайтесь понятней, как ЕвгенийП,
Благодарю Вас за комплимент моей манере выражаться, но Вы не ответили на вопрос, с какой целью Вы привели эту странноватую конструкцию?
Пытаюсь объеденить два кода http://mypractic.ru/urok-26-podklyuchenie-termodatchikov-ds18b20-k-arduino-biblioteka-onewire-tochnyj-arduino-termometr-registrator.html#comment-6863 и https://arduino-ua.com/art24-vintajnii-barometr работает только градусник. По отдельности работает. Помогите кто может. Познания в програмировании минимальные
rf68, Вы не думали о том, что строки 119-127 можно заменить одной вот такой:
заменил error: expected primary-expression before '>' token
Ну очепятка, сами не видите? Сделайте правильно
Сделал. Скомпилировалось. Но выводиться только температура. Убираю прерывания работает только барометр
Ну, да, работать должно также, как и раньше. Просто одна строка вместо восьми - я только об этом говорил.
Ну так разделите во времени. Перерывание работает одну секунду. Разрешите таймер. Подождите секунду. Запретите таймер, прочитайте барометр. И по кругу.
Разделить по времени это добавить в
void
timerInterrupt данные с барометра (
press_data)? Простите, если вопрос глупыйСделал. Скомпилировалось. Но выводиться только температура. Убираю прерывания работает только барометр
Не надо убирать прерывание. Надо его приостановить на время пока читается барометр. В библиотеке есть команда остановить таймер. После чтения барометра запустить снова.
Внутрь прерывания ничего не надо вставлять.
ЭЭх....
не очень понимаю, что вы вообще пытаетесь сделать , но помоему ковыряете не то.
Зачем эти многократные MsTimer2::start(); MsTimer2::stop(); в сетапе, это надо делать в основном коде перед и после измерения давления.
И я бы посоветовал период таймера взять нормальный - вряд ли вам реально надо мерять температуру каждые 2 миллисекунды - да и не получится это, цикл измерения занимает в сотни раз дольше. Поставьте задержку таймера секунд 30 (секунд! а не миллисекунд) для начала. а потом в реальности можно и раз несколько минут сделать.
Не прошло и полгода из далёкой восточной республики пришла новая ардуина.
так не заработало.
2 милисикунды таймера, наверное нужны для динамической индикации?...
Полгода назад я вам написал "я не понимаю, что вы пытаетесь сделать" - с тех пор ничего не изменилось.