Arduino:Примеры/DS2408 Switch
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Работа с PIO-чипом DS2048[1]
Этот пример показывает, как при помощи библиотеки OneWire работать с PIO-чипом DS2048.
Код
#include <OneWire.h>
/*
* 8-канальный PIO-чип DS2408
*
* Написан Гленном Тревиттом
*
* Пара примечаний о DS2408:
* - в отличие от большинства портов ввода/вывода, у DS2408 нет
* битов, чтобы задать режим контакта (входной/выходной). Если вы
* даете команду считывания, они будут входными, а если делаете
* запись, то выходными
* - чтобы считывать с этого PIO-чипа, нужно воспользоваться
* подтягивающими резисторами на 10 кОм
*/
void PrintBytes(uint8_t* addr, uint8_t count, bool newline=0) {
for (uint8_t i = 0; i < count; i++) {
Serial.print(addr[i]>>4, HEX);
Serial.print(addr[i]&0x0f, HEX);
}
if (newline)
Serial.println();
}
void ReadAndReport(OneWire* net, uint8_t* addr) {
Serial.print(" Reading DS2408 ");
PrintBytes(addr, 8);
Serial.println();
uint8_t buf[13]; // помещаем все в буфер – чтобы было проще рассчитывать CRC
buf[0] = 0xF0; // считываем регистры PIO
buf[1] = 0x88; // адрес самого младшего бита
buf[2] = 0x00; // адрес самого старшего бита
net->write_bytes(buf, 3);
net->read_bytes(buf+3, 10); // 3 байта для команды, 6 байтов для данных, два 0xFF, два CRC16
net->reset();
if (!OneWire::check_crc16(buf, 11, &buf[11])) {
Serial.print("CRC failure in DS2408 at "); // "Ошибка CRC в DS2048 на "
PrintBytes(addr, 8, true);
return;
}
Serial.print(" DS2408 data = "); // " Данные DS2048 = "
// первые 3 байта содержат команду (адрес регистра):
Serial.println(buf[3], BIN);
}
OneWire net(10); // на 10-ом контакте
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte present = 0;
byte addr[8];
if (!net.search(addr)) {
Serial.print("No more addresses.\n"); // "Адресов больше нет.\n")
net.reset_search();
delay(1000);
return;
}
if (OneWire::crc8(addr, 7) != addr[7]) {
Serial.print("CRC is not valid!\n"); // "CRC не корректен!\n")
return;
}
if (addr[0] != 0x29) {
PrintBytes(addr, 8);
Serial.print(" is not a DS2408.\n"); // " – это не DS2048.\n")
return;
}
ReadAndReport(&net, addr);
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
Категории:
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino