Учебные пособия и связанные с ними файлы. Пожалуйста, начните с этого руководства в формате pdf
Скачать 5.61 Mb.
|
|
Серийный класс | |
Serial. available (): возвращает байты данных, которые необходимо прочитать через последовательный порт; Serial.read(): возвращает 1 байт данных, которые необходимо прочитать через последовательный порт. |
Проверьте и загрузите код, откройте Serial Monitor, напишите символ в области отправки, нажмите кнопку «Отправить», после чего вы увидите информацию, возвращенную с платы управления.
тип символа | |
Переменная типа char может представлять символ, но не может хранить символы напрямую. Он хранит числа для замены символов. char занимает 1-байтовую область хранения и использует значение 0-127, чтобы соответствовать 128 символам. Соответствующее отношение между числом и символом регулируется таблицей ASCII. Дополнительные сведения о таблице ASCII см. в приложении к этой книге. Пример: Определите символьные переменные aChar = 'a', bChar = 'b', тогда десятичное значение aChar будет 97, bChar будет 48. |
Receive_Data_through_Serial_Port
Когда последовательный порт получает данные, он может инициировать событие прерывания и входит в функцию обработки прерывания. Теперь мы используем прерывание для получения информации из окна Serial Monitor и отправки ее обратно. Чтобы проиллюстрировать, что прерывание не влияет на работу программы, мы будем постоянно посылать меняющееся число в функцию loop().
Функция void serialEvent() здесь является функцией прерывания последовательного порта. Когда последовательный порт получает данные, процессор переходит к этой функции и возвращается туда, где произошло прерывание, чтобы продолжить после выполнения. Таким образом, работа функции loop() не затрагивается.
Проверьте и загрузите код, откройте Serial Monitor, после чего вы увидите число, постоянно отправляемое с платы управления. Заполните символы в области отправки и нажмите кнопку «Отправить», после чего вы увидите строку, возвращенную с панели управления.
Мы будем использовать последовательный порт на плате управления для управления одним светодиодом.
Список компонентов
Плата управления x1 | USB-кабель x1 |
Совет по проектам Freenove |
Знание схемы
Сначала давайте узнаем, как использовать схему, чтобы заставить светодиод излучать разную яркость света,
ШИМ
ШИМ, широтно-импульсная модуляция, является очень эффективным методом использования цифровых сигналов для управления аналоговыми цепями. Цифровые процессоры не могут напрямую выводить аналоговые сигналы. Технология PWM позволяет очень удобно выполнять это преобразование (преобразование цифровых сигналов в аналоговые).
Технология PWM использует цифровые контакты для отправки определенных частот прямоугольных сигналов, то есть вывода высоких уровней и низких уровней, которые попеременно длятся некоторое время. Общее время для каждого набора высоких и низких уровней обычно фиксировано и называется периодом (примечание: величина, обратная периоду, равна частоте). Время выходных сигналов высокого уровня обычно называют «шириной импульса», а рабочий цикл представляет собой процент отношения длительности импульса или ширины импульса (PW) к общему периоду (T) сигнала.
Чем дольше длится вывод высоких уровней, тем дольше будет рабочий цикл и тем выше будет соответствующее напряжение в аналоговом сигнале. На следующих рисунках показано, как напряжения аналоговых сигналов изменяются в диапазоне 0–5 В (высокий уровень — 5 В), что соответствует ширине импульса 0–100 %:
Чем длиннее рабочий цикл ШИМ, тем выше будет выходная мощность. Теперь, когда мы понимаем эту взаимосвязь, мы можем использовать ШИМ для управления яркостью светодиода или скоростью двигателя постоянного тока и так далее.
Схема
Здесь мы будем использовать контакт 6 на плате управления для управления одним светодиодом.
скетч
Application_of_Serial
Когда последовательный порт получает данные, он преобразует данные в рабочий цикл ШИМ выходного порта, чтобы светодиод излучал свет с соответствующей яркостью.
Серийный класс | | ||
Serial.parseInt(): получить число типа int в качестве возвращаемого значения. | |||
ограничение (х, а, б) | | ||
Ограничьте x между a и b, если x верните a; если x>b, вернуть b. | |||
AnalogWrite(вывод, значение) | | ||
Среда разработки Arduino IDE предоставляет функцию AnalogWrite(pin, value), которая позволяет портам напрямую выводить волны ШИМ. Только цифровой контакт, отмеченный символом «» на плате управления, может использовать эту функцию для вывода сигналов ШИМ. В функции с именем AnalogWrite(pin, value) параметр «pin» указывает порт, используемый для вывода волны PWM. Диапазон значений составляет 0-255, что соответствует рабочему циклу от 0% до 100%. Чтобы использовать эту функцию, нам нужно установить порт в режим вывода. |
Проверьте и загрузите код, откройте Serial Monitor, введите число в диапазоне от 0 до 255 в область отправки и нажмите кнопку
«Отправить». Затем вы увидите информацию, возвращенную с платы управления, в то время как светодиод может излучать свет с разной яркостью в зависимости от отправленного вами числа.
Глава 5 АЦП
Ранее мы изучили цифровые порты платы управления и попробовали выходные и входные сигналы. Теперь давайте узнаем, как использовать аналоговые порты.
АЦП используется для преобразования аналоговых сигналов в цифровые сигналы. Чип управления на плате управления интегрировал эту функцию. Теперь попробуем использовать его для преобразования аналоговых сигналов в цифровые.
Список компонентов
Плата управления x1 | USB-кабель x1 |
Совет по проектам Freenove |
Знание схемы
АЦП
АЦП — это электронная интегральная схема, используемая для преобразования аналоговых сигналов, таких как напряжения, в цифровую или двоичную форму, состоящую из единиц и нулей. Диапазон нашего модуля АЦП составляет 10 бит, что означает разрешение 2̂ 10=1024, так что его диапазон (при 5В) будет разделен поровну на 1024 части.
Любое аналоговое значение может быть преобразовано в одно цифровое значение с помощью разрешения преобразователя. Таким образом, чем больше разрядов имеет АЦП, тем более плотным будет разделение аналогового сигнала и тем выше точность результирующего преобразования.
Подраздел 1: аналоговому в диапазоне 0В-5/1024В соответствует цифровой 0; Подраздел 2: аналог в диапазоне 5/1024В-2*5/1024В соответствует цифре 1;
Следующий аналоговый сигнал будет разделен соответствующим образом.
Знание компонентов
Потенциометр
Потенциометр представляет собой резистивный элемент с тремя клеммными частями. В отличие от резисторов, которые мы использовали до сих пор в нашем проекте и которые имеют фиксированное значение сопротивления, значение сопротивления потенциометра можно регулировать. Потенциометр часто состоит из резистивного вещества (проволоки или углеродного элемента) и подвижной контактной щетки. При движении щетки вдоль резисторного элемента будет происходить изменение сопротивления выходной стороны потенциометра (3) (или изменение напряжения цепи, входящей в состав). Иллюстрация ниже представляет линейный ползунковый потенциометр и его электронный символ справа.
Между выводом 1 и выводом 2 потенциометра находится резистивный элемент (резистивная проволока или
уголь), а вывод 3 соединен со щеткой, контактирующей с резистивным элементом. На нашем рисунке, когда щетка перемещается от контакта 1 к контакту 2, значение сопротивления между контактом 1 и 3 будет увеличиваться линейно (пока не достигнет максимального значения резистивного элемента), и в то же время контакт 3 будет уменьшаться линейно и обратно до нуля. В средней точке ползунка измеренные значения сопротивления между контактами 1 и 3 и между контактами 2 и 3 будут одинаковыми.
В цепи обе стороны резистивного элемента часто подключаются к положительному и отрицательному электродам питания. Когда вы сдвигаете щетку «контакт 3», вы можете получить переменное напряжение в пределах диапазона питания.
Поворотный потенциометр
Поворотный потенциометр и линейный потенциометр имеют одинаковую функцию; единственная разница заключается в том, что физическое действие представляет собой вращательное, а не скользящее движение.
Схема
Используйте контакт A1 на плате управления для определения напряжения поворотного потенциометра.
Аппаратное соединение
| | |
| |
Принципиальная схема
Вставьте плату управления в плату проектов Freenove, а затем поверните соответствующий переключатель вправо (ВКЛ.).
скетч
АЦП
Теперь напишите код для определения напряжения поворотного потенциометра и отправьте данные в окно последовательного монитора Arduino IDE через последовательный порт.
Из кода мы получаем значение АЦП контакта A1, затем преобразуем его в напряжение и отправляем в последовательный порт. Проверьте и загрузите код, откройте Serial Monitor, после чего вы увидите исходное значение АЦП и преобразованное напряжение, отправленное с платы управления.
Поверните вал поворотного потенциометра, и вы увидите изменение напряжения.
В предыдущем разделе мы закончили чтение значения АЦП и преобразование его в напряжение. Теперь мы попробуем использовать потенциометр для управления яркостью светодиода.
Список компонентов
Плата управления x1 | USB-кабель x1 |
Совет по проектам Freenove |
Схема
Используйте контакт A1 на плате управления для определения напряжения поворотного потенциометра и используйте контакт 6 для управления одним светодиодом.
Принципиальная схема | Аппаратное соединение |
Вставьте плату управления в плату проектов Freenove, а затем поверните соответствующие переключатели вправо (ВКЛ.). |
скетч
Control_LED_by_потенциометр
В коде мы получаем значение АЦП контакта A1 и сопоставляем его с рабочим циклом ШИМ порта светодиода. С разной яркостью светодиодов мы можем легко увидеть изменения напряжения.
Проверьте и загрузите код, поверните вал поворотного потенциометра, вы увидите изменение яркости светодиода.
| |
| |
map(value, fromLow, fromHigh, toLow, toHigh) | |
Эта функция используется для переназначения значения, которое вернет новое значение, процентное содержание которого в диапазоне от низкого до высокого равно проценту «значения» в диапазоне от низкого до высокого. Например, 1 — это максимальное значение в диапазоне 0–1, а максимальное значение в диапазоне 0–2 — 2, то есть результирующее значение map(1, 0, 1, 0, 2) равно 2. |
В предыдущем разделе мы закончили чтение значения АЦП и преобразовали его в яркость светодиода.
Компонентов много, особенно датчик с аналоговым выходом. Теперь попробуем использовать фоторезистор для измерения яркости света.
Список компонентов
Плата управления x1 | USB-кабель x1 |
Совет по проектам Freenove |
Знание компонентов
Фоторезистор
Фоторезистор — это просто светочувствительный резистор. Это активный компонент, который снижает сопротивление по отношению к восприятию свечения (света) на светочувствительной поверхности компонента. Значение сопротивления фоторезистора будет изменяться пропорционально обнаруженному внешнему освещению. С этой характеристикой мы можем использовать фоторезистор для определения интенсивности света. Фоторезистор и его электронный символ следующие.
Схема ниже часто используется для обнаружения изменения значения сопротивления фоторезистора:
В приведенной выше схеме, когда значение сопротивления фоторезистора изменяется из-за изменения интенсивности света, напряжение между фоторезистором и резистором R1 также будет изменяться, поэтому интенсивность света можно получить путем измерения напряжения.
Схема
Используйте контакт A0 на плате управления для определения напряжения фоторезистора и используйте контакт 6 для управления одним светодиодом.
Аппаратное соединение
Принципиальная схема | |
Вставьте плату управления в плату проектов Freenove, а затем поверните соответствующие переключатели вправо (ВКЛ.). |
скетч
Control_LED_через_фоторезистор
Теперь напишите код для определения напряжения поворотного потенциометра и управления светодиодом, чтобы он излучал свет с разной яркостью в соответствии с этим.
В коде мы получаем значение АЦП контакта A0, сопоставляем его с рабочим циклом ШИМ порта светодиода. По яркости
светодиода мы можем легко увидеть изменения напряжения.
Проверьте и загрузите код, прикройте фоторезистор рукой, после чего вы увидите изменение яркости светодиода.