Попробуйте скетч вернуть к нормальному состоянию без изменений и залейте. Включите монитор и первой командой отправьте R200 - должен сразу замигать красный.
Попробуйте скетч вернуть к нормальному состоянию без изменений и залейте. Включите монитор и первой командой отправьте R200 - должен сразу замигать красный.
vk007 - если не заработает - обьясните ему про как сделать отправку принятых символов назад. Это самый простой путь диагностики.
да давайте я уже завтра попробую, а то глаза слипаются, как сделаю скетч то обязательно отпишусь, спасибо что помогаете я бы без вас не справился, спокойной ночи.
Я думаю, разберетесь. swith case использовал просто для наглядности. Теперь комманды, содержащие неправильные буквы будут игнорироваться. Как и прежде можно отсылать отдельно цвет, отдельно задержку, а можно и все в одной строке.
Возможно подключенный синий зуб мешает. Кстати, вы этот модуль вчера отключали, когда передавали данные через монитор порта? Может это он жить помогает?
Возможно подключенный синий зуб мешает. Кстати, вы этот модуль вчера отключали, когда передавали данные через монитор порта? Может это он жить помогает?
так ну я могу только сказать БОЛЬШОЕ СПАСИБО, скетч вроде нормально работает я с телефона пробовал управлять, у меня еще есть вопрос по поводу скетчу я сейчас изменю так как мне кажеться он может работать вы сможете глянуть???
короче, как вы поняли я буду управлять микроконтроллером с телефона, на нем стоит мое приложение к которому есть определенные требования, так вот мне нужно изменить принцип отправки данных, тоесть сейчас мы как работаем пишем с терминала или с определенного поля на телефоне например R100 что отвечает за цвет и за частоту, я хочу изменить это таким образом что бы я могу нажать на кнопку или выбрать другим способом цветом и дальше посредством ползунка частоту а не отправлять текстовую строку это не удобно пользователям, я вроде представляю как это сделать но мне бы что бы кто-то потом посмотрел что получилось
Ну так на здоровье, делайте. Хоть с монитора порта, хоть из вашей программы - данные все-равно надо передавать. Только программу для смартфона нужно написать так, чтобы она передавала эти данные в нужном формате. Иначе, как ардуине понять, что за данные вы передаете? Они же разные. Бы был только один параметр, то нет проблем. А тут надо как-то их различать. Вот мы и условились, если передается код буквы, то это значит передается цвет, если же код цифры (или коды нескольких цифр), то это - задержка.
Вот и все. Скетч для ардуины уже готовый, его переделывать нет смысла. Осталось дописать программу для смартфона.
Не тратьте время на скетч - этот передалывать уже не надо, он простой и самодостаточный, и выполняет требуемое от него. Так или иначе, даже если вы захотите написать что-то свое, в любом случае вам необходимо передаваемые данные как-то "шифровать" в определенном формате. Те же яйца только в профиль.
та я это понял уже, просто если смотреть то из строки я могу послать сразу полностью данные отвечающие за все и за цвет и за частоту, тоесть одновременно, а нажать на две кнопки одновременно сложно тоесть сразу должен приходить цвет но при этом он должен задерживаться а дальше должна приходить частота которая уже будет брать цвет с памяти и мигать, поэтому сейчас немного геммороя появилось
Не понимаю ваших проблем. Данные можно отправлять и вместе, и по отдельности.
Если нужно вместе, то делайте так: если программу только запустили и еще ничего не нажималось - юзер жмет кнопку выбора цвета; если ползунок задержки еще не двигали, значит ждем пока подвинут. Как только подвигали, формируем комманду цвет_задержка (например G100) и отправляем ее. Как только юзер снова что-то нажал, опять формируем комманду (смотрим какой цвет активный и какая выставлена задержка) и отсылаем. И так постоянно - следим, отсылаем.
Подвинул юзер первым ползунок, а цвет еще не выбирал - ждем пока выберет и цвет тоже, потом отсылаем комманду...
Кнопки выбора цвета - красить при нажатии в соответствующие им цвета. Изначально, пока они не нажимались делать их нейтрального цвета (т.е.все выкл). Нажал юзер какую-то - закрасили ее. Нажал другую - это обесцветили, нажатую подсветили соответствующим цветом.
Нужно отдельно, делайте отдельно: нажал юзер кнопку выбора цвета - отправили только цвет, подвинул юзер ползунок - отправили только задержку.
для меня честно говоря все пока-что гемморой потому-что я этого не знаю, вот сижу ковыряюсь сейчас, просто нужно это все реализовать, но в целом я насколько понял мы на ардуино отправляем поток байтов и там он уже сортируется по категориям
в целом я насколько понял мы на ардуино отправляем поток байтов и там он уже сортируется по категориям
На ардуино мы отсылаем не просто поток байтов, а упорядоченный по правилам поток байтов. Я не знаю на чем вы там пишете программу на андроиде, но не верю, что там все так бедно, что нельзя управлять этим потоком.
Может вам так понятней будет. Например, для отправки комманды R125 необходимо передать 4 байта: 82, 49, 50, 53 (это в десятичном виде). Где, 82 - код буквы 'R'; 49, 50 и 53 - коды цифр '1', '2' и '5' соответственно.
Кстати, в какой программе вы пишете свое приложение на андроиде?
И что это вообще за девайс должен получиться? Что-то ума не приложу, зачем мигать диодами по коммандам со смартфона?
добрый вечер, у меня вопрос vk007 у вас когда вы тестировали скетч на своей плате у вас при отсылке новой частоты на мигающий светодиод, светодиод выключался на мгновение, а потом уже мигал с новой частотой. Например у вы отправили R100 светодиод начинал мигать вы отпраляли новую частоту например 20 и он выключался и потом уже мигал с 20???
Такое происходит из-за особенностей работы функции Serial.parseInt(). Данные через Serial передаются один за другим (последовательно) и "складируются" в буфере, вычитываем данные оттуда тоже по одному, т.е. Serial.parseInt() достает из буфера по одному байту и собирает из них число. Но поскольку может возникнуть ситуация, когда фунция уже вычитала из буфера все байты, а передающее устройство передало их еще не все, то ввели некое время ожидания (таймаут), в течение которого функция ждет "а вдруг это не все и еще что-то поступит". Это время ожидания по умолчанию задано равным 1000 мс, но его можно изменить через Serial.setTimeout().
Если для вас критична эта пауза, то можете поэкспериментировать и найти тот минимум, при котором данные еще будут приниматься стабильно, задавая меньший таймаут через Serial.setTimeout() и увеличивая скорость работы порта в Serial.begin().
И еще, максимальная теоретическая скорость, и максимальная практически реализуемая в определенных условиях - это немного разные вещи. Даже по проводам все зависит от расстояния, а по воздуху (как в вашем случае) и подавно.
а блютуз модуль тоже можно будет как то открепить от макетки и приделать поближе к плате?? просто у меня весь комплекс сейчас занимает большое пространство а я его хочу сжать что бы был поменьше, и вот думаю как это сделать решил у вас спросить
Обыкновенный трехцветный светодиод, за который дерут втридорога, только потому, что он распаянный на плате, правда, он с уже установленными токозадающими резисторами.
Отвечая на вопрос о его подключении, то он не имеет никакого радиомодуля и к ардуине его надо подключать тоже проводами (а как еще то?).
а блютуз модуль тоже можно будет как то открепить от макетки и приделать поближе к плате?? просто у меня весь комплекс сейчас занимает большое пространство а я его хочу сжать что бы был поменьше, и вот думаю как это сделать решил у вас спросить
вот это я вообще не понял
да мигает
значит, как минимум, красный светик работает.
Тогда остается только монитор порта. Добавьте диагностический вывод на каждый принятый символ - типа "эха" - и посмотрите, что же там передается.
Попробуйте скетч вернуть к нормальному состоянию без изменений и залейте. Включите монитор и первой командой отправьте R200 - должен сразу замигать красный.
кстати, строчки - пятую и седьмую - не забудьте исправить обратно.
Попробуйте скетч вернуть к нормальному состоянию без изменений и залейте. Включите монитор и первой командой отправьте R200 - должен сразу замигать красный.
vk007 - если не заработает - обьясните ему про как сделать отправку принятых символов назад. Это самый простой путь диагностики.
А я спать пошел.
Удачи.
не мигает, вообще странно у вас у всех мигает а у меня нет, прикольно, даже фраза привет мир вывелась
Допишите после 22 строчки (т.е.после incoming_byte = Serial.peek();) строку Serial.println(char(incoming_byte));
И попробуте в мониторе отправлять по одному символу и только R, G или B. Другие не пробуйте - зависнет. В мониторе должны печататься эти же буквы.
Ладно, вижу, все уже ушли. Утро вечера мудренее. Может завтра заработает. Отпишитесь в любом случае.
да давайте я уже завтра попробую, а то глаза слипаются, как сделаю скетч то обязательно отпишусь, спасибо что помогаете я бы без вас не справился, спокойной ночи.
А на другом форуме срачик помасштабней развели :)
Пока разбираетесь с портом я немного переделал скетч, чтобы он не подвисал при неправильно переданной комманде:
Я думаю, разберетесь. swith case использовал просто для наглядности. Теперь комманды, содержащие неправильные буквы будут игнорироваться. Как и прежде можно отсылать отдельно цвет, отдельно задержку, а можно и все в одной строке.
откуда инфа??? я вроде не сильно палился)))
А на другом форуме срачик помасштабней развели :)
Возможно подключенный синий зуб мешает. Кстати, вы этот модуль вчера отключали, когда передавали данные через монитор порта? Может это он жить помогает?
так раньше не мешал
Возможно подключенный синий зуб мешает. Кстати, вы этот модуль вчера отключали, когда передавали данные через монитор порта? Может это он жить помогает?
а что значит отключал, типа rx/tx???
Что значит раньше? Отключите и попробуйте, чего гадать. И второе, Serial.println(char(incoming_byte)); добавляли?
ну я всегда при загрузке скетча вытаскиваю эти порты, а вот эту строку не добавил, сейчас посмотрю может что измениться
а что значит отключал, типа rx/tx???
Да, чтобы эти провода не были подключены к ардуине.
Используйте новый скетч. Строку добавляйте между 20 и 21 строками.
ну да я читал что там что там тогда запись не идет
да сейчас попробую, посмотрю как работает и сразу отпишусь
так ну я могу только сказать БОЛЬШОЕ СПАСИБО, скетч вроде нормально работает я с телефона пробовал управлять, у меня еще есть вопрос по поводу скетчу я сейчас изменю так как мне кажеться он может работать вы сможете глянуть???
Сначала скажите, чего вы от него хотите еще добиться, а там посмотрим.
короче, как вы поняли я буду управлять микроконтроллером с телефона, на нем стоит мое приложение к которому есть определенные требования, так вот мне нужно изменить принцип отправки данных, тоесть сейчас мы как работаем пишем с терминала или с определенного поля на телефоне например R100 что отвечает за цвет и за частоту, я хочу изменить это таким образом что бы я могу нажать на кнопку или выбрать другим способом цветом и дальше посредством ползунка частоту а не отправлять текстовую строку это не удобно пользователям, я вроде представляю как это сделать но мне бы что бы кто-то потом посмотрел что получилось
Ну так на здоровье, делайте. Хоть с монитора порта, хоть из вашей программы - данные все-равно надо передавать. Только программу для смартфона нужно написать так, чтобы она передавала эти данные в нужном формате. Иначе, как ардуине понять, что за данные вы передаете? Они же разные. Бы был только один параметр, то нет проблем. А тут надо как-то их различать. Вот мы и условились, если передается код буквы, то это значит передается цвет, если же код цифры (или коды нескольких цифр), то это - задержка.
Вот и все. Скетч для ардуины уже готовый, его переделывать нет смысла. Осталось дописать программу для смартфона.
тут я с вами согласен, чуть позже скину что я написал
Не тратьте время на скетч - этот передалывать уже не надо, он простой и самодостаточный, и выполняет требуемое от него. Так или иначе, даже если вы захотите написать что-то свое, в любом случае вам необходимо передаваемые данные как-то "шифровать" в определенном формате. Те же яйца только в профиль.
та я это понял уже, просто если смотреть то из строки я могу послать сразу полностью данные отвечающие за все и за цвет и за частоту, тоесть одновременно, а нажать на две кнопки одновременно сложно тоесть сразу должен приходить цвет но при этом он должен задерживаться а дальше должна приходить частота которая уже будет брать цвет с памяти и мигать, поэтому сейчас немного геммороя появилось
Не понимаю ваших проблем. Данные можно отправлять и вместе, и по отдельности.
Если нужно вместе, то делайте так: если программу только запустили и еще ничего не нажималось - юзер жмет кнопку выбора цвета; если ползунок задержки еще не двигали, значит ждем пока подвинут. Как только подвигали, формируем комманду цвет_задержка (например G100) и отправляем ее. Как только юзер снова что-то нажал, опять формируем комманду (смотрим какой цвет активный и какая выставлена задержка) и отсылаем. И так постоянно - следим, отсылаем.
Подвинул юзер первым ползунок, а цвет еще не выбирал - ждем пока выберет и цвет тоже, потом отсылаем комманду...
Кнопки выбора цвета - красить при нажатии в соответствующие им цвета. Изначально, пока они не нажимались делать их нейтрального цвета (т.е.все выкл). Нажал юзер какую-то - закрасили ее. Нажал другую - это обесцветили, нажатую подсветили соответствующим цветом.
Нужно отдельно, делайте отдельно: нажал юзер кнопку выбора цвета - отправили только цвет, подвинул юзер ползунок - отправили только задержку.
Где тут гемморой?
для меня честно говоря все пока-что гемморой потому-что я этого не знаю, вот сижу ковыряюсь сейчас, просто нужно это все реализовать, но в целом я насколько понял мы на ардуино отправляем поток байтов и там он уже сортируется по категориям
в целом я насколько понял мы на ардуино отправляем поток байтов и там он уже сортируется по категориям
На ардуино мы отсылаем не просто поток байтов, а упорядоченный по правилам поток байтов. Я не знаю на чем вы там пишете программу на андроиде, но не верю, что там все так бедно, что нельзя управлять этим потоком.
Может вам так понятней будет. Например, для отправки комманды R125 необходимо передать 4 байта: 82, 49, 50, 53 (это в десятичном виде). Где, 82 - код буквы 'R'; 49, 50 и 53 - коды цифр '1', '2' и '5' соответственно.
Кстати, в какой программе вы пишете свое приложение на андроиде?
И что это вообще за девайс должен получиться? Что-то ума не приложу, зачем мигать диодами по коммандам со смартфона?
я пишу приложение на андроид студии, а девайс это вторая более умная версия моего предыдущего устройства на резисторах и простых диодах
Где это устройство применяется? Для чего оно?
это устройство для снятия физиологических показаний с человека и их дальнейшая обработка, там вообще сложная система
добрый вечер, у меня вопрос vk007 у вас когда вы тестировали скетч на своей плате у вас при отсылке новой частоты на мигающий светодиод, светодиод выключался на мгновение, а потом уже мигал с новой частотой. Например у вы отправили R100 светодиод начинал мигать вы отпраляли новую частоту например 20 и он выключался и потом уже мигал с 20???
Такое происходит из-за особенностей работы функции Serial.parseInt(). Данные через Serial передаются один за другим (последовательно) и "складируются" в буфере, вычитываем данные оттуда тоже по одному, т.е. Serial.parseInt() достает из буфера по одному байту и собирает из них число. Но поскольку может возникнуть ситуация, когда фунция уже вычитала из буфера все байты, а передающее устройство передало их еще не все, то ввели некое время ожидания (таймаут), в течение которого функция ждет "а вдруг это не все и еще что-то поступит". Это время ожидания по умолчанию задано равным 1000 мс, но его можно изменить через Serial.setTimeout().
Если для вас критична эта пауза, то можете поэкспериментировать и найти тот минимум, при котором данные еще будут приниматься стабильно, задавая меньший таймаут через Serial.setTimeout() и увеличивая скорость работы порта в Serial.begin().
а вообще какая максимальная скорость порта?? потому-что я читал что вроде почти 200 мбит может тянуть?
Читайте описание http://arduino.ru/Serial/Begin
я понял, спасибо большое
а вот вопрос по железу есть такой https://megashara.biz/p405289619-modul-016-rgb.html светодиод на ардуину можно прицепить или же все равно нужно будет проводками соединять что то с чем-то
И еще, максимальная теоретическая скорость, и максимальная практически реализуемая в определенных условиях - это немного разные вещи. Даже по проводам все зависит от расстояния, а по воздуху (как в вашем случае) и подавно.
а блютуз модуль тоже можно будет как то открепить от макетки и приделать поближе к плате?? просто у меня весь комплекс сейчас занимает большое пространство а я его хочу сжать что бы был поменьше, и вот думаю как это сделать решил у вас спросить
Обыкновенный трехцветный светодиод, за который дерут втридорога, только потому, что он распаянный на плате, правда, он с уже установленными токозадающими резисторами.
Отвечая на вопрос о его подключении, то он не имеет никакого радиомодуля и к ардуине его надо подключать тоже проводами (а как еще то?).
а блютуз модуль тоже можно будет как то открепить от макетки и приделать поближе к плате?? просто у меня весь комплекс сейчас занимает большое пространство а я его хочу сжать что бы был поменьше, и вот думаю как это сделать решил у вас спросить
А вы паять совсем не умеете?
не очень, а что нужно будет паять? тут все так выглядело что можно и без пайки обойтись я так понял
Можно все оформить в виде шилда, который вы будете цеплять на свою uno.
типа сверху? на шилд нужно будет все таки паять я так думаю
Без пайки то можно, соединив все на проводах с разъемами на концах, но это все так ненадежно...
ладно я понял буду дальше ковыряться с программой, спасибо всем за помощь