Операции со строками в ардуино. По мотивам «Обрабатываем строки на Arduino. Объединение строк Arduino

Мышь воспринимает своё перемещение в рабочей плоскости (обычно - на участке поверхности стола) и передаёт эту информацию компьютеру. Программа, работающая на компьютере, в ответ на перемещение мыши производит на экране действие, отвечающее направлению и расстоянию этого перемещения. В разных интерфейсах (например, в оконных) с помощью мыши пользователь управляет специальным курсором - указателем - манипулятором элементами интерфейса. Иногда используется ввод команд мышью без участия видимых элементов интерфейса программы: при помощи анализа движений мыши. Такой способ получил название «жесты мышью » (англ. mouse gestures ).

В дополнение к датчику перемещения, мышь имеет одну и более кнопок, а также дополнительные детали управления (колёса прокрутки, потенциометры, джойстики, трекболы, клавиши и т. п.), действие которых обычно связывается с текущим положением курсора (или составляющих специфического интерфейса).

Составляющие управления мыши во многом являются воплощением замыслов аккордной клавиатуры (то есть, клавиатуры для работы вслепую). Мышь, изначально создаваемая в качестве дополнения к аккордной клавиатуре, фактически её заменила.

В некоторые мыши встраиваются дополнительные независимые устройства - часы, калькуляторы, телефоны.

История

Первым компьютером, в набор которого включалась мышь, был миникомпьютер Xerox 8010 Star Information System (англ. ), представленный в 1981 году. Мышь фирмы Xerox имела три кнопки и стоила 400 долларов США, что соответствует примерно $930 в ценах 2009 года с учётом инфляции . В 1983 году фирма Apple выпустила свою собственную однокнопочную мышь для компьютера Lisa , стоимость которой удалось уменьшить до $25. Широкую известность мышь приобрела благодаря использованию в компьютерах Apple Macintosh и позднее в ОС Windows для IBM PC совместимых компьютеров.

Датчики перемещения

В процессе «эволюции» компьютерной мыши наибольшие изменения претерпели датчики перемещения.

Прямой привод

Первая компьютерная мышь

Изначальная конструкция датчика перемещения мыши, изобретённой Дугласом Энгельбартом в Стенфордском исследовательском институте в 1963 году , состояла из двух перпендикулярных колес, выступающих из корпуса устройства. При перемещении колеса мыши крутились каждое в своем измерении.

Такая конструкция имела много недостатков и довольно скоро была заменена на мышь с шаровым приводом.

Шаровой привод

В шаровом приводе движение мыши передается на выступающий из корпуса обрезиненный стальной шарик (его вес и резиновое покрытие обеспечивают хорошее сцепление с рабочей поверхностью). Два прижатых к шарику ролика снимают его движения по каждому из измерений и передают их на датчики, преобразующие эти движения в электрические сигналы.

Основной недостаток шарового привода - загрязнение шарика и снимающих роликов, приводящее к заеданию мыши и необходимости в периодической её чистке (отчасти эта проблема сглаживалась путём металлизации роликов). Несмотря на недостатки, шаровой привод долгое время доминировал, успешно конкурируя с альтернативными схемами датчиков. В настоящее время шаровые мыши почти полностью вытеснены оптическими мышами второго поколения.

Существовало два варианта датчиков для шарового привода.

Контактные датчики

Контактный датчик представляет собой текстолитовый диск с лучевидными металлическими дорожками и тремя контактами, прижатыми к нему. Такой датчик достался шаровой мыши «в наследство» от прямого привода.

Основными недостатками контактных датчиков является окисление контактов, быстрый износ и невысокая точность. Поэтому со временем все мыши перешли на бесконтактные оптопарные датчики.

Оптронный датчик

Устройство механической компьютерной мыши

Оптронный датчик состоит из двойной оптопары - светодиода и двух фотодиодов (обычно - инфракрасных) и диска с отверстиями или лучевидными прорезями, перекрывающего световой поток по мере вращения. При перемещении мыши диск вращается, и с фотодиодов снимается сигнал с частотой, соответствующей скорости перемещения мыши.

Второй фотодиод, смещённый на некоторый угол или имеющий на диске датчика смещённую систему отверстий/прорезей, служит для определения направления вращения диска (свет на нём появляется/исчезает раньше или позже, чем на первом, в зависимости от направления вращения).

Оптические мыши первого поколения

Оптические датчики призваны непосредственно отслеживать перемещение рабочей поверхности относительно мыши. Исключение механической составляющей обеспечивало более высокую надёжность и позволяло увеличить разрешающую способность детектора.

Первое поколение оптических датчиков было представлено различными схемами оптопарных датчиков с непрямой оптической связью - светоизлучающих и воспринимающих отражение от рабочей поверхности светочувствительных диодов. Такие датчики имели одно общее свойство - они требовали наличия на рабочей поверхности (мышином коврике) специальной штриховки (перпендикулярными или ромбовидными линиями). На некоторых ковриках эти штриховки выполнялись красками, невидимыми при обычном свете (такие коврики даже могли иметь рисунок).

Недостатками таких датчиков обычно называют:

  • необходимость использования специального коврика и невозможность его замены другим. Кроме всего прочего, коврики разных оптических мышей часто не были взаимозаменяемыми и не выпускались отдельно;
  • необходимость определённой ориентации мыши относительно коврика, в противном случае мышь работала неправильно;
  • чувствительность мыши к загрязнению коврика (ведь он соприкасается с рукой пользователя) - датчик неуверенно воспринимал штриховку на загрязнённых местах коврика;
  • высокую стоимость устройства.

В СССР оптические мыши первого поколения, как правило, встречались только в зарубежных специализированных вычислительных комплексах.

Оптические светодиодные мыши

Мышь с оптическим датчиком

Микросхема оптического датчика второго поколения

Второе поколение оптических мышей имеет более сложное устройство. В нижней части мыши установлен специальный светодиод, который подсвечивает поверхность, по которой перемещается мышь. Миниатюрная камера «фотографирует» поверхность более тысячи раз в секунду, передавая эти данные процессору, который и делает выводы об изменении координат. Оптические мыши второго поколения имеют огромное преимущество перед первым: они не требуют специального коврика и работают практически на любых поверхностях, кроме зеркальных или прозрачных; даже на фторопласте (включая черный). Они также не нуждаются в чистке.

