Не могу запустить плату I2C GPIO
- Войдите на сайт для отправки комментариев
Доброго времени суток.
Реализую умный дом на arduino mega, встал вопрос нехватки цифровых портов. Приобрел вот такую плату на 16 доп цифр портов. Фотка сперта с первого попавшегося сайта, но плата точно такая же. В подключении ничего особого нет, тем более нашел как это сделать тут. Там же беру библиотеку mcp23017 и mcp23x17.
Пишу простейший скетч, при попытке инициализировать плату arduino mega виснет. То что она виснет становиться ясно если вставить в код в loop вывод тестового сообщения - сообщение не выводиться, как только в setup комментирую строчку mcp23_1.init(0), тестовое сообщение начинает выводиться.
Чего только не пробовал и втыкал в другие два SDA и SCL ( перед AREF) и игрался с потягивающими резисторами на SDA и SCL, как написано даташите. Сразу скажу, что платы у меня такие две с обоими ситуация одинакова. С адресными перемычками все виды танцев с бубнами производились. Плата MEGA 100% фирменная и рабочая, тем более у меня их три штуки и одна из них работает уже в продуктиве более полугода управлет светом, охраной и климатом - никаких нареканий.
Народ подскажите где куритть, а то не могу управление хамамом( турецкая баня) реализовать, а то оцень хотса в баню.
Пример скетча ниже.
#include <MCP23x17.h> #include <MCP23017.h> #include <SoftwareSerial.h> #include <Wire.h> CMCP23017 mcp23_1; void setup() { Serial.begin(9600); Wire.begin(); mcp23_1.init(0); // инициализируем плату на адресе 0 mcp23_1.pinMode(0,INPUT); // нулевой порт признаем как вход } void loop() { Serial.println(mcp23_1.digitalRead(0)); // тут висит кнопка пытаемся считать ее состояние Serial.println("Test!"); // тестовое сообщение delay(100); // чтобы в глазах не рябило :) }
Скетч i2c scanner - плату видит?
О блин, а то про слона то я и забыл :)
Спасибо за "ниточку" - сегодня вечером копну это лопатой.
Нулевой адрес - это General Call.
Точне в скетче не пропущены циферкми?
Нулевой адрес - это General Call.
Точне в скетче не пропущены циферкми?
Я все 8 адресов с 0 по 7 пробовал.
Все восемь I2C адресов? :)
http://www.i2c-bus.org/addressing/
цитата:
The following table shows I2C addresses reserved for special purposes:
недавно делал на двух mcp23016 (на 16 входов и16 выходов)работает отлично и простое программирование с библиотекой IOexpander
просто поставь свои адресса
Да ,там названия немного попутаны - в сетапе посмотри ,где входа где выходы
Скетч i2c scanner - плату видит?
Попробовал - видит, перемычки переставляешь - адреса меняются - платы живые.
Но не работают - инициализация не прходит пишу адрес при ининциализации как в сканере i2c например с "пустыми" перемычками: mcp23_1.init(0x27) - аналогичная фигня :(
недавно делал на двух mcp23016 (на 16 входов и16 выходов)работает отлично и простое программирование с библиотекой IOexpander
просто поставь свои адресса
Да ,там названия немного попутаны - в сетапе посмотри ,где входа где выходы
Пробовал, но у меня какая то засада с IDE или самой библиотекой , сначала ругается на отсутствие WProgram.h я в библиотеку(IOexpander.cpp) дописываю автовыбор WProgam.h или Arduino.h:
#if defined(ARDUINO)&& ARDUINO >=100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
После этого мне вываливается два мешка ошибок: в таком то классе нет такого метода, в таком то классе нет такого то члена и так строчек 20, поэтому я пока эту библиотеку откинул.. Борюсь с mcp.
Проверил на последней версии ИДЕ 1.0.6- компилируется нормально (как и на версии1.0.1). Библиотеку вытащил из директории ИДЕ.
У меня тоже на 1.0.6 Ваш скетч вываливает хуллиард ошибок:
Странно конечно, что не работает, я эти mcp23017 мучал больше года назад и статья "Расширяем порты" моя.. Может китайцы уже научились подделывать эти mcp23017 и по этому оно работает не правельно ?? ))
Дело не в поддельных MCP230**. У чела не компилируется. Я через ДРОПБОХ на 3 компах использую Ардуино ИДЕ. (Предварительно установив драйвера на каждый)На одном-ХП, на втором _Семерка х64, на ноуте -Win8.1 .И везде компилируется нормально.ИДЕ на 2-х компах разных версий есть , начиная от 0,22 до последней
MCP230*** не при чем..
Скетч может не работать, но компиляция должна пройти..
ПАМАГУЧКА ,ты библы как в ИДЕ кидаешь?
Я про это имеею ввиду - там все рабочее должно быть , лично все проверено
Дело не в поддельных MCP230**. У чела не компилируется. Я через ДРОПБОХ на 3 компах использую Ардуино ИДЕ. (Предварительно установив драйвера на каждый)На одном-ХП, на втором _Семерка х64, на ноуте -Win8.1 .И везде компилируется нормально.ИДЕ на 2-х компах разных версий есть , начиная от 0,22 до последней
MCP230*** не при чем..
Скетч может не работать, но компиляция должна пройти..
ПАМАГУЧКА ,ты библы как в ИДЕ кидаешь?
Нет нет так: что касается плат mcp23017 - там все компилтся, но виснет на инициализации платы ( после команды mcp.init(адрес) скетч более не выполняется). А ошибки валит при компиляции скетч IOexpander. У меня два компа на которых я ардуиню: один windows 8 - IDE 1.0.6, второй iMAC - IDE 1.0.5 на обоих скетч с mcp виснет, скетч IOexpander валит мешок ошибок. Причем IOexpander - сначала просит WProgram.h, а как только я добавляю автобор WProgram.h или Arduino.h -то тогда уже сыпятся ошибки.
Библиотеки добавляю двумя способами: или через меню в IDE или прямым копированием папки с библиотекой в папку библитеки самого IDE с последующим перезапуском IDE.