
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

MCP23008 - это 8-битный расширитель ввода / вывода с последовательным интерфейсом, работающий от 1,8 до 5,5 вольт, поэтому он идеально подходит для ESP8266, Arduino, Raspberry Pi, PIC Chips и других.
Если вы видели мой другой Instructable на MCP23017, вам может быть интересно, почему я делаю еще один для MCP23008, поскольку это действительно уменьшенная версия того же самого.
Причина в том, что его регистры различаются как по названию, так и по номеру, и я хотел бы показать, как использовать готовый библиотечный модуль. Не все разбираются в использовании NodeMCU lua, поэтому я хотел бы показать этот аспект программирования, а также то, как использовать MCP23008.
Библиотека и программы доступны на github.com.
Техническое описание MCP23008 можно получить в Microchip.
Шаг 1. Подключение MCP23008

Микросхема MCP23008 имеет простую компоновку, и для нее действительно легко собрать плату. Вы также можете установить схему на макетной плате.
Контакты на моей плате
- Вывод 18 (VDD) на 3v3
- Контакт 9 (VSS) к GND
- Контакт 7 (NC) к GND (не требуется)
- Контакт 1 (SCL) к ESP GPIO2
- Контакт 2 (SDA) к ESP GPIO0
- Контакт 5 (A0) к GND
- Контакт 4 (A1) к GND
- Контакт 3 (A2) к GND
- Контакт 6 (СБРОС) на 3v3
Подключите контакты для чтения к Gnd порта A (контакты 10-17).
Примечание: здесь все контакты адреса подключены к Gnd для использования MCP23008 по адресу 0x20 на шине адреса I2C.
Если бы вы использовали адрес 0x21, то A0 был бы подключен к 3,3 В, а A1 и A2 подключены к Gnd.
Аналогично, если используется адрес 0x22, то A1 должен быть подключен к 3,3 В, а A0 и A2 подключены к Gnd.
так далее…
Шаг 2: создание доски

Я использовал полосовую доску Vero 25 мм x 64 мм (9 рядов x 25 отверстий), чтобы построить свою доску. Он немного тесноват, но поскольку большинство нужных вам контактов находится по обе стороны от ИС, этого достаточно для того, что он должен делать.
Я использовал 8 контактов и 8 разъемов для порта A, чтобы я мог подключать свои различные модули, а также другую проводку для разных проектов. Я добавил дополнительные контакты Gnd и 3,3 В, так как обнаружил, что их всегда не хватает при соединении модулей вместе.
Шаг 3. Использование библиотечного модуля

Модули библиотеки обычно содержат набор подпрограмм, функций и переменных, к которым может получить доступ другая программа. Сама программа не запускается, но вызывающая программа может получить доступ к ее функциям. Это означает, что вы можете иметь свои подпрограммы в библиотеке и вызывать их всякий раз, когда они вам нужны, создавая небольшую вызывающую программу. Это становится более ценным, если у вас есть много разных программ, использующих одни и те же подпрограммы, вам не нужно включать подпрограммы в каждую программу.
Примечание: программу mcp23008.lua необходимо загрузить в память ESP8266, как и другие программы.
Я включил сюда программы github.com, а также простую программу (test.lua), чтобы показать, что библиотека работает.
Есть как минимум 2 способа включить библиотеку в вашу программу.
требуется ("mcp23008")
mcp23008.begin (0x0, gpio2, gpio0, i2c. SLOW)
или
mcp = require ("mcp23008")
mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)
Оба вышеуказанных метода делают то же самое, но второй метод позволяет вам использовать вашу собственную переменную вместо имени программы.
Шаг 4: автомобильная программа Китта

Я включил программу KittCar23008.lua и KittLib.lua, которая использует библиотеку, чтобы показать различия в том, как писать программы таким образом. Обе программы делают одно и то же.
Штекер на 8 светодиодов доступен на Ebay в виде комплекта и известен как 8-канальный светодиодный комплект для освещения проточной воды, 99p из Китая. Придется самому паять.
Примечание. Если у вас возникли проблемы с запуском программы KittLib.lua, попробуйте на мгновение подключить вывод RESET MCP23008 к Gnd. Я знаю, что это приведет к прямому короткому замыканию (поскольку он подключен к 3,3 В), и вам придется сбросить все остальное. Он также работает при подключении к Gnd через резистор 10 Ом, вероятно, лучший способ сделать это.
Я также обнаружил, что KittLib.lua будет работать без проблем после запуска test.lua (не спрашивайте меня, почему?)
Я пробовал различными способами решить проблему с программой KittLib.lua, но пока не могу найти логической причины, почему она дает сбой. Есть ли у кого-нибудь идеи?
Я сам не написал все эти программы, поэтому я не могу сказать, почему возникла проблема, хотя после просмотра кода, похоже, что-то явно не так.
Шаг 5: 7-сегментный светодиод

Как и в случае с программой KittCar.lua, описанной выше, я включил автономную программу и программу, зависящую от библиотеки, для управления 7-сегментным светодиодным дисплеем.
Опять же, обе программы делают одно и то же, но демонстрируют, как использовать библиотечный модуль, написанный вами или кем-то другим.
Шаг 6: Заключение

Я попытался продемонстрировать, как использовать модули кода в среде Lua и одновременно применять их к конкретной ИС.
Несмотря на то, что у меня возникла проблема с этим, я думаю, что этого достаточно, чтобы показать, как работают эти модули, а также продемонстрировать реальное приложение.
Рекомендуемые:
Несколько USB-портов без печатной платы: 4 шага

Несколько USB-портов без какой-либо печатной платы: это моя вторая инструкция, и здесь я собираюсь поделиться с вами проектом, в котором вы можете сделать несколько USB-портов для использования на своем ПК, потому что, когда вы работаете из дома, у вас есть большая проблема с использованием многих устройства, как и большинство устройств сейчас ч
NODEMCU LUA ESP8266 Подключение к базе данных MySQL: 6 шагов

NODEMCU LUA ESP8266 Подключение к базе данных MySQL: это руководство не для слабонервных, поскольку оно использует XAMPP (Apache, MySQL и PHP), HTML и, конечно же, LUA. Если вы уверены, что справитесь с этим, читайте дальше! Я использую XAMPP, так как его можно настроить на флэш-накопитель или на жесткий диск, и он настроен
NODEMCU Lua ESP8266 с часами реального времени (RTC) и EEPROM: 7 шагов

NODEMCU Lua ESP8266 с часами реального времени (RTC) и EEPROM: если вы хотите вести журнал данных, получение правильного времени имеет важное значение. Есть разные способы узнать время из источников в Интернете. Вы можете спросить, почему бы не использовать ESP8266, чтобы отслеживать ваше время? Что ж, вы можете, у него есть собственный внутренний RTC (в реальном времени
NODEMCU LUA ESP8266 с микросхемой 16-битного расширителя портов MCP23017: 6 шагов (с изображениями)

NODEMCU LUA ESP8266 с микросхемой 16-разрядного расширителя портов MCP23017: MCP23017 является относительно простой микросхемой для изготовления платы, поскольку у нее есть порты A и B с обеих сторон микросхемы, а контакты расположены в последовательном порядке. все вместе. На этой микросхеме есть 2 контакта, которые как таковые не используются
Переадресация портов SMC: 6 шагов

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