Предполагалось, что такие мыши будут работать на произвольной поверхности, однако вскоре выяснилось, что многие продаваемые модели (в особенности первые широко продаваемые устройства) не так уж и безразличны к рисункам на коврике. На некоторых участках рисунка графический процессор способен сильно ошибаться, что приводит к хаотичным движениям указателя, не отвечавших реальному перемещению. Для склонных к таким сбоям мышей необходимо подобрать коврик с иным рисунком или вовсе с однотонным покрытием.

Отдельные модели также склонны к детектированию мелких движений при нахождении мыши в состоянии покоя, что проявляется дрожанием указателя на экране, иногда с тенденцией сползания в ту или иную сторону.

Мышь с двойным датчиком

Датчики второго поколения постепенно совершенствуются, и в настоящее время мыши, склонные к сбоям, встречаются гораздо реже. Кроме совершенствования датчиков, некоторые модели оборудуются двумя датчиками перемещения сразу, что позволяет, анализируя изменения сразу на двух участках поверхности, исключать возможные ошибки. Такие мыши иногда способны работать на стеклянных, оргстеклянных и зеркальных поверхностях (на которых не работают другие мыши).

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

Недостатком данной мыши является сложность её одновременной работы с графическими планшетами, последние ввиду своей аппаратной особенности иногда теряют истинное направление сигнала при движении пера и начинают искажать траекторию движения инструмента при рисовании. При использовании мышей с шаровым приводом подобных отклонений не наблюдается. Для устранения данной проблемы рекомендуется использовать лазерные манипуляторы. Также, к недостаткам оптических мышей некоторые люди относят свечение таких мышей даже при выключенном компьютере. Поскольку большинство недорогих оптических мышей имеют полупрозрачный корпус, он пропускает красный свет светодиодов, который мешает уснуть в случае, если компьютер находится в спальне. Это происходит, если напряжение на порты PS/2 и USB подаётся от линии дежурного напряжения; большинство материнских плат позволяют изменить это перемычкой +5V <-> +5VSB, но в этом случае не будет возможности включать компьютер с клавиатуры.

Оптические лазерные мыши

Лазерный датчик

В последние годы была разработана новая, более совершенная разновидность оптического датчика, использующего для подсветки полупроводниковый лазер .

О недостатках таких датчиков пока известно мало, но известно об их преимуществах:

  • более высоких надёжности и разрешении
  • отсутствии заметного свечения (сенсору достаточно слабой подсветки лазером видимого или, возможно, инфракрасного диапазона)
  • низком энергопотреблении

Индукционные мыши

Графический планшет с индукционной мышью

Индукционные мыши используют специальный коврик, работающий по принципу графического планшета или собственно входят в комплект графического планшета. Некоторые планшеты имеют в своем составе манипулятор, похожий на мышь со стеклянным перекрестием, работающий по тому же принципу, однако немного отличающийся реализацией, что позволяет достичь повышенной точности позиционирования за счёт увеличения диаметра чувствительной катушки и вынесения её из устройства в зону видимости пользователя.

Индукционные мыши имеют хорошую точность, и их не нужно правильно ориентировать. Индукционная мышь может быть «беспроводной» (к компьютеру подключается планшет, на котором она работает), и иметь индукционное же питание, следовательно, не требовать аккумуляторов, как обычные беспроводные мыши.

Мышь в комплекте графического планшета позволит сэкономить немного места на столе (при условии, что на нём постоянно находится планшет).

Индукционные мыши редки, дороги и не всегда удобны. Мышь для графического планшета практически невозможно поменять на другую (например, больше подходящую по руке, и т. п.).

Гироскопические мыши

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

Трекболы

Индукционные мыши

Индукционные мыши чаще всего имеют индукционное питание от рабочей площадки («коврика») или графического планшета. Но такие мыши являются беспроводными лишь отчасти - планшет или площадка всё равно подключаются кабелем. Таким образом, кабель не мешает двигать мышью, но и не позволяет работать на расстоянии от компьютера, как с обычной беспроводной мышью.

Дополнительные функции

Некоторые производители мышей добавляют в мышь функции оповещения о каких-либо событиях, происходящих в компьютере. В частности, Genius и Logitech выпускают модели, оповещающие о наличии непрочитанных электронных писем в почтовом ящике свечением светодиода или воспроизведением музыки через встроенный в мышь динамик.

Известны случаи помещения внутрь корпуса мыши вентилятора для охлаждения во время работы руки пользователя потоком воздуха через специальные отверстия. Некоторые модели мышей, предназначенные для любителей компьютерных игр, имеют встроенные в корпус мыши маленькие эксцентрики, которые обеспечивают ощущение вибрации при выстреле в компьютерных играх. Примерами таких моделей является линейка мышей Logitech iFeel Mouse.

Кроме того, существуют мини-мыши, созданные для владельцев ноутбуков, имеющие малые габариты и массу.

Некоторые беспроводные мыши имеют возможность работы как пульта ДУ (например, Logitech MediaPlay). Они имеют немного изменённую форму для работы не только на столе, но и при удержании в руке.

Достоинства и недостатки

Мышь стала основным координатным устройством ввода из-за следующих особенностей:

  • Очень низкая цена (по сравнению с остальными устройствами наподобие сенсорных экранов).
  • Мышь пригодна для длительной работы. В первые годы мультимедиа кинорежиссёры любили показывать компьютеры «будущего» с сенсорным интерфейсом, но на поверку такой способ ввода довольно утомителен, так как руки приходится держать на весу.
  • Высокая точность позиционирования курсора. Мышью (за исключением некоторых «неудачных» моделей) легко попасть в нужный пиксель экрана.
  • Мышь позволяет множество разных манипуляций - двойные и тройные щелчки, перетаскивания , жесты , нажатие одной кнопки во время перетаскивания другой и т. д. Поэтому в одной руке можно сконцентрировать большое количество органов управления - многокнопочные мыши позволяют управлять, например, браузером вообще без привлечения клавиатуры.

Недостатками мыши являются:

  • Опасность синдрома запястного канала (не подтверждается клиническими исследованиями).
  • Для работы требуется ровная гладкая поверхность достаточных размеров (за исключением разве что гироскопических мышей).
  • Неустойчивость к вибрациям. По этой причине мышь практически не применяется в военных устройствах. Трекбол требует меньше места для работы и не требует перемещать руку, не может потеряться, имеет большую стойкость к внешним воздействиям, более надёжен.

Способы хвата мыши

По данным журнала «Домашний ПК ».

