Объединить два готовых скетча в один

laba_ard
Offline
Зарегистрирован: 05.12.2021

Нужна помощь. Нужно объединить два готовых скетча в один. Каждый по отдельности рабочий.

lilik
Offline
Зарегистрирован: 19.10.2017

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

laba_ard
Offline
Зарегистрирован: 05.12.2021

Не знаю. Сможете помочь студенту?

laba_ard
Offline
Зарегистрирован: 05.12.2021

Дистант полный, а не учёба

lilik
Offline
Зарегистрирован: 19.10.2017

Обратитесь к Бармалею, он вроде "толерантен к студентам" и терпим к гонорарам.

http://arduino.ru/forum/ishchu-ispolnitelya/spisok-ispolnitelei-lyubye-o...

fridgetester
fridgetester аватар
Offline
Зарегистрирован: 09.02.2019

пишите fridgetester@mail.ru, при адекватной оплате сделаю.

Roman1984
Offline
Зарегистрирован: 17.02.2017

petrovskyi.rv@gmail.com
Обращайтесь...

laba_ard
Offline
Зарегистрирован: 05.12.2021

Спасибо большое. Проблема решена.

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

Сделаю за 200 рублей 

vvadim
Offline
Зарегистрирован: 23.05.2012

браться за работу и оценивать её, не видя что нужно делать, царь)))))

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

 

Объединить два ПРОСТЕНЬКИХ скетча. Что сложного? Там на 15 минут работы. 

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

Написано - готовых, а не простеньких. Но бармалеям все равно, главное - чтобы клиент наживку заглотил.

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

sadman41 пишет:
Написано - готовых, а не простеньких.

Та не переживай за меня. Я их видел. 

laba_ard
Offline
Зарегистрирован: 05.12.2021

Пожалуйста не ссорьтесь. Мне помогли разобраться. Я не выбирал. Пришло письмо, я согласился. Оперативно и доброжелательно всё объяснили. Всем добра!

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

Бармалей пишет:

Сделаю за 200 рублей 

Что то цена не круглая или у тебя рядом скидки?

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

Со скидкой 50 р

rst
Offline
Зарегистрирован: 25.06.2018

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

А 200руб за пару нажатий Ctrl+C, Ctrl+V - вполне норм.  ;)

Бармалей
Бармалей аватар
Offline
Зарегистрирован: 23.09.2019

Так и сделал. И как ни странно, работает.

Один скетч - измерение температуры. Другой - измерение влажности. Друг от друга не зависят. И друг другу не мешают. 

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

Бармалей пишет:

Так и сделал. И как ни странно, работает.

Один скетч - измерение температуры. Другой - измерение влажности. Друг от друга не зависят. И друг другу не мешают. 

а вдруг там было бы два разных монитора?

Колись, у кого хрустальный шар брал?

laba_ard
Offline
Зарегистрирован: 05.12.2021

 

Прошу написать(поправить) код работы светофора по алгоритму:

  • Нажать кнопку, отпустить.
  • Загорается красный свет на 5 сек.
  • Загорается желтый на 2 сек.
  • Загорается зеленый на 3 сек.
  • Начинает мигать 2 сек
  • Загорается желтый на 2 сек. и т.д. до нажатия кнопки.
  • Нажать кнопку, отпустить.
  • Все диоды тухнут.
  • Загорается желтый.
  • Желтый мигает до нажатия кнопки и т.д.

Использование прерываний одобрено, однако есть 2 но. 1. delay() в обработчике прерывания может привести к зависанию программы. 2. горит красный, нажимаем кнопку, программа должна перейти в режим моргающего жёлтого. Но этого не происходит

https://disk.yandex.ru/i/HeZkRlFlUkartw

const int LED_R=10; // вывод для подключения красного светодиода

const int LED_Y=9; // вывод для подключения желтого светодиода

const int LED_G=8; // вывод для подключения зеленого светодиода

const int BUTTON=2; // Контакт 2 для подключения кнопки

int tekButton = LOW; // Переменная для сохранения текущего состояния кнопки

int prevButton = LOW; // Переменная для сохранения предыдущего состояния кнопки

int y = 0, click = 0; //счетчик режимов, счетчик кликов кнопкой

 

void setup()

