Еще раз прочитай мой пред предыдущий ответ. Для включения различных комбинаций реле нужно посылать соотвествующие данные:
21 (двоичный код 10101) - включает 1,3 и 5 реле
25 (двоичный код 100101) - включает 6й, 3й и 1е реле.
соотвественно и в скрипте нужно делать активацию следуя двоичной логике: 20 (100000) + 4 (100) + 1 (1) = 25 (двоичный код 100101)
попробую объяснить, хотя с ардуриновским фреймворком не знаком. В мк каждый контакт ввода/вывода (в/в) сгруппирован в какой либо порт в/в (в АВР это PORTx). Порт имеет размерность одного байта и поэтому в каждом порту может быть сгруппировано не более 8и контактов в/в. Кроме того, для того, что бы мк сказать какой порт чем заниматься есть к каждому порту в/в еще дополнительный порт настройки (в АВР это DDRx). Там просто указывается будет определенный бит порта принимать данные или будет отдавать.
Поэтому в в функции setup() обычно и делают такие вещи. вот в pinMode ты пишешь значение из переменной ledPin = 13. Это значит в бинарном виде 00001101. А это означает, что ты управляешь в выходами в позициях 0, 2, и 3. И уже сразу три выхода предназначены на вывод. значит нужно соотвественно установить нужное значение в эту переменную.
Далее ты делаешь digitalWrite(ledPin, LOW/HIGH); чему равны HIGH и LOW неизвестно, но лучше конструировать для каждого бита отдельно:
int portOut= (1 << 0) //контакт 0 в порту вывода в позицию логической единицы [активно]
|(1<<2) //контакт 2 в позицию логической единицы
;
а вот бит 3 я пропустил. чтоб было понятно, что он не активируется.
Еще один нюанс: нужно быть уверенным, что в скрипте ты будешь писать 0 (или какое то другое значение). Но зачем тебе тогдяа эту басню сравнивать с чем то? пиши сразу в digitalWrite(ledPin, usbnumber).
Или другой вариант, если тяжко будет отлаживать: ты читаешь из компорта данные. но 0 - это не очень наглядные данные. поэтому лучше оперировать с номерами арабских цифр: "1", "2", "3". Это символы. То есть "0" - имеет код 48. Если от значения полученного кода вычесть 48, то получится наш номер. Кода будет больше так как нужно каждое значение сравнивать. но зато отлаживать ясно и понятно.
Вот написание кода для какого-либо проекта - это уже смахивает на работу, а не на совет. А работа не должна быть бесплатной. Куда выслать счет?
Но не выбиваясь за рамки совета могу вам помочь еще и с такой ссылкой mathscinet.ru/robots/avrgcc
Там есть куча обучающих примеров. Да и все это можно отладить нн выходя из браузера.
Отличия только в том, что имя открываемого файло должно быть ком-портом.
Для винды это допустим "com5:", для линукса может быть "/dev/ttyUSB". К сожалению, не пользуюсь дуриной и не знаю какое имя создает в линуксе точно. Этот файл нужно открывать на чтение и на запись. То есть "r+" нужно заменить на "rw". Чтом дурина не пихала без толку все что гужно и ненужно, надо научить ее реагировать на команды. fwrite($file, "S"); - передаст дурине указанный символ. Дальше в скрипте остается все тоже самое: читаетсяответ из файла и так же обрабатывается.
Абсолютно любая разработка определяется лишь возможностью быстро и точно вести отладку решаемой задачи. Если ардуино на каком то этапе позволяет упростить эту задачу, то почему нет?
Вот сейчас у меня хобби-проектик, который требует использования сразу нескольких устройств: программатор, com-порт, согласование TTL-уровней с тремя напряжениями. Когда только подготовка к реализации занимает несколько дней, то делатъ такое совсем не хочется и выделение после работы на это дело 1 час ставит задачу нереализуемой. И в голову приходят простые вещи, типа купить ардуину, перевести ее на напряжение контроллера по схеме и не париться - ведь программатор уже не нужен, а компорт в ней встроен.
Ну почему же не радует? Что такое фирменное Ардуино? Это усторойство с 32 килобайтами флэша. Это более чем достаточно. Все остальные реализиции на низших кристаллах - выдумка китайских друзей.
Года четыре назад один мой коллега купил м644 с бутлоадером на борту. Тогда еще ардуинами совсем не пахло.
Ардуино предназначено привить первичные возможности создания хардверных систем: с помощью минимальных усилий и с объяснением на пальцах показать связь времени (кода) и пространства (портов ввода/вывода и целевых устройств).
Если речь вести о профессиональных средствах разработки, то там нужны и средства отладки (для старших версий это jtag) и симуляторы (AVR Studio, Proteus ISIS).
Самое главное в Ардуино - это возможность быстрого программирования, без использования специализированного программатора. То есть упор на бутлоадер. То, что создатели Дурины подключили к ней свой фреймворк - в наше время патентного права это жизненная необходимость.
Но насколько я знаю, там вроде бы есть возможность писать и без фреймворка. Или поверх фирменно фремворкеа наложить свой, делающий возврат к атмеловскому варианту С (в этом необходимо только переименование названий портов).
кода - море. Нужно только искать не со словом "ардурино", а по названию микроконтроллера и нужной функции/сенсора/конечного устройства.
Самый полный образовательный мануал находится в даташите нужного микроконтроллера. Причем в двух экземплярах - на ассемблере и на С.
Кроме того не стоит игнорировать коллективный мозг. Имеются тысячи форумов посвященных этим микроконтроллерам.
Из-зачего они мне и нравятся микроконтроллеры Атмел, так это из-за обилия кода и документации. И в его отсуствии грех жаловаться.
Увы, это невожможно в силу специфики Ардуино. Скажем так: большинство функций в системе существуют, но под другими именами и другой реализацией. Обычный тулчейн дла АВРов - WinAVR на основе gcc (сейчас проект более не развивается и идет в комплекте с AVR Studio. Его можно скачать на сайте atmel.com). В качестве программы для заливки - лучше avrdude пока еще не встречал. Хотя тоже зоопарк великий.
Если проблема только в нехватке памяти для кода - то нужно полюбому переходить на winavr. Если же устройство и так работает, но хочется сделать код просто комактным - это нонсенс. Неиспользованную память невозможно перевести на счет в банке, а работающий проект глупо переписывать под что-то еще.
вот я и дал решение. ссылка действует, пока продолжается сессия этого пользователя. Как только он закрыл браузер, ссылка больше не действительна. При соединении с другого компьютера такая ссылка будет недоступна. При желании можно в базе сделать таблицу с такими номерами и временем окончания действия ссылки. Кроме того, что бы еще больше ввести в заблуждение, лучше полученный id обработать функцией md5.
Второй вариант: использовать данные клиента, например его ip. Так же обработать его md5 и получим уникальное значение, которое привязано к конкретному компьютеру в сети.
Ок. По схеме там стоят стабилитроны на D+ и D-. Просто перепаяй их за резисторя R1 и R2, прямо на ноги микроконтроллера.
Проблема в том, что это устройство расчитано на шину USB1.1. Шине этот признак задает подтягивающий резистор на одном из сигналов данных по время плагина устройства. Но стабилитроны портят эту идиллию, опуская не вовремя сигнал. И комп думает, сто нужно работать с устройством по USB2.
Для микроконтроллера не особо критично, есть ли сигнал единицы 3.3 вольта или 5 - главное что бы выше 2.5 вольт. А вот для шины это важно.
кстати, он самопальный или от китайских товарисчей?
Дело в том, что в оригинальной схемке немного глюк. Из за этого он в разных осях воспринимается по разному в разных USB-портах. Попробуй в разные порты повключать и по lsusb смотреть. только эту операцию нужноп под рутом выполнять.
@IkaR49 реализуется просто: берется два диода, соединяются последовательно. центр диодов сажается на клемму батареи, а к концам подключается источник и нагрузка. ток от источника всегда течет в сторону батареи, но не обратно. И ток от батареи всегда течет в сторону нагрузки, но необратно.