Игроки различают три основных способа хвата мыши.

  • Пальцами. Пальцы лежат плашмя на кнопках, верхняя часть ладони упирается в «пятку» мыши. Нижняя часть ладони - на столе. Преимущество - точные движения мыши.
  • Когтеобразный. Пальцы согнуты и упираются в кнопки только кончиками. «Пятка» мыши в центре ладони. Преимущество - удобство щелчков.
  • Ладонью. Вся ладонь лежит на мыши, «пятка» мыши, как и в когтеобразном хвате, упирается в центр ладони. Хват более приспособлен для размашистых движений шутеров .

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

Программная поддержка

Отличительной особенностью мышей как класса устройств является хорошая стандартизованность аппаратных

В этой статье мы рассмотрим принципы работы сенсоров оптических мышей, прольем свет на историю их технологического развития, а также развенчаем некоторые мифы, связанные с оптическими «грызунами».

Кто тебя выдумал…

Привычные для нас сегодня оптические мыши ведут свою родословную с 1999 года, когда в массовой продаже появились первые экземпляры таких манипуляторов от Microsoft, а через некоторое время и от других производителей. До появления этих мышей, да и еще долго после этого, большинство массовых компьютерных «грызунов» были оптомеханическими (перемещения манипулятора отслеживались оптической системой, связанной с механической частью - двумя роликами, отвечавшими за отслеживание перемещения мыши вдоль осей × и Y; эти ролики, в свою очередь, вращались от шарика, перекатывающегося при перемещении мыши пользователем). Хотя встречались и чисто оптические модели мышей, требовавшие для своей работы специального коврика. Впрочем, такие устройства встречались не часто, да и сама идея развития подобных манипуляторов постепенно сошла на нет.

«Вид» знакомых нам нынче массовых оптических мышек, базирующихся на общих принципах работы, был «выведен» в исследовательских лабораториях всемирно известной корпорации Hewlett-Packard. Точнее, в ее подразделении Agilent Technologies, которое только сравнительно недавно полностью выделилось в структуре корпорации НР в отдельную компанию. На сегодняшний день Agilent Technologies, Inc. - монополист на рынке оптических сенсоров для мышей, никакие другие компании такие сенсоры не разрабатывают, кто бы и что не говорил вам об эксклюзивных технологиях IntelliEye или MX Optical Engine . Впрочем, предприимчивые китайцы уже научились «клонировать» сенсоры Agilent Technologies, поэтому, покупая недорогую оптическую мышь, вы вполне можете стать владельцем «левого» сенсора.

Откуда берутся видимые отличия в работе манипуляторов, мы выясним чуть позднее, а пока позвольте приступить к рассмотрению базовых принципов работы оптических мышей, точнее их систем слежения за перемещением.

Как «видят» компьютерные мыши

В этом разделе мы изучим базовые принципы работы оптических систем слежения за перемещением, которые используются в современных манипуляторах типа мышь.

Итак, «зрение» оптическая компьютерная мышь получает благодаря следующему процессу. С помощью светодиода, и системы фокусирующих его свет линз, под мышью подсвечивается участок поверхности. Отраженный от этой поверхности свет, в свою очередь, собирается другой линзой и попадает на приемный сенсор микросхемы - процессора обработки изображений. Этот чип, в свою очередь, делает снимки поверхности под мышью с высокой частотой (кГц). Причем микросхема (назовем ее оптический сенсор) не только делает снимки, но сама же их и обрабатывает, так как содержит две ключевых части: систему получения изображения Image Acquisition System (IAS) и интегрированный DSP процессор обработки снимков.

На основании анализа череды последовательных снимков (представляющих собой квадратную матрицу из пикселей разной яркости), интегрированный DSP процессор высчитывает результирующие показатели, свидетельствующие о направлении перемещения мыши вдоль осей × и Y, и передает результаты своей работы вовне по последовательному порту.

Если мы посмотрим на блок-схему одного из оптических сенсоров, то увидим, что микросхема состоит из нескольких блоков, а именно:

  • основной блок, это, конечно же, Image Processor - процессор обработки изображений (DSP) со встроенным приемником светового сигнала (IAS);
  • Voltage Regulator And Power Control - блок регулировки вольтажа и контроля энергопотребления (в этот блок подается питание и к нему же подсоединен дополнительный внешний фильтр напряжения);
  • Oscillator - на этот блок чипа подается внешний сигнал с задающего кварцевого генератора, частота входящего сигнала порядка пары десятков МГц;
  • Led Cоntrоl - это блок управления светодиодом, с помощью которого подсвечивается поверхность под мышью;
  • Serial Port - блок передающий данные о направлении перемещения мыши вовне микросхемы.

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

Нужно уточнить, что информацию о перемещении мыши микросхема оптического сенсора передает через Serial Port не напрямую в компьютер. Данные поступают к еще одной микросхеме-контроллеру, установленной в мыши. Эта вторая «главная» микросхема в устройстве отвечает за реакцию на нажатие кнопок мыши, вращение колеса прокрутки и т.д. Данный чип, в том числе, уже непосредственно передает в ПК информацию о направлении перемещения мыши, конвертируя данные, поступающие с оптического сенсора, в передаваемые по интерфейсам PS/2 или USB сигналы. А уже компьютер, используя драйвер мыши, на основании поступившей по этим интерфейсам информации, перемещает курсор-указатель по экрану монитора.

Именно по причине наличия этой «второй» микросхемы-контроллера, точнее благодаря разным типам таких микросхем, довольно заметно отличались между собой уже первые модели оптических мышей. Если о дорогих устройствах от Microsoft и Logitech слишком плохо отозваться я не могу (хотя и они не были вовсе «безгрешны»), то масса появившихся вслед за ними недорогих манипуляторов вела себя не вполне адекватно. При движении этих мышей по обычным коврикам курсоры на экране совершали странные кульбиты, скакали чуть ли не на пол Рабочего стола, а иногда… иногда они даже отправлялись в самостоятельное путешествие по экрану, когда пользователь совершенно не трогал мышь. Доходило и до того, что мышь могла запросто выводить компьютер из режима ожидания, ошибочно регистрируя перемещение, когда манипулятор на самом деле никто не трогал.

