Принцип работы светодиодных матричных дисплеев P10
Светодиодные матричные дисплеи P10 наиболее удобны для создания наружных и внутренних досок объявлений. Подобный дисплей содержит 512 светодиодов высокой яркости, смонтированных на пластиковом основании. Любое количество этих дисплеев можно объединить как по горизонтали, так и по вертикали.
Обозначение 32*16 у этих дисплеев обозначает, что они содержат 32 светодиода в каждой строке и 16 светодиодов в каждом столбце. Итого получаем 512 светодиодов.
Технические характеристики светодиодных матричных дисплеев P10:
- яркость: 3500-4500nits;
- максимальная потребляемая мощность: 20 Вт;
- напряжение питания: 5 В постоянного тока;
- водонепроницаемость: IP65;
- конфигурация 1 Вт на пиксел;
- широкие углы обзора;
- высокая контрастность.
Назначение контактов светодиодных дисплеев P10
— Enable: этот контакт используется яркостью дисплея при помощи подачи на него импульса ШИМ (широтно-импульсной модуляции);
— A, B: контакты мультиплексирования, позволяют обратиться к любым контактам при помощи технологии мультиплексирования;
— Shift clock (CLK), Store clock (SCLK) и Data: контакты управления обычным регистром сдвига. В этих дисплеях используется регистр сдвига 74HC595.
Распиновка модуля P10 показана на следующем рисунке.
Преимущество сетевых модулей Wiznet над ENC
Модули на чипах от Wiznet немного дороже модулей на чипах ENC, но это отнюдь не безосновательно. Микросхемы Wiznet, в отличие от ENC, обрабатывают большинство протоколов и операций аппаратно, благодаря этому основная работа выполняется микросхемой модуля, а не нашим микроконтроллером.
Кроме того, чипы Wiznet позволяют использовать их оперативную память, что является еще одним бонусом. Последний, но не менее важный аргумент в пользу использования чипов Wiznet — это официальная поддержка Arduino. Благодаря гораздо более развитой библиотеке мы можем быстро и легко научиться работать с Wiznet модулями.
Комнатный термометр
Дисплей удобен для отображения показаний модулей и сенсоров. Сделаем задатки «Умного Дома», а именно «комнатный термометр».
Что понадобится
-
Управляющая платформа Arduino Uno или Iskra JS
-
Текстовый экран 20×4
-
Troyka Shield
-
Аналоговый термометр (Troyka-модуль)
-
Соединительные провода «папа-папа»
Как собрать
- Возьмите Troyka Shield и установите сверху на управляющую плату — Arduino или Iskra JS.
- Подключите текстовый экран к управляющей платформе, используя
- Подключите аналоговый термометр к управляющей плате через 3-проводной шлейф к аналоговому пину . В итоге должна получится схема.
- Прошейте управляющую платформу кодом, приведённым ниже.
Скетч для Arduino
- thermometer-room.ino
-
// подключаем библиотеку LiquidCrystal_I2C #include <Wire.h> #include <LiquidCrystal_I2C.h> // создаем объект-экран, передаём используемый адрес // и разрешение экрана: LiquidCrystal_I2C lcd(0x38, 20, 4); // подключим библиотеку для работы с термометром #include <TroykaThermometer.h> // создаём объект для работы с аналоговым термометром // и передаём ему номер пина выходного сигнала TroykaThermometer thermometer(A0); void setup() { // инициализируем экран lcd.init(); // включаем подсветку lcd.backlight(); } void loop() { // очищаем дисплей lcd.clear(); // считываем данные с аналогового термометра thermometer.readData(); // считываем показания с датчика температуры float temperature = thermometer.getTemperatureC(); // устанавливаем курсор // выводим результат на дисплей lcd.setCursor(4, 1); lcd.print("Temperature"); lcd.setCursor(8, 2); lcd.print(temperature); lcd.print("\x99""C"); delay(500); }
Скрипт для Iskra JS
- thermometer-room.js
-
// HD44780 — контроллер монохромных жидкокристаллических знакосинтезирующих дисплеев // настраиваем интерфейс I2C PrimaryI2C.setup({sda SDA, scl SCL}); // подключаем библиотеку var lcd = require("HD44780").connectI2C(PrimaryI2C, 0x38); // включаем подсветку PrimaryI2C.writeTo(0x38, 0x08); // выключить подсветку // PrimaryI2C.writeTo(0x38, 0x00); // создаём переменную для работы с датчиком температуры var thermometer = require('@amperka/thermometer') .connect(A0); // устанавливаем курсор в колонку 4, строку 1 // на самом деле это вторая строка, т.к. нумерация начинается с нуля lcd.setCursor(4, 1); // выводим на дисплей строку «Temperature» lcd.print("Temperature"); // каждую секунду считываем данные с датчика температуры и выводим на дисплей setInterval(function() { var celsius = thermometer.read('C'); lcd.setCursor(8, 2); lcd.print(celsius.toFixed() + "\x99"+"C"); }, 1000);
Защита от помех DC
Раздельное питание
Один из лучших способов защититься от помех по питанию – питать силовую и логическую части от отдельных источников питания: хороший малошумящий источник питания на микроконтроллер и модули/сенсоры, и отдельный на силовую часть. В автономных устройствах иногда ставят отдельный аккумулятор на питание логики, и отдельный мощный – на силовую часть, потому что стабильность и надёжность работы очень важна.
Искрогасящие цепи DC
При размыкании контактов в цепи питания индуктивной нагрузки происходит так называемый индуктивный выброс, который резко подбрасывает напряжение в цепи вплоть до того, что между контактами реле или выключателя может проскочить электрическая дуга (искра). В дуге нет ничего хорошего – она выжигает частички металла контактов, из за чего они изнашиваются и со временем приходят в негодность. Также такой скачок в цепи провоцирует электромагнитный выброс, который может навести в электронном устройстве сильные помехи и привести к сбоям или даже поломке! Самое опасное, что индуктивной нагрузкой может являться сам провод: вы наверняка видели, как искрит обычный выключатель света в комнате. Лампочка – не индуктивная нагрузка, но идущий к ней провод имеет индуктивность. Для защиты от выбросов ЭДС самоиндукции в цепи постоянного тока используют обыкновенный диод, установленный встречно-параллельно нагрузке и максимально близко к ней. Диод просто закоротит на себя выброс, и все дела:
Где VD – защитный диод, U1 – выключатель (транзистор, реле), а R и L схематично олицетворяют индуктивную нагрузку. Диод нужно ОБЯЗАТЕЛЬНО ставить при управлении индуктивной нагрузкой (электромотор, соленоид, клапан, электромагнит, катушка реле) при помощи транзистора, то есть вот так:
При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx) или диоды Шоттки (например серии 1N58xx), максимальный ток диода должен быть больше или равен максимальному току нагрузки.
Фильтры
Если силовая часть питается от одного источника с микроконтроллером, то помехи по питанию неизбежны. Простейший способ защитить МК от таких помех – конденсаторы по питанию как можно ближе к МК: электролит 6.3V 470 uF (мкФ) и керамический на 0.1-1 мкФ, они сгладят короткие просадки напряжения. Кстати, электролит с низким ESR справится с такой задачей максимально качественно.
Ещё лучше с фильтрацией помех справится LC фильтр, состоящий из индуктивности и конденсатора. Индуктивность нужно брать с номиналом в районе 100-300 мкГн и с током насыщения больше, чем ток нагрузки после фильтра. Конденсатор – электролит с ёмкостью 100-1000 uF в зависимости опять же от тока потребления нагрузки после фильтра. Подключается вот так, чем ближе к нагрузке – тем лучше:
Подробнее о расчёте фильтров можно почитать здесь.
Шилды Ethernet Shield для Arduino Uno или Nano
Наиболее удобным способом работы с W5100 является использование готовых шилдов Ethernet Shield для Arduino Uno или Nano. На таких модулях уже выполнены все необходимые обвязки, шилд просто вставляется в соответствующие разъемы платы и вам остается только загрузить скетч. Естественно, что при желании к плате могут быть подключены и другие устройства.
Arduino Ethernet Shield
Подключение платы расширения происходит через соединение RJ-45. Плата обладает встроенным слотом SD/MicroSD , который используется для хранения файлов, используемых для подключения и передачи по локальной сети. Такой слот совместим со всеми платами Arduino/Genuino, т.е. работать с данными на карте можно с помощью стандартной библиотеки SD Library. На плате расширения также можно найти кнопку перезагрузки . питания. Ранние версии платы расширения не дружили с ардуино мега, там требовался ручной сброс после поступления питания.
Если плата оснащена POE модулем (питание подается по витой паре), то шилд будет соответствовать следующим спецификациям:
- Совместим со стандартом IEEE3af.
- Имеет низкие пульсации на выходе.
- Защищает от явлений перегрузки и короткого замыкания.
- Эффективно преобразует напряжение.
- Имеет изоляцию 1500 вольт на точке между «вход-выход»
По умолчанию плата не комплектуется данным модулем, нужно находить соответствующую модель.
Назначение светодиодов Ethernet Shield:
- PWR показывает наличие питания на плате.
- LINK светится при наличии сети и мигает при передаче/приеме данных.
- FULLD обозначает сетевое полнодуплексное соединение.
- 100M обозначает сетевое соединение со скоростью 10мбит/сек.
- RX мигает при приеме экраном данных.
- TX мигает при отправке данных экраном.
- COLL мигает при обнаружении сетевых конфликтов.
Кроме этих имеются еще пара светодиодов на гнезде rj 45, один из которых при подключенном шнуре светится, а другой мерцает при поступлении данных.
Ehternet для Arduino Nano
Отдельного упоминания заслуживает модуль Arduino Nano Ethernet. Он выполнен в формфакторе, облегчающим подключение к плате Nano v 3.0, но обладает практически такими же возможностями, что и “обычный” вариант для Uno. В основе шилда лежит микросхема ENC28J60.
Шилд Ethernet Arduino Nano Shield
Модуль точно так же имеет разъем RJ-45, слот для SD и в некоторых модификациях тоже оснащен PoE контроллером.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Также мы будем использовать библиотеку “Arial Black font” для отображения текста на нашем дисплее.
Arduino
#include <SPI.h>
#include <DMD.h>
#include <TimerOne.h>
#include «SystemFont5x7.h»
#include «Arial_black_16.h»
1 |
#include <SPI.h> #include <DMD.h> #include <TimerOne.h> #include «SystemFont5x7.h» #include «Arial_black_16.h» |
Далее следует указать количество строк и столбцов нашей светодиодной панели – поскольку для ее создания мы использовали только один модуль P10, то число строк и столбцов должно быть равно 1. Затем укажем шрифт Arial_Black_16, который будет использоваться для скроллинга текста на дисплее.
Arduino
#define ROW 1
#define COLUMN 1
#define FONT Arial_Black_16
DMD led_module(ROW, COLUMN);
1 |
#define ROW 1 DMDled_module(ROW,COLUMN); |
Функция scan_module() будет проверять все поступающие по интерфейсу SPI данные. Если данные будут поступать, то будет срабатывать прерывание, в обработчике которого будут выполняться необходимые действия.
Arduino
void scan_module()
{
led_module.scanDisplayBySPI();
}
1 |
voidscan_module() { led_module.scanDisplayBySPI(); } |
Внутри функции void setup() мы будем инициализировать таймер и прикреплять прерывание к функции scan_module. Функция clearScreen(true) будет использоваться для очистки экрана дисплея.
Arduino
void setup()
{
Timer1.initialize(2000);
Timer1.attachInterrupt(scan_module);
led_module.clearScreen( true );
}
1 |
voidsetup() { Timer1.initialize(2000); Timer1.attachInterrupt(scan_module); led_module.clearScreen(true); } |
Далее, для отображения строки на экране дисплея, необходимо с помощью функции selectFont() задать используемый шрифт. После задания шрифта мы будем высвечивать на экране дисплея приветственное сообщение “Welcome to Circuit Digest” с помощью функции drawMarquee().
Arduino
led_module.selectFont(FONT);
led_module.drawMarquee(«Welcome to Circuit Digest»,25, (32 * ROW), 0);
1 |
led_module.selectFont(FONT); led_module.drawMarquee(«Welcome to Circuit Digest»,25,(32*ROW),); |
И, наконец, чтобы производить скроллинг текста на нашем светодиодном дисплее, мы будем переключать наше сообщение справа налево с заданным временным интервалом.
Arduino
long start = millis();
long timming = start;
boolean flag = false;
while (!flag)
{
if ((timming + 20) < millis())
{
flag = led_module.stepMarquee(-1, 0);
timming = millis();
}
}
1 |
longstart=millis(); longtimming=start; booleanflag=false; while(!flag) { if((timming+20)<millis()) { flag=led_module.stepMarquee(-1,); timming=millis(); } } |
Работа схемы
Передающая часть
Схема подключения платы Arduino Uno к модулю LoRa представлена на следующем рисунке. Это будет передающая часть нашего проекта.
Модуль LoRa имеет 16 контактов – по 8 контактов на каждой стороне. 6 из них являются общими контактами ввода-вывода (GPIO pins) – они обозначены начиная с DIO0 и по DIO5. 4 контакта являются контактами “земли” (Ground pins). Модуль работает от питающего напряжения 3.3V, поэтому он подключен к контакту 3.3v платы Arduino Uno. В схеме нам необходимо соединить контакты SPI модуля LoRa с контактами SPI платы Arduino Uno. Более подробно об использовании интерфейса SPI в плате Arduino можно прочитать в данной статье.
Все необходимые соединения между платой Arduino Uno и модулем LoRa представлены в следующей таблице.
Модуль LoRa SX1278 | Плата Arduino Uno |
3.3V | 3.3V |
Gnd | Gnd |
En/Nss | D10 |
G0/DIO0 | D2 |
SCK | D13 |
MISO | D12 |
MOSI | D11 |
RST | D9 |
Внешний вид получившейся у нас конструкции для передающей части проекта показан на следующем рисунке. Для питания схемы мы использовали внешний аккумулятор.
Приемная часть
Схема подключения платы Arduino Nano к модулю LoRa представлена на следующем рисунке. Это будет приемная часть нашего проекта.
Схема практически такая же как и для передающей части, за исключением одного момента – контакт 3.3V модуля LoRa запитывается не от платы Arduino Nano, а от внешнего источника (регулятора напряжения). Это связано с тем, что встроенный в плату Arduino Nano регулятор напряжения не может обеспечить достаточный ток, необходимый для нормального функционирования модуля LoRa.
Все необходимые соединения между платой Arduino Nano и модулем LoRa в нашем проекте представлены в следующей таблице.
Модуль LoRa SX1278 | Плата Arduino Nano |
3.3V | — |
Gnd | Gnd |
En/Nss | D10 |
G0/DIO0 | D2 |
SCK | D13 |
MISO | D12 |
MOSI | D11 |
RST | D9 |
Для питания модуля LoRa в этом случае мы использовали источник питания собственного изготовления и внешний вид получившейся у нас в данном случае конструкции показан на следующем рисунке. Но если вы испытываете проблемы с внешним источником питания для модуля LoRa, то в приемной части вы можете, как и в передающей части нашего проекта, применить плату Arduino Uno.
W5500 модуль Ethernet TCP/IP WIZ820io RC5
Артикул: 24513384
Обратите внимание, что товара сейчас нет в наличии, но Вы можете оформить предзаказ. Также обращаем Ваше внимание на то, что указана цена на момент наличия товара на складе
Для уточнения актуальной цены обратитесь, пожалуйста, к менеджерам.
- Описание
- Вопрос-ответ (2)
- Гарантии и возврат
- Наличие
WiZ820io RC5 это полноценная сетевая карта, с SPI интерфейсом, на чипе W5500. Полностью реализует работу со стеком протоколов TCP/IP а так же физический и канальный уровень, для работы с интернетом через Ethernet подключение (разьем установлен на модуле). Может быть использована с любым микроконтролером Arduino или STM.
Питание модуля: 3.3V или 5V(ток потребления около 200мА)
Интерфейс: SPI(3.3 TTL уровень)
Как подключить модуль Ethernet к Arduino
Подключение модулей w5100 к ардуино осуществляется через SPI. При наличии некоторого опыта работы c платформой никаких трудностей это вызвать не должно. В самом простом случае нужно просто “надеть” плату шилда, вставив в соответствующие разъемы платы Uno или Nano. В случае использования отдельного модуля подключить w5100 к ардуино можно через стандартные SPI-выводы.
Нужно помнить, что в Arduino Uno для SPI выделены пины 11, 12, 13. В Arduino Mega – 50, 51, 52. На шилде для Uno SS сигнал связан с 10 пином. На плате Mega за SS отвечает пин 53, но он не используется. Не смотря на этой, вам нужно обязательно установить его в режим OUTPUT с помощью функции pinMode.
Распиновка шилда с описанием элементов платы для Arduino Uno представлена на следующем рисунке.
Схема шилда Arduino Ethernet Shield
После подключения внешнего модуля к арудино нужно будет подключить его к уже существующей сетевой инфраструктуре через витую пару с RJ45 разъемом. Причем подключать можно и к WiFi роутеру, что позволяет вашему проекту выходить на связь в беспроводном режиме (провод от ардуино до роутера все равно понадобится).
Выполнив физическое подключение, останется сделать только последний, но самый сложный и важный шаг. Нужно написать и загрузить в плату соответствующий скетч, который превратит плату в сервер, отвечающий на запросы удаленных устройств или в клиента, собирающего данные с серверов или отправляющего на них данные.
Описание методов библиотеки DHT12.zip
begin(uint8_t, uint8_t)
Инициализация DHT12 на ESP8266
void begin(uint8_t sda, uint8_t scl);
1 | voidbegin(uint8_tsda,uint8_tscl); |
begin()
Инициализация DHT12
void begin();
1 | voidbegin(); |
read()
Читает, преобразовывает и сохраняет данные с DHT12. Возвращает статус , если всё прошло нормально или , , в случае ошибки.
int8_t read();
1 | int8_tread(); |
getHumidity()
Возвращает относительную влажность. Данные обновляются при вызове метода .
float getHumidity();
1 | floatgetHumidity(); |
getTemperature()
Возвращает температуру. Данные обновляются при вызове метода .
float getTemperature();
1 | floatgetTemperature(); |
Передача структур nrf24l01
Использование структур удобно тем, что в них можно записать много переменных и отправить их другому устройству за один раз. Код нужно записывать так, чтобы ардуино передавала команду по цепочке остальным модулям. Каждый из модулей знает только свой адрес и адрес следующего за ним модуля.
Во время работы со структурами нужно внимательно рассчитать ее размер и указать PAYLOAD. Общий размер структуры будет равен сумме всех размеров составляющих ее переменных.
Основные элементы кода:
#define ADDR “mod0” //указывается адрес модуля
#define NEXT “mod1” //указывается адрес следующего модуля
boolean iamfirst=true;//начинает ли этот модуль цепочку?
#define PAYLOAD 5 //размер полезной нагрузки
Все модули в итоге будут получать одинаковый скетч, в котором различаться будут только переменные ADDR, NEXT и iamfirst.
SPI в Arduino
SPI – это широко применяемый протокол передачи данных между микроконтроллером (Master) и периферийными устройствами (Slave). В наших проекта в качестве Master чаще всего используется плата Arduino. Интерфейс SPI был придуман и использовался компанией Motorola, но со временем стал отраслевым стандартом. Основным плюсом работы с этим интерфейсом считается высокая скорость и возможность подключения нескольких устройств на одной шине данных.
Выводы и контакты SPI
Связь по интерфейсу SPI arduino происходит между несколькими устройствами, которые расположены близко друг к другу. Платы Ардуино оснащены отдельными выводами для SPI. Сопряжение происходит при помощи четырех контактов:
- MOSI – по этой линии передается информация к Slave от Master.
- MISO – используется для передачи информации к Master от Slave.
- SCLK – создание тактовых импульсов для синхронной передачи данных.
- SS – выбор ведомого устройства.
Взаимодействие SPI устройств
Взаимодействие устройств начинается, когда на выход SS подается низкий уровень сигнала.
Перед началом работы нужно определить:
- С какого бита должен начинаться сдвиг – со старшего или с младшего. Регулируется порядок при помощи функции PI.setBitOrder().
- Определить уровень, на котором должна находиться линия SCK при отсутствии тактового импульса. Регулируется функцией SPI.setDataMode().
- Выбрать скорость передачи данных. Определяется функцией SPI.setClockDivider().
Следующим шагом будет определение, в каком режиме будет происходить передача информации. Выбор режима определяется такими показателями, как полярность и фаза тактового импульса. Если уровень низкий, записывается 0, высокий – 1. Всего существует 4 режима:
- Режим 0 – SPI_MODE0: полярность (CPOL) 0, фаза (CPHA) 0.
- Режим 1: полярность 0, фаза 1.
- Режим 2:полярность 1, фаза 0.
- Режим 3: полярность 1, фаза 1.
Изначально в Ардуино заложено, что данные передаются старшим битом вперед, но перед началом нужно уточнить это в документации. Продемонстрировать режимы можно на картинке.
Возможно два вида подключения в интерфейсе SPI: независимое и каскадное. В первом случае при подключении Master обращается к каждому Slave индивидуально, во втором случае подключение происходит по очереди, т.е. каскадно.
Как новые технологии влияют на развитие СХД?
СХД – это довольно классические решения, которые меняются эволюционно, а не революционно. Можно заметить изменения в интерфейсе: с 16 ГБит/c на 32 Гбит/c, если говорить про SAN, и с 6 Гбит/c на 12 Гбит/c, если говорить про SAS. Считается, что NVMe существенно понизит задержки и обеспечит точки роста, поэтому многие аналитики связывают с ним будущее СХД.
«Есть технология FCoE (Fibre Channel over Ethernet), – рассказывает Алексей Никифоров, директор по технологиям Hitachi Vantara в России и СНГ. – Многие продвигали эту технологию, были заявления о том, что она заместит SAN. Этого не произошло, и фактически технология не то чтобы умерла, но сейчас о ней уже никто не вспоминает».
Преимущество сетевых модулей Wiznet над ENC
Модули на чипах от Wiznet немного дороже модулей на чипах ENC, но это отнюдь не безосновательно. Микросхемы Wiznet, в отличие от ENC, обрабатывают большинство протоколов и операций аппаратно, благодаря этому основная работа выполняется микросхемой модуля, а не нашим микроконтроллером.
Кроме того, чипы Wiznet позволяют использовать их оперативную память, что является еще одним бонусом. Последний, но не менее важный аргумент в пользу использования чипов Wiznet — это официальная поддержка Arduino. Благодаря гораздо более развитой библиотеке мы можем быстро и легко научиться работать с Wiznet модулями.
Описание методов класса RH_ASK
Для работы с данными радиомодулями будет использован класс RH_ASK. RH_ASK работает с рядом недорогих РЧ трансиверов ASK (амплитудная манипуляция), таких как RX-B1 (также известный как ST-RX04-ASK); Передатчик TX-C1 и приемопередатчик DR3100; Приемопередатчик FS1000A / XY-MK-5V; HopeRF RFM83C / RFM85. Поддерживает ASK (OOK).
RH_ASK ()
Конструктор. В настоящее время поддерживается только один экземпляр RH_ASK на скетч.
RH_ASK::RH_ASK (uint16_t speed = 2000,
uint8_t rxPin = 11,
uint8_t txPin = 12,
uint8_t pttPin = 10,
bool pttInverted = false
)
1 |
RH_ASK::RH_ASK(uint16_t speed=2000, uint8_t rxPin=11, uint8_t txPin=12, uint8_t pttPin=10, boolpttInverted=false ) |
Параметры: — Желаемая скорость в битах в секунду — Пин, который используется для получения данных от приемника — Пин, который используется для отправки данных на передатчик — Пин, который подключен к EN передатчика. Будет установлено ВЫСОКОЕ состояние, чтобы включить передатчик (по умолчания pttInverted = true). — true, если вы хотите, чтобы pttin был инвертирован, чтобы НИСКОЕ состояние включило передатчик.
virtual bool init()
Инициализирует драйвер. Убедитесь, что драйвер настроен правильно перед вызовом .
bool RH_ASK::init()
1 | boolRH_ASK::init() |
Возвращает:
истина, если инициализация прошла успешно.
virtual bool available()
Проверяет, доступно ли новое сообщение из драйвера. Также переводит драйвер в режим RHModeRx до тех пор, пока сообщение не будет фактически получено транспортом, когда оно будет возвращено в RHModeIdle. Это может быть вызвано несколько раз в цикле ожидания.
bool RH_ASK::available()
1 | boolRH_ASK::available() |
Возвращает:
true, если новое, полное, безошибочное несобранное сообщение доступно для извлечения с помощью .
virtual bool recv (uint8_t *buf, uint8_t *len)
Включает приемник, если он еще не включен. Если доступно допустимое сообщение, копирует его в и возвращает , иначе возвращает
Если сообщение копируется, устанавливается длина (Внимание, сообщения 0 длины разрешены). Вы должны вызывать эту функцию достаточно часто, чтобы не пропустить ни одного сообщения
Рекомендуется вызывать ее в основном цикле.
bool RH_ASK::recv(uint8_t * buf, uint8_t * len)
1 | boolRH_ASK::recv(uint8_t*buf,uint8_t*len) |
Параметры: — место для копирования полученного сообщения — указатель на доступное пространство в буфере. Устанавливает фактическое количество скопированных октетов.Возвращает:, если действительное сообщение было скопировано в .
virtual bool send(const uint8_t *data, uint8_t len)
Ожидание завершения передачи любого предыдущего передаваемого пакета с помощью . Затем загружает сообщение в передатчик и запускает передатчик
Обратите внимание, что длина сообщения 0 НЕ допускается
bool RH_ASK::send(const uint8_t * data, uint8_t len)
1 | boolRH_ASK::send(constuint8_t*data,uint8_t len) |
Параметры: — массив данных для отправки — Количество байтов данных для отправки (> 0)Возвращает:
истина, если длина сообщения была правильной, и оно была правильно поставлена в очередь для передачи
virtual uint8_t maxMessageLength()
Возвращает максимальную длину сообщения, доступную в этом драйвере.
uint8_t RH_ASK::maxMessageLength()
1 | uint8_t RH_ASK::maxMessageLength() |
Возвращает:
Максимальная допустимая длина сообщения
void setModeIdle()
Если текущий режим — Rx или Tx, он переключается в режим ожидания. Если передатчик или приемник работает, отключает их.
void INTERRUPT_ATTR RH_ASK::setModeIdle()
1 | voidINTERRUPT_ATTR RH_ASK::setModeIdle() |
void setModeRx()
Если текущий режим Tx или Idle, изменяет его на Rx. Запускает приемник в RF69.
void RH_ASK::setModeRx()
1 | voidRH_ASK::setModeRx() |
void setModeTx()
Если текущий режим Rx или Idle, изменяет его на Rx. F Запускает передатчик в RF69.
void RH_ASK::setModeTx()
1 | voidRH_ASK::setModeTx() |
uint16_t speed()
Возвращает текущую скорость в битах в секунду.
uint16_t RH_ASK::speed()
1 | uint16_t RH_ASK::speed() |
Возвращает:
Текущая скорость в битах в секунду