Объединить два готовых скетча в один
- Войдите на сайт для отправки комментариев
Вс, 05/12/2021 - 11:57
Нужна помощь. Нужно объединить два готовых скетча в один. Каждый по отдельности рабочий.
Нужна помощь. Нужно объединить два готовых скетча в один. Каждый по отдельности рабочий.
Почему у преподавателей такая фантазия ущербная? Всегда одно и тоже. Почему не так: помогите разделить один скетч на два, и чтобы каждый работал по отдельности.
Не знаю. Сможете помочь студенту?
Дистант полный, а не учёба
Обратитесь к Бармалею, он вроде "толерантен к студентам" и терпим к гонорарам.
http://arduino.ru/forum/ishchu-ispolnitelya/spisok-ispolnitelei-lyubye-o...
пишите fridgetester@mail.ru, при адекватной оплате сделаю.
petrovskyi.rv@gmail.com
Обращайтесь...
Спасибо большое. Проблема решена.
Сделаю за 200 рублей
браться за работу и оценивать её, не видя что нужно делать, царь)))))
Объединить два ПРОСТЕНЬКИХ скетча. Что сложного? Там на 15 минут работы.
Написано - готовых, а не простеньких. Но бармалеям все равно, главное - чтобы клиент наживку заглотил.
Та не переживай за меня. Я их видел.
Пожалуйста не ссорьтесь. Мне помогли разобраться. Я не выбирал. Пришло письмо, я согласился. Оперативно и доброжелательно всё объяснили. Всем добра!
Сделаю за 200 рублей
Что то цена не круглая или у тебя рядом скидки?
Со скидкой 50 р
А 200руб за пару нажатий Ctrl+C, Ctrl+V - вполне норм. ;)
Так и сделал. И как ни странно, работает.
Один скетч - измерение температуры. Другой - измерение влажности. Друг от друга не зависят. И друг другу не мешают.
Так и сделал. И как ни странно, работает.
Один скетч - измерение температуры. Другой - измерение влажности. Друг от друга не зависят. И друг другу не мешают.
а вдруг там было бы два разных монитора?
Колись, у кого хрустальный шар брал?
Прошу написать(поправить) код работы светофора по алгоритму:
Использование прерываний одобрено, однако есть 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;
}
}
Готовь 200р, счас бармалейка придёт.
Готовь 200р, счас бармалейка придёт.
а вдруг как герыч? первая доза бесплатно, ну а на второй, когда он уже зависимый взимается полная стоимость...
ЗЫ: ТСу советую мерять кирзовые сапоги, а не бить баклуши в ВУЗе. В армейке вам будут рады, трава давно не крашена.
В армейке вам будут рады, трава давно не крашена.
это да, не всем же как Галкину познать с какой стороны на ремень вешается штык-нож довелось участием в съёмках "В зоне особого внимания" кому-то и траву пришлось красить (а то кадр не стыковался) )))
Бармалей, напиши.
Мне стало интересно, можно ли сделать код работоспособным не меняя коренным образом структуру программы.
Заменил delay(5000); на myDelay(5000) в котором длинная задержка 5000 заменена на 500 циклов из delay(10) с контролем признака нажатия (выставляемом в прерывании) и выходом по этому признаку.
Получилась в меру корявая крепкая заплатка. Если надо продам за 200 руб. Upper321@yandex.ru
Примечание. Вызов delay() в прерывании не приводит к зависанию при частотах до 16 МГЦ, но отрабатывает коротко.
Там ещё светофор неправильно моргает. Использование прерываний одобрено, однако есть 2 но. 1. delay() в обработчике прерывания может привести к зависанию программы. 2. горит красный, нажимаем кнопку, программа должна перейти в режим моргающего жёлтого. Но этого не происходит.
А зачем здесь, его величество , прерывание по кнопке? Задание такое?