Кстати, если вы до сих пор боретесь с подобной проблемой, то она решается одним махом вот так: выбираем Мой Компьютер > Свойства > Оборудование > Диспетчер устройств > выбираем установленную мышь > заходим в ее «Свойства» > в появившемся окне переходим на закладку «Управление электропитанием» и снимаем галочку с пункта «Разрешить устройству вывод компьютера из ждущего режима» (рис. 4). После этого мышь уже не сможет вывести компьютер из режима ожидания ни под каким предлогом, даже если вы будете пинать ее ногами:)

Итак, причина столь разительного отличия в поведении оптических мышей была вовсе не в «плохих» или «хороших» установленных сенсорах, как до сих пор думают многие. Не верьте, это не более чем бытующий миф. Или фантастика, если вам так больше нравится:) В ведущие себя совершенно по-разному мыши часто устанавливались совершенно одинаковые микросхемы оптических сенсоров (благо, моделей этих чипов было не так уж много, как мы увидим далее). Однако вот, благодаря несовершенным чипам контроллеров, устанавливаемых в оптические мыши, мы имели возможность сильно поругать первые поколения оптических грызунов.

Однако, мы несколько отвлеклись от темы. Возвращаемся. В целом система оптического слежения мышей, помимо микросхемы-сенсора, включает еще несколько базовых элементов. Конструкция включает держатель (Clip) в который устанавливаются светодиод (LED) и непосредственно сама микросхема сенсора (Sensor). Эта система элементов крепится на печатную плату (PCB), между которой и нижней поверхностью мыши (Base Plate) закрепляется пластиковый элемент (Lens), содержащий две линзы (о назначении которых было написано выше).

В собранном виде оптический элемент слежения выглядит как показано выше. Схема работы оптики этой системы представлена ниже.

Оптимальное расстояние от элемента Lens до отражающей поверхности под мышью должно попадать в диапазон от 2.3 до 2.5 мм. Это рекомендации производителя сенсоров. Вот вам и первая причина, почему оптические мыши плохо себя чувствуют «ползая» по оргстеклу на столе, всевозможным «полупрозрачным» коврикам и т. п. И не стоит клеить на оптические мыши «толстые» ножки, когда отваливаются или стираются старые. Мышь из-за чрезмерного «возвышения» над поверхностью может впадать в состояние ступора, когда «расшевелить» курсор после пребывания мыши в состоянии покоя становится довольно проблематично. Это не теоретические измышления, это личный опыт:)

Кстати, о проблеме долговечности оптических мышей. Помниться, некоторые их производители утверждали что, дескать «они будут служить вечно». Да надежность оптической системы слежения высока, она не идет ни в какое сравнение с оптомеханической. В то же время в оптических мышах остается много чисто механических элементов, подверженных износу точно так же, как и при господстве старой доброй «оптомеханики». Например, у моей старой оптической мыши стерлись и поотваливались ножки, сломалось колесо прокрутки (дважды, в последний раз безвозвратно:(), перетерся провод в соединительном кабеле, с манипулятора слезло покрытие корпуса… зато вот оптический сенсор нормально работает, как ни в чем не бывало. Исходя из этого, мы смело можем констатировать, что слухи о якобы впечатляющей долговечности оптических мышей не нашли своего подтверждения на практике. Да и зачем, скажите на милость, оптическим мышам «жить» слишком долго? Ведь на рынке постоянно появляются новые, более совершенные модели, созданные на новой элементной базе. Они заведомо совершеннее и удобнее в использовании. Прогресс, знаете ли, штука непрерывная. Каким он был в области эволюции интересующих нас оптических сенсоров, давайте сейчас и посмотрим.

Из истории мышиного зрения

Инженеры-разработчики компании Agilent Technologies, Inc. не зря едят свой хлеб. За пять лет оптические сенсоры этой компании претерпели существенные технологические усовершенствования и последние их модели обладают весьма впечатляющими характеристиками.

Но давайте обо всем по порядку. Первыми массово выпускаемыми оптическими сенсорами стали микросхемы HDNS-2000 (рис. 8). Эти сенсоры имели разрешение 400 cpi (counts per inch), то бишь точек (пикселей) на дюйм, и были рассчитаны на максимальную скорость перемещения мыши в 12 дюймов/с (около 30 см/с) при частоте осуществления снимков оптическим сенсором в 1500 кадров за секунду. Допустимое (с сохранением стабильной работы сенсора) ускорение при перемещении мыши «в рывке» для чипа HDNS-2000 - не более 0.15 g (примерно 1.5 м/с 2).

Затем на рынке появились микросхемы оптических сенсоров ADNS-2610 и ADNS-2620 . Оптический сенсор ADNS-2620 уже поддерживал программируемую частоту «съемки» поверхности под мышью, с частотой в 1500 либо 2300 снимков/с. Каждый снимок делался с разрешением 18х18 пикселей. Для сенсора максимальная рабочая скорость перемещения по прежнему была ограничена 12 дюймами в секунду, зато ограничение по допустимому ускорению возросло до 0.25 g, при частоте «фотографирования» поверхности в 1500 кадров/с. Данный чип (ADNS-2620) также имел всего 8 ножек, что позволило существенно сократить его размеры по сравнению с микросхемой ADNS-2610 (16 контактов), внешне похожей на HDNS-2000. В Agilent Technologies, Inc. задались целью «минимизировать» свои микросхемы, желая сделать последние компактнее, экономнее в энергопотреблении, а потому и удобнее для установки в «мобильные» и беспроводные манипуляторы.

Микросхема ADNS-2610 хотя и являлась «большим» аналогом 2620-й, но была лишена поддержки «продвинутого» режима 2300 снимков/с. Кроме того, этот вариант требовал 5В питания, тогда как чип ADNS-2620 обходился всего 3.3 В.

Вышедший вскоре чип ADNS-2051 представлял собой гораздо более мощное решение, чем микросхемы HDNS-2000 или ADNS-2610, хотя внешне (упаковкой) был также на них похож. Этот сенсор уже позволял программируемо управлять «разрешением» оптического датчика, изменяя таковое с 400 до 800 сpi. Вариант микросхемы также допускал регулировку частоты снимков поверхности, причем позволял менять ее в очень широком диапазоне: 500, 1000,1500, 2000 или 2300 снимков/с. А вот величина этих самых снимков составляла всего 16х16 пикселей. При 1500 снимках/с предельно допустимое ускорение мыши при «рывке» составляло по прежнему 0.15 g, максимально возможная скорость перемещения - 14 дюймов/с (т. е. 35.5 см/с). Данный чип был рассчитан на напряжение питания 5 В.

Сенсор ADNS-2030 разрабатывался для беспроводных устройств, а потому имел малое энергопотребление, требуя всего 3.3 В питания. Чип также поддерживал энергосберегающие функции, например функцию снижения потребления энергии при нахождении мыши в состоянии покоя (power conservation mode during times of no movement), переход в режим «сна», в том числе при подключении мыши по USB интерфейсу, и т.д.. Мышь, впрочем, могла работать и не в энергосберегающем режиме: значение «1» в бите Sleep одного из регистров чипа заставляло сенсор «всегда бодрствовать», а значение по умолчанию «0» соответствовало режиму работы микросхемы, когда по прошествии одной секунды, если мышь не перемещалась (точнее после получения 1500 совершенно одинаковых снимков поверхности) сенсор, напару с мышью, переходил в режим энергосбережения. Что касается остальных ключевых характеристик сенсора, то они не отличались от таковых у ADNS-2051: тот же 16-и контактный корпус, скорость перемещения до 14 дюймов/с при максимальном ускорении 0.15 g, программируемое разрешение 400 и 800 cpi соответственно, частоты осуществления снимков могли быть точно такими же, как и у вышерассмотренного варианта микросхемы.

Такими были первые оптические сенсоры. К сожалению, им были свойственны недостатки. Большой проблемой, возникающей при передвижением оптической мыши по поверхностям, особенно с повторяющимся мелким рисунком, являлось то, что процессор обработки изображений порой путал отдельные похожие участки монохромного изображения, получаемые сенсором и неверно определял направление перемещения мыши.

В итоге и курсор на экране перемещался не так, как требовалось. Указатель на экране даже становился способен на экспромт:) - на непредсказуемые перемещения в произвольном направлении. Кроме того, легко догадаться, что при слишком быстром перемещении мыши сенсор мог вообще утратить всякую «связь» между несколькими последующими снимками поверхности. Что порождало еще одну проблему: курсор при слишком резком перемещении мыши либо дергался на одном месте, либо происходили вообще «сверхъестественные»:) явления, например, с быстрым вращением окружающего мира в игрушках. Было совершенно ясно, что для человеческой руки ограничений в 12-14 дюймов/с по предельной скорости перемещения мыши явно мало. Также не вызывало сомнений, что 0.24 с (почти четверть секунды), отведенные для разгона мыши от 0 до 35.5 см/с (14 дюймов/с - предельная скорость) это очень большой промежуток времени, человек способен двигать кистью значительно быстрее. И потому при резких движениях мыши в динамичных игровых приложениях с оптическим манипулятором может придтись несладко…