{

// Конфигурируем вывод подключения светодиода как выход (OUTPUT)

pinMode(LED_R, OUTPUT);

pinMode(LED_Y, OUTPUT);

pinMode(LED_G, OUTPUT);

// Сконфигурировать контакт кнопки как вход

pinMode (BUTTON, INPUT);

// прикрепить прерывание к вектору ISR

attachInterrupt(0, pin_ISR, CHANGE);

}

 

// Функция сглаживания дребезга. Принимает в качестве

// аргумента предыдущее состояние кнопки и выдает фактическое.

boolean debounce(boolean last)

{

boolean current = digitalRead(BUTTON); // Считать состояние кнопки,

if (last != current) // если изменилось...

{

delay(5); // ждем 5 м с

current = digitalRead(BUTTON); // считываем состояние кнопки

return current; // возвращаем состояние кнопки

}

}

 

void pin_ISR() //метод перерывающий выполнение основной программы при нажатии кнопки

{

tekButton = debounce(prevButton);

if (prevButton == LOW && tekButton == HIGH) // если нажатие...

{

click++;

}

prevButton = tekButton;

}

 

void loop()

{

if(click > 0) {++y; click = 0;}

switch(y)

{

case 1: //первый режим работы светофора

digitalWrite(LED_R, HIGH);

delay(5000);

digitalWrite(LED_R, LOW);

digitalWrite(LED_Y, HIGH);

delay(2000);

digitalWrite(LED_Y, LOW);

digitalWrite(LED_G, HIGH);

delay(3000);

digitalWrite(LED_G, LOW);

for(int i = 0; i < 5 ; ++i)

{

digitalWrite(LED_G, HIGH);

delay(200);

digitalWrite(LED_G, LOW);

delay(200);

}

digitalWrite(LED_Y, HIGH);

delay(2000);

digitalWrite(LED_Y, LOW);

break;

case 2: //второй режим работы светофора

digitalWrite(LED_Y, HIGH);

delay(200);

digitalWrite(LED_Y, LOW);

delay(200);

break;

case 3: // выключает светофор и обнуляет счетчик режимов

digitalWrite(LED_R, LOW);

digitalWrite(LED_Y, LOW);

digitalWrite(LED_G, LOW);

y = 0;

break;

}

}

 

 

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

Готовь 200р, счас бармалейка придёт. 

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

DetSimen пишет:

Готовь 200р, счас бармалейка придёт. 


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

rst
Offline
Зарегистрирован: 25.06.2018

laba_ard пишет:

  • Нажать кнопку, отпустить.
  • Загорается красный свет на 5 сек.
  • Загорается желтый на 2 сек.
  • Загорается зеленый на 3 сек.
Вроде не так давно подобное задание тут уже пробегало. Видимо из одной методички эти лоботрясы его берут.

ЗЫ: ТСу советую мерять кирзовые сапоги, а не бить баклуши в ВУЗе. В армейке вам будут рады, трава давно не крашена.

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

rst пишет:

 В армейке вам будут рады, трава давно не крашена.

это да, не всем же как Галкину познать с какой стороны на ремень вешается штык-нож довелось участием в съёмках "В зоне особого внимания" кому-то и траву пришлось красить (а то кадр не стыковался) )))

laba_ard
Offline
Зарегистрирован: 05.12.2021

Бармалей, напиши.

Upper
Offline
Зарегистрирован: 23.06.2020

Мне стало интересно, можно ли сделать код работоспособным не меняя коренным образом структуру программы.

Заменил delay(5000); на myDelay(5000) в котором длинная задержка 5000 заменена на 500 циклов из delay(10) с контролем признака нажатия (выставляемом в прерывании) и выходом по этому признаку.

Получилась в меру корявая крепкая заплатка. Если надо продам за 200 руб. Upper321@yandex.ru

Примечание. Вызов delay() в прерывании не приводит к зависанию при частотах до 16 МГЦ, но отрабатывает коротко.

laba_ard
Offline
Зарегистрирован: 05.12.2021

Там ещё светофор неправильно моргает.  Использование прерываний одобрено, однако есть 2 но. 1. delay() в обработчике прерывания может привести к зависанию программы. 2. горит красный, нажимаем кнопку, программа должна перейти в режим моргающего жёлтого. Но этого не происходит.

ELECTROS
Offline
Зарегистрирован: 28.05.2021

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