Теперь давайте вот это наше устройство, с которым мы экспериментировали, представим схематично. Вновь сделаем схему, как на прошлой неделе, где слева изображался физический мир, который мы сами непосредственно ощущаем, затем невидимый нам мир электрического сигнала, и в правой части – мозг нашего устройства, его содержимое, то, что происходит в микроконтроллере. В данном случае в физический мир у нас смотрит датчик освещенности. Благодаря свойству фоторезистора менять сопротивление в зависимости от количества падающего на него света, благодаря делителю напряжения, который позволяет изменить напряжение в зависимости от номинала связанных с ним резисторов, мы получаем различный уровень электрического сигнала, который поступает в аналоговый вход контроллера. Затем, после аналого-цифрового преобразования мы имеем дело с обычным числом и можем творить с ним все, что заблагорассудится. В нашем примере мы просто отправляли его в последовательный порт для считывания на компьютере. А теперь я хочу подробнее останоситься на слове «сигнал». Мы можем знать о событиях, в которых не принимали участие, свидетелями которых не были, отделенных от нас большими пространствами и промежутками времени. Мы можем знать об этих событий полно и подробно, подчас подробнее, чем участники или свидетели этих событий. Если наше знание о каком-нибудь событии приходит к нам уже после того, как само событие закончилось, скажем, исход футбольного матча становится нам известным на другой день после матча, то это значит, что какие-то следы события продолжают существовать и тогда, когда само событие закончилось. Событие может сохраняться в памяти очевидцев, в описаниях, в фотоснимках, в зарисовках, в кинофильмах, в звукозаписи самого события или репортажа о нем или в какой-либо иной форме. В большинстве случаев описание события соответствует самому событию более или менее полно. Постараемся понять точнее, что значит «соответствует», а главное – что чему соответствует? Прежде всего, фотография момента игры у ворот есть прямоугольный кусок плотной белой бумаги размером 9 × 12 см, покрытый слоем желатина, в который вкраплены мельчайшие зерна серебра. Все это никакого отношения к футболу не имеет. Не имеет к нему также отношение и то, что частицы серебра поглощают падающий на них свет, а белая бумага этот свет отражает. О футболе на фотоснимке говорит только распределение зерен серебра на поверхности бумаги. Оно определяет в свою очередь распределение потоков света, идущего от фотоснимка к глазу наблюдателя. И это распределение оказывается близким к тому, которое существовало в момент, когда был сделан снимок в том месте, где стоял фотокорреспондент. Отметим следующее: фотоснимок как физическое явление не имеет ничего общего с изображаемым событием. Он имеет самостоятельную физическую природу и самостоятельное существование в пространстве и времени. Упомянутое выше соответствие фотоснимка изображенному на нем событию заключается в том, что снимок при осуществлении некоторых условий производит на наблюдателя приблизительно такое же воздействие, как и само событие. В сказанном заключается нечто общее для характеристики всех видов сигнала. Сигнал порождается некоторым событием, фактом, действием. Сигнал имеет самостоятельную физическую природу и самостоятельное существование в пределах некоторой организованной системы. Он всегда воплощен в некотором материальном объекте или процессе. В этом виде сигнал может быть зафиксирован и существовать долгое время. Сигнал может быть передан на большие расстояния. Сигнал в конце своего существования может превратиться в действия или в события. Разумеется, такое самостоятельное существование сигналы ведут отнюдь не самостоятельно, а только в пределах некоторой организованной системы по законам, свойственным этом системе. Самостоятельность заключается лишь в независимости от породившего сигнал события после того, как сигнал возник. Если мы имеем событие и его подробное, правдивое описание, то по описанию мы можем восстановить событие. Это происходит, например, при изготовлении машины по чертежу, постройке дома по проекту, выполнении военной операции по плану и так далее». Это была цитата из книги советского автора Игоря Полетаева, написанной еще на заре становления науки кибернетики в 1948 году. Однако все эти положения справедливы по отношению к понятию сигнал и сейчас. Давайте найдем параллели между процитированным и нашей несложной системой. Давайте представим себе такую ситуацию: на дворе теплый, солнечный день. Вы, например, отдыхаете с друзьями за городом. В этой ситуации можно выделить много различных вещей: ваше местоположение, состав вашей компании, набор ваших занятий, впечатления, который вы получаете, или, например, просто параметры среды, такие как температура воздуха, его влажность, количество света, которое попадает на вашу лужайку, и так далее. Поскольку мы имеем дело с нашими киберфизическими устройствами, которые взаимодействуют с физическим миром, здесь, наверное, ближе всего нам именно эти параметры среды. То есть из всей этой сложной ситуации, которую можно описать с миллиона различных точек зрения, мы – точнее, наше устройство – можем выделить ту часть, которая измеряется при помощи его органов чувств – датчиков. Например, мы уже проводили эксперимент с датчиком освещенности, с датчиком температуры. Из этой солнечной ситуации мы можем выделить целых два параметра. Затем, когда датчики получили из мира свою информацию, оно начинает существовать в своей новой среде в рамках электрической схемы нашего устройства. Мы получаем электрический сигнал, который, как было сказано в цитате, имеет свою природу и представляет исходные данные, полученные из мира, своим способом – ну например, в виде уровня напряжения, который передается в микроконтроллер. Затем в микроконтроллере продолжает существовать, по сути, тоже электрический сигнал, но здесь уже мы имеем дело с памятью контроллера и с какими-то инструкциями, которые мы ему можем передавать. Поэтому я в нашей схеме выделяю это в третью подсистему, в третий, условно говоря, мир. Потому что работа с электрическим сигналом и с данными в памяти, ну некоторым образом отличается. Это разные способы организации информации. Я уже заострял ваше внимание на том, что контроллер совершенно не в курсе, какие устройства к нему подключены. Он живет в своем изолированном мире и имеет дело просто с сигналами, которые приходят на его входы. И точно так же выдает сигналы на свои выходы, не будучи в курсе того, куда они попадут. Вы воочию убедились в этом, когда одна и та же программа одинаково работала и с датчиком освещенности, и с датчиком температуры, и с потенциометром. Мы ничего не меняли и просто читали в мониторе данные, как будто бы в самом устройстве ничего не менялось. К чему я все это говорю? Мы можем представить наше устройство так, как мы это сделали на схеме в виде некой системы, состоящей из элементов большей или меньшей сложности. Я хочу, чтобы вы перестали думать, что в этом всем есть какая-то магия, и смогли раскладывать это на компоненты. Вы можете про каждый компонент знать либо все досконально, либо относиться к нему как к черному ящику, как мы только что поступили объектом Serial: мы знаем, как он работает, а нюансы нам неважны. Главное – понимать взаимосвязи между элементами и способы их взаимодействия. Поэтому время от времени мы будем возвращаться к нашей схеме, чтобы раскладывать наше устройство на вот такие вот составные компоненты. Итак, вы уже научились отправлять цифровой сигнал во внешний мир, принимать из него аналоговый сигнал и наверняка догадываетесь, что мы можем сделать еще два каких-то действия, одно из которых – а именно чтение цифрового сигнала – мы сейчас и изучим.