Понимали это и в Agilent Technologies. Разработчики осознавали, что характеристики сенсоров надо кардинально улучшать. В своих изысканиях они придерживались простой, но правильной аксиомы: чем больше снимков в секунду сделает сенсор, тем меньше вероятность того, что он потеряет «след» перемещения мыши во время совершения пользователем компьютера резких телодвижений:)

Хотя, как мы видим из вышеизложенного, оптические сенсоры и развивались, постоянно выпускались новые решения, однако развитие в этой области можно смело назвать «очень постепенным». По большому счету, кардинальных изменений в свойствах сенсоров так и не происходило. Но техническому прогрессу в любой области порой свойственны резкие скачки. Случился такой «прорыв» и в области создания оптических сенсоров для мышей. Появление оптического сенсора ADNS-3060 можно считать действительно революционным!

Лучший из

Оптический сенсор ADNS-3060 , по сравнению со своими «предками», обладает поистине впечатляющим набором характеристик. Использование этой микросхемы, упакованной в корпус с 20-ю контактами, обеспечивает оптическим мышам невиданные ранее возможности. Допустимая максимальная скорость перемещения манипулятора выросла до 40 дюймов/с (то есть почти в 3 раза!), т.е. достигла «знаковой» скорости в 1 м/с. Это уже очень хорошо - вряд ли хоть один пользователь двигает мышь с превышающей данное ограничение скоростью столь часто, чтобы постоянно чувствовать дискомфорт от использования оптического манипулятора, в том числе это касается и игровых приложений. Допустимое же ускорение выросло, страшно сказать, во сто раз (!), и достигло величины 15 g (почти 150 м/с 2). Теперь на разгон мыши с 0 до предельных 1 м/с пользователю отводится 7 сотых секунды - думаю, теперь очень немногие сумеют превзойти это ограничение, да и то, вероятно, в мечтах:) Программируемая скорость осуществления снимков поверхности оптическим сенсором у новой модели чипа превышает 6400 кадров/с, т.е. «бьет» предыдущий «рекорд» почти в три раза. Причем чип ADNS-3060 может сам осуществлять подстройку частоты следования снимков для достижения наиболее оптимальных параметров работы, в зависимости от поверхности, над которой перемещается мышь. «Разрешение» оптического сенсора по прежнему может составлять 400 или 800 cpi. Давайте на примере микросхемы ADNS-3060 рассмотрим общие принципы работы именно чипов оптических сенсоров.

Общая схема анализа перемещений мыши не изменилась по сравнению с более ранними моделями - полученные блоком IAS сенсора микроснимки поверхности под мышью обрабатываются затем интегрированным в этой же микросхеме DSP (процессором), который определяет направление и дистанцию перемещения манипулятора. DSP вычисляет относительные величины смещения по координатам × и Y, относительно исходной позиции мыши. Затем внешняя микросхема контролера мыши (для чего он нужен, мы говорили ранее) считывает информацию о перемещении манипулятора с последовательного порта микросхемы оптического сенсора. Затем уже этот внешний контроллер транслирует полученные данные о направлении и скорости перемещения мыши в передаваемые по стандартным интерфейсам PS/2 или USB сигналы, которые уже от него поступают к компьютеру.

Но вникнем чуть глубже в особенности работы сенсора. Блок-схема чипа ADNS-3060 представлена выше. Как видим, принципиально его структура не изменилась, по сравнению с далекими «предками». 3.3 В питание к сенсору поступает через блок Voltage Regulator And Power Control, на этот же блок возложена функции фильтрации напряжения, для чего используется подключение к внешнему конденсатору. Поступающий с внешнего кварцевого резонатора в блок Oscillator сигнал(номинальная частота которого 24 МГц, для предыдущих моделей микросхем использовались более низкочастотные задающие генераторы) служит для синхронизации всех вычислительных процессов, протекающих внутри микросхемы оптического сенсора. Например, частота снимков оптического сенсора привязана к частоте этого внешнего генератора (кстати, на последний наложены не весьма жесткие ограничения по допустимым отклонениям от номинальной частоты - до +/- 1 МГц). В зависимости от значения, занесенного по определенному адресу (регистру) памяти чипа, возможны следующие рабочие частоты осуществления снимков сенсором ADNS-3060.

Значение регистра, шестнадцатеричное Десятичное значение Частота снимков сенсора, кадров/с
OE7E 3710 6469
12C0 4800 5000
1F40 8000 3000
2EE0 12000 2000
3E80 16000 1500
BB80 48000 500

Как нетрудно догадаться, исходя из данных в таблице, определение частоты снимков сенсора осуществляется по простой формуле: Частота кадров = (Задающая частота генератора (24 МГц)/Значение регистра отвечающего за частоту кадров).

Осуществляемые сенсором ADNS-3060 снимки поверхности (кадры) имеют разрешение 30х30 и представляют собой все ту же матрицу пикселей, цвет каждого из которых закодирован 8-ю битами, т.е. одним байтом (соответствует 256 градациям серого для каждого пикселя). Таким образом, каждый поступающий в DSP процессор кадр (фрейм) представляет собой последовательность из 900 байт данных. Но «хитрый» процессор не обрабатывает эти 900 байт кадра сразу по поступлении, он ждет, пока в соответствующем буфере (памяти) накопится 1536 байт сведений о пикселях (то есть добавится информация еще о 2/3 последующего кадра). И только после этого чип приступает к анализу информации о перемещении манипулятора, путем сравнения изменений в последовательных снимках поверхности.

С разрешением 400 или 800 пикселей на дюйм их осуществлять, указывается в бите RES регистров памяти микроконтроллера. Нулевое значение этого бита соответствует 400 cpi, а логическая единица в RES переводит сенсор в режим 800 cpi.

После того как интегрированный DSP процессор обработает данные снимков, он вычисляет относительные значения смещения манипулятора вдоль осей × и Y, занося конкретные данные об этом в память микросхемы ADNS-3060. В свою очередь микросхема внешнего контроллера (мыши) через Serial Port может «черпать» эти сведения из памяти оптического сенсора с частой примерно раз в миллисекунду. Заметьте, только внешний микроконтроллер может инициализировать передачу таких данных, сам оптический сенсор никогда не инициирует такую передачу. Поэтому вопрос оперативности (частоты) слежения за перемещением мыши во многом лежит на «плечах» микросхемы внешнего контроллера. Данные от оптического сенсора передаются пакетами по 56 бит.

Ну а блок Led Cотtrоl, которым оборудован сенсор, ответственен за управление диодом подсветки - путем изменения значения бита 6 (LED_MODE) по адресу 0x0a микропроцессор оптосенсора может переводить светодиод в два режима работы: логический «0» соответствует состоянию «диод всегда включен», логическая «1» переводит диод в режим «включен только при необходимости». Это важно, скажем, при работе беспроводных мышей, так как позволяет экономить заряд их автономных источников питания. Кроме того, сам диод может иметь несколько режимов яркости свечения.

На этом, собственно, все с базовыми принципами работы оптического сенсора. Что еще можно добавить? Рекомендуемая рабочая температура микросхемы ADNS-3060, впрочем как и всех остальных чипов этого рода, - от 0 0С до +40 0С. Хотя сохранение рабочих свойств своих чипов Agilent Technologies гарантирует в диапазоне температур от -40 до +85 °С.

Лазерное будущее?

Недавно сеть наполнили хвалебные статьи о мыши Logitech MX1000 Laser Cordless Mouse, в которой для подсветки поверхности под мышью использовался инфракрасный лазер. Обещалась чуть ли не революция в сфере оптических мышей. Увы, лично попользовавшись этой мышью, я убедился, что революции не произошло. Но речь не об этом.

Я не разбирал мышь Logitech MX1000 (не имел возможности), но уверен, что за «новой революционной лазерной технологией» стоит наш старый знакомый - сенсор ADNS-3060. Ибо, по имеющимся у меня сведениям, характеристики сенсора этой мыши ничем не отличаются от таковых у, скажем, модели Logitech МХ510 . Вся «шумиха» возникла вокруг утверждения на сайте компании Logitech о том, что с помощью лазерной системы оптического слежения выявляется в двадцать раз (!) больше деталей, чем с помощью светодиодной технологии. На этой почве даже некоторые уважаемые сайты опубликовали фотографии неких поверхностей, дескать, как видят их обычные светодиодные и лазерные мыши:)

Конечно, эти фото (и на том спасибо) были не теми разноцветными яркими цветочками, с помощью которых нас пыталась убедить на сайте Logitech в превосходстве лазерной подсветки системы оптического слежения. Нет, конечно же, оптические мыши не стали «видеть» ничего подобного на приведенные цветные фотографии с разной степенью детализации - сенсоры по-прежнему «фотографируют» не более чем квадратную матрицу серых пикселей, отличающихся между собой лишь разной яркостью (обработка информации о расширенной цветовой палитре пикселей непомерным грузом легла бы на DSP).

Давайте прикинем, для получения в 20 раз более детализированной картинки, нужно, извините за тавтологию, в двадцать раз больше деталей, передать которые могут только дополнительные пиксели изображения, и ни что иное. Известно, что Logitech MX 1000 Laser Cordless Mouse делает снимки 30х30 пикселей и имеет предельное разрешение 800 cpi. Следовательно, ни о каком двадцатикратном росте детализации снимков речи быть не может. Где же собака порылась:), и не являются ли подобные утверждения вообще голословными? Давайте попробуем разобраться, что послужило причиной появления подобного рода информации.

Как известно, лазер излучает узконаправленный (с малым расхождением) пучок света. Следовательно, освещенность поверхности под мышью при применении лазера гораздо лучше, чем при использовании светодиода. Лазер, работающий в инфракрасном диапазоне, был выбран, вероятно, чтобы не слепить глаза возможным все-таки отражением света из-под мыши в видимом спектре. То, что оптический сенсор нормально работает в инфракрасном диапазоне не должно удивлять - от красного диапазона спектра, в котором работает большинство светодиодных оптических мышей, до инфракрасного -«рукой подать», и вряд ли для сенсора переход на новый оптический диапазон был труден. Например, в манипуляторе Logitech MediaPlay используется светодиод, однако также дающий инфракрасную подсветку. Нынешние сенсоры без проблем работают даже с голубым светом (существуют манипуляторы и с такой подсветкой), так что спектр области освещения - для сенсоров не проблема. Так вот, благодаря более сильной освещенности поверхности под мышью, мы вправе предположить, что разница между местами, поглощающими излучение (темными) и отражающими лучи (светлыми) будет более значительной, чем при использовании обычного светодиода - т.е. изображение будет более контрастными.

И действительно, если мы посмотрим на реальные снимки поверхности, сделанные обычной светодиодной оптической системой, и системой с использованием лазера, то увидим, что «лазерный» вариант куда более контрастен - отличия между темными и яркими участками снимка более значительны. Безусловно, это может существенно облегчить работу оптическому сенсору и, возможно, будущее именно за мышами с лазерной системой подсветки. Но назвать подобные «лазерные» снимки в двадцать раз более детализированными вряд ли можно. Так что это еще один «новорожденный» миф.

Какими будут оптические сенсоры ближайшего будущего? Сказать трудно. Вероятно, они перейдут таки на лазерную подсветку, а в Сети уже ходят слухи о разрабатываемом сенсоре с «разрешением» 1600 cpi. Нам остается только ждать.

Текстовые строки могут быть объявлены двумя способами: можно использовать тип данных String, который входит в ядро, начиная с версии 0019; либо объявить строку как массив символов char с нулевым символом в конце. На этой странице описан второй способ. Для получения более подробной информации об объекте String, предоставляющем больше возможностей ценой большего расхода памяти, см. страницу String — объект .

Примеры

Ниже представлены примеры правильного объявления строк.

Char Str1; char Str2 = {"a", "r", "d", "u", "i", "n", "o"}; char Str3 = {"a", "r", "d", "u", "i", "n", "o", "\0"}; char Str4 = "arduino"; char Str5 = "arduino"; char Str6 = "arduino";

char Str1 [ 15 ] ;

char Str2 [ 8 ] = { "a" , "r" , "d" , "u" , "i" , "n" , "o" } ;

char Str3 [ 8 ] = { "a" , "r" , "d" , "u" , "i" , "n" , "o" , "\0" } ;

char Str4 = "arduino" ;

char Str5 [ 8 ] = "arduino" ;

char Str6 [ 15 ] = "arduino" ;

Допускаемые операции при объявлении строк

  • Объявить массив символов без его инициализации (Str1)
  • Объявить массив символов с одним избыточным элементом, компилятор сам добавит требуемый нулевой символ (Str2)
  • Добавить нулевой символ явно (Str3)
  • Инициализировать массив с помощью строковой константы, заключенной в кавычки; компилятор создаст массив необходимого размера с нулевым символом в конце (Str4)
  • Инициализировать массив с помощью строковой константы, явно указав его размер (Str5)
  • Инициализировать массив избыточного размера, оставив место для более длинных строк (Str6)

Нулевой завершающий символ

Как правило, все строки завершаются нулевым символом (ASCII код 0), который позволяет функциям (подобным Serial.print()) определять длину строки. Без этого символа они продолжали ли бы последовательно считывать байты памяти, которые фактически уже не являлись бы частью строки.

По сути, это означает, что длина вашей строки должна быть на 1 символ больше, чем текст, который вы хотели бы в ней хранить. Именно поэтому Str2 и Str5 должны быть длиной 8 символов, несмотря на то, что слово «arduino» занимает всего 7 — последняя позиция автоматически заполняется нулевым символом. Размер Str4 автоматически станет равным 8 — один символ требуется для завершающего нуля. В строке Str3 мы самостоятельно указали нулевой символ (обозначается ‘\0’).

Следует иметь в виду, что в целом можно объявить строку и без завершающего нулевого символа (например, если задать длину Str2 равной 7, а не 8). Однако это приведет к неработоспособности большинства строковых функций, поэтому не следует намеренно так делать. Такая ошибка может быть причиной странного поведения или появления сторонних символов при работе со строками.

Одинарные или двойные кавычки?

Строки всегда объявляются в двойных кавычках («Abc»), а символы всегда объявляются в одинарных кавычках (‘A’).

Перенос длинных строк

Длинные строки можно переносить так:

char myString = "This is the first line" " this is the second line" " etcetera";

char myString = "This is the first line"

" this is the second line"

" etcetera" ;

Массивы строк

При работе с большими объемами текста (например, в проектах, работающих с LCD-экраном) часто удобно использовать массивы строк. Поскольку строки сами по себе являются массивами, то фактически, это — пример двумерного массива.

В нижеследующей программе звездочка после указания типа данных char «char*» показывает, что переменная является массивом «указателей». Все имена массивов фактически являются указателями, поэтому звездочка необходима для создания массива массивов. Указатели в C — одна из наиболее сложных вещей для начинающих, но в данном случае глубокого понимания указателей для их эффективного использования вовсе не требуется.

Пример

char* myStrings={"This is string 1", "This is string 2", "This is string 3", "This is string 4", "This is string 5","This is string 6"}; void setup(){ Serial.begin(9600); } void loop(){ for (int i = 0; i < 6; i++){ Serial.println(myStrings[i]); delay(500); } }

char * myStrings = { "This is string 1" , "This is string 2" , "This is string 3" ,

Доброе время суток! Продолжаем освоение платы ардиуно уно. В прошлой статье мы научились выводить информационные сообщения на экран компьютера/ноутбука.

Если вы помните, у нас с вами осталось незавершённое дело. А именно способ задание входных параметров функций Serial. print () и Serial. println () . Мы задавали параметры этих функций непосредственно в строках, где они вызывались, вместо того, чтобы задавать параметры, через переменные.

Для начала снова соберём схему с двумя светодиодами. После чего открываем программу, что мы написали в 5 уроке.

Как вы можете видеть, я дополнил второй необходимыми строками. Надеюсь, вы также выполнили это задание 🙂 Если же нет, тогда дополните вашу программу.

Не стоит копировать строки кода из текста статьи. Например, кавычки в вердовском документе могут не восприниматься за «кавычки» в программной среде Arduino IDE. Еще хочу сказать следующее – если с первой попытки загрузить программу в МК не удалось, стоит повторить попытку (несколько раз).

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

До сегодняшнего момента, мы использовали переменные, что имели тип целого числа. Такими числами удобно вести подсчёт или указывать номер вывода микроконтроллера. Кроме того, данный тип занимает гораздо меньший объём памяти микроконтроллера в сравнении с другими типами. Однако при считывании данных с датчиков (например, датчик температуры) мы будем получать значения, которые состоят из целой и дробной части. Для того, чтобы работать с такими числами нам потребуется тип float (числа с плавающей точкой). Данный тип будет описан отдельно, сейчас же поговорим о строковом типе данных String .

Переменным типа String присваиваются данные заключенные в двойные кавычки.

Объявим переменные типа String .

  • String greenLedText = “”;
  • String redLedText = “”;

В коде программы заменим текстовые сообщения на имена переменных. Как вы можете видеть, при записи переменных в качестве входных параметров функций двойные кавычки не нужны. Но что же будет, если мы запишем имя одной из переменных в двойных кавычках? А вот сейчас мы и проверим…

Загрузим программу и посмотрим на результат. Одна строка отображается корректно, а вторая вместо того, чтобы выводить на экран необходимую информацию выводит имя переменной. Всему виной двойные кавычки.

Правило следующее: хотите вывести строку непосредственно с круглых скобок ставьте двойные кавычки, нужно вывести информацию, что присвоена строковой переменной – кавычки не ставим.

Создадим локальную переменную «приветствие» в void setup . Почему именно локальную? Во-первых, она занимает значительно меньше места в памяти микроконтроллера. Во-вторых, что мы зря что-ли обсуждали вопросы локальных и глобальных переменных, нужно теорию применять на практике. А почему создаём «локалку» именно в void setup , а всё потому, что он выполняется всего один раз.

Объявляем и присваиваем значение переменной.

String first_ message = “ Hello”;

Одного «hello» будет мало, нужно еще что-то. Давайте напишем что-то вроде… 🙂 и разобьём это на два сообщения.

  • String second_message = “I am Migalka”;
  • String third_message = “I want blinky”;

Вызов функций следует выполнять после строки включения (инициализации) последовательного порта.

  • Serial.println (first_message);
  • Serial.println (second_message);


Загрузим программу и посмотрим на результат. Как и планировалось, приветствие выводится один раз. Но как-то не красиво согласны? 🙂 Для того, чтобы второе и третье сообщение были на одной строке есть несколько вариантов:

  • Заменить функцию println (second_message) на Serial.print (second_message) . Для того, чтобы третье сообщение не наплывало на второе после … «Migalka » поставьте пробел.
  • Соединить вместе второе и третье сообщение. sum_ message = second_ message + third_ message;

Выбираем второй вариант. Предварительно объявим новую строковую переменную String sum_ message;

Заменяем имя « second_ message » на « sum_ message ». Если вы заменяли функцию Serial. println (second_ message) на Serial. print ( second_message) , верните все назад, чтобы новое сообщение начиналось с новой строки, а строчку «Serial.println (third_message); » удаляем по причине ненадобности.

Загрузим программу и смотрим на результат.

Я пришел к программированию в целом, и программированию Arduino в частности, полным нулем, около двух месяцев назад. Сейчас же, по ходу своей текущей деятельности я ощутил необходимость в освоении обработки строк на ардуино. Обычный поход в Google за информацией не обрадовал статьей, где все просто и понятно для чайников написано. И поэтому я здесь для того, чтобы рассказать о том, каким образом был реализован парсинг строк из последовательного порта и какие были встречены на пути подводные камни. Интересующихся прошу под кат.

Итак. Вот примерный алгоритм, которому я следовал:

  1. Идем на arduino.ru и высматриваем в колонке типов все, связанное с символами.
  2. Решаем, какую форму представления будем использовать (Я остановился на классе String, т.к. имел неприятный опыт с месивом массивом).
  3. Судорожно пытаемся написать свою функцию с преферансом и профурсетками
  4. Ищем класса.
  5. Ищем нужные операторы.
  6. Пишем!

А алгоритм работы основного тела программы прост:

  1. Циклично проверяем, есть ли в буфере com порта доступный для чтения байт, если есть, читаем.
  2. Если принятый байт - символ переноса строки ("n"), то вызываем самописную функцию парсинга, если же нет, то добавляем принятый байт в созданную переменную типа String.
  3. Парсим, наконец, строку.

    На самом деле, т.к. практическое использование парсинга строк у меня не горит, то данная функция носит всего лишь демонстративный характер, сравнивая полученную строку с уже записанной в памяти константной строкой. Итак, используя оператор equals сравниваем принятую строку с записанной, и, если оператор возвращает true, выходим из функции обработчика, если же нет, сравниваем со следующей. Если строки эквивалентны, то опять же, выходим из функции-обработчика, возвращая результат. Ну а уж если и это условие не сработает, то все равно выйдем из функции и скажем, что что строка не верна.

  4. В зависимости от принятого результата с помощью switch case выбираем нужный.
  5. Обнуляем принятую строку, чтобы потом начать собирать ее заново.

А вот, наконец-таки, код:

#define led 13 String input_string = ""; const String Led_off = "switch led off"; const String Led_on = "switch led on"; bool led_running; void setup() { Serial.begin(9600); } void loop() { while (Serial.available() > 0) { char c = Serial.read(); if (c == "n") { Serial.print("Input_string is: "); Serial.println(input_string); switch (parse(input_string, Led_off, Led_on)) { case 10: led_running=false; Serial.println("Switching off is done"); break; case 11: led_running=true; Serial.println("Switching on is done"); break; case 0: Serial.println("invalid String"); break; } input_string = ""; digitalWrite(led, led_running); } else { input_string += c; } } } byte parse(String input_string, const String Led_off, const String Led_on) { if (input_string.equals(Led_off) == true) { return 10; } else if (input_string.equals(Led_on) == true) { return 11; } else return 0; }

Так, я не понял, что за дела? Почему не загорается светодиод? Ах да, как же это я запамятовал, в void setup нужно добавить:

PinMode(led, OUTPUT);

P.S.: Немаловажно установить монитор com порта в Arduino IDE в режим «Новая строка», т.к. в любом другом посылаемая строка не будет сопровождаться символом ее окончания "n".

P.P.S.: В холиваре по поводу того, что ардуино нинужна - участвовать не собираюсь, изучая основы программирования и алгоритмизации я ничего дурного не сделал.

P.P.P.S.: Если статья будет принята адекватно, напишу следующую о том, что у меня вышло с улучшением функционала функции парсинга. Ну, с богом! .




Top