Преобразователь интерфейса, PCF8574

Grigory
Offline
Зарегистрирован: 29.03.2014

Добрый день,купил вот такую приблуду(http://ba3ar.kz/k1_217.php), подскажите пожалуйста. Чего делаю не так : С подключением данного устройства проблем нет, а вот с программированием дальше объявления переменных не моду двинуться. Все примеры которые находил ориентированиы на LCD дисплеи. 

Скеч

 
#include <PCF8574.h>
#include <Wire.h>
 
PCF8574 PCF(0x27);
 
 
void setup()
{
 
}
 
void loop()
{
for(int i=4;i<=7;i++){
  PCF.toggle(i);  
}
  
}

Ошибки идут следующего плана: 

C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp: In constructor 'RobotControl::RobotControl()':
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:8: error: 'LCD_CS' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:8: error: 'DC_LCD' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:8: error: 'RST_LCD' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp: In member function 'void RobotControl::begin()':
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXA' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXB' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXC' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXD' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:19: error: 'MUX_IN' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:22: error: 'BUZZ' was not declared in this scope
C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp:25: error: 'Serial1' was not declared in this scope
 
ssergo
Offline
Зарегистрирован: 10.05.2013

почитай ветку http://arduino.ru/forum/programmirovanie/arduino-pro-mini-lcd-20x4-s-i2c-interfeisom

там рассмотрена как раз работа с таким девайсом.

Grigory
Offline
Зарегистрирован: 29.03.2014

ок, спс 

ssergo
Offline
Зарегистрирован: 10.05.2013

Если честно не понял фразу:

Все примеры которые находил ориентированиы на LCD дисплеи.

Данное устройство как раз и предназначено для подключения LCD дисплеев.

Если Вы хотите использовать PCF8574 - в качестве расширителя портов ввода-вывода, то лучше купить 

http://www.ebay.com/itm/10PCS-PCF8574P-PCF8574-DIP-16-NXP-PHI-Remote-8-b...          и работать с ними напрямую. Примеров в инете куча.

 

 

Grigory
Offline
Зарегистрирован: 29.03.2014

Посмотрел не то. На данный момент уже купил что купил и нужно с этим разобраться первоначально я смотрел пример на http://www.youtube.com/watch?v=jgesIr0MFoY но наткнулся на выше описанные ошибки

Grigory
Offline
Зарегистрирован: 29.03.2014

вот отсюда брал библиотеки http://playground.arduino.cc/Main/PCF8574Class

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а все ли так делаешь?

http://playground.arduino.cc/Main/PCF8574Class

Grigory
Offline
Зарегистрирован: 29.03.2014

в папаке C:\Program Files\Arduino\libraries\PCF8574 положил 2 фаила  PCF8574.cpp, PCF8574.h в которые воткнул текстовку с http://playground.arduino.cc/Main/PCF8574Class, скеч взял с http://www.youtube.com/watch?v=jgesIr0MFoY

Grigory
Offline
Зарегистрирован: 29.03.2014

вот и понять не могу что там можно сделать не правильно

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так ругается не на PCF8574.cpp  а на ArduinoRobot.cpp)))

Grigory
Offline
Зарегистрирован: 29.03.2014

C:\Program Files\Arduino\libraries\Robot_Control\ArduinoRobot.cpp: In constructor 'RobotControl::RobotControl()':

это самая первая ошибка сейчас

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да откуда эта либа, если в 1 посте о ней ничего кроме ошибок

1#include <PCF8574.h>
2#include <Wire.h>

 

Grigory
Offline
Зарегистрирован: 29.03.2014

эмм не совсем понял вопрос.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

)))мда

в скетче который ты привел включены только 2 библиотеки

1#include <PCF8574.h>
2#include <Wire.h>

а компилятор ругается на ArduinoRobot.cpp, о которой в скетче ни одного слова

такое чувство что код приложил один, а ошибки от другого кода

Grigory
Offline
Зарегистрирован: 29.03.2014

нет, скеч соответсвует ошибкам, я его сразу и сюда и скопировал

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не пудри нам мозги

ты дал ошибки скорее всего от этого кода

 

Grigory
Offline
Зарегистрирован: 29.03.2014

один момент

Grigory
Offline
Зарегистрирован: 29.03.2014
Grigory
Offline
Зарегистрирован: 29.03.2014

принт скин того что в данный момент у меня есть

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Grigory
Offline
Зарегистрирован: 29.03.2014

гы)))) а можно мне тогда ваш набор библиотек)))) прошу прощения за наглость

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вот либа. хз что ты там делал

http://yadi.sk/d/CXjuENmaEEwun

там увидишь архив

Grigory
Offline
Зарегистрирован: 29.03.2014

ок спс уже по другому идет сейчас по новой поставлю ide 

Grigory
Offline
Зарегистрирован: 29.03.2014

Снес ide все поставил по новой и вот результат http://prntscr.com/4p8kdw , библиотеку поставил вашу

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

поставить либу и только после этого запускать иде

Grigory
Offline
Зарегистрирован: 29.03.2014

эт само собой

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Блин чуть не пропустил. Мистические ошибки о невызываемых функциях. Гадания на хрустальных шарах. В общем думаю что нужно вызвать дух zx-spectrumи распросить его.

Гыы Евгений не парься, товарищ снлсит и устанавливает ide через сервис виндовс. Там у него в папке библиотек уже такая хрень что проще винт отформатировать. :)

Grigory
Offline
Зарегистрирован: 29.03.2014

папку с arduino всю почистил, так что не надо наговаривать)))

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Grigory пишет:

папку с arduino всю почистил, так что не надо наговаривать)))


Библиотека robot control видимо сама мистическим образом распаковывается. А пробовали брать ide с офицтального сайта? Будете оплачивать экзорцизм?

Grigory
Offline
Зарегистрирован: 29.03.2014

ну именно от туда и беру ее http://arduino.cc

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Ну так обьясните откуда robot control берется?

Grigory
Offline
Зарегистрирован: 29.03.2014

сам хотел бы знать

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Grigory пишет:

сам хотел бы знать


Магия :) в общем бягите за саятой водой и натрите все провода чесноком. А вокруг раутера вообще пентограму нарисуйте.

Grigory
Offline
Зарегистрирован: 29.03.2014

эже))) и молоток рядом с компом положил, но чтото не помагает

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Grigory пишет:

эже))) и молоток рядом с компом положил, но чтото не помагает


Эххх молодеж.. молоток.. бубен нужен для настройки.
В общем учитесь правильно устанааливать и рампаковывать. А потом уже к ардуине переходите. Думаю что у вас и мигание светодиодом не скомпилируется.

Grigory
Offline
Зарегистрирован: 29.03.2014

блин ну давайте всетаки без фанатизма, после переустановки  этот скеч нормально отработал а вот первый в посте также не хочет

/*
Arduino Mega2560
PCF8574 - 8bit Portexpander, I2C Adressbereich A6-A3 fest auf b0100
PCF8574 - 8bit Portexpander, I2C Adressbereich von 0x20  =  B?010 0000
                                               bis 0x27  =  B?010 0111 )
PCF8574 - max. I2C Takt = 100kHz                          Bit7 ist R/W
*/
 
#include <Wire.h>
#define PCF8574  0x20   // PCF8574 Adresse, A2-A0 auf Masse
#define PCF8571  0x21   // PCF8574 Adresse, A2-A0 auf Masse
 
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  
}
 
void loop()
{
  for (int i=1; i<129;)
    {
     schreiben_PCF8574(PCF8574, i);
     Serial.println(lesen_PCF8574(PCF8574), BIN);
     delay(200);
     i=i*2;
    }  
     for (int i=1; i<129;)
    {
     schreiben_PCF8574(PCF8571, i);
     Serial.println(lesen_PCF8574(PCF8571), BIN);
     delay(200);
     i=i*3;
    }  
}
 
 
void schreiben_PCF8574(int I2C_Adresse, byte data)
{
  Wire.beginTransmission(I2C_Adresse);          // Connect
  Wire.write(data);                             // data Byte senden
  Wire.endTransmission();                       // Disconnect
  delay(1);
}  
    
 
byte lesen_PCF8574(int I2C_Adresse)
{
  byte data = 0xFF;
  Wire.requestFrom(I2C_Adresse, 1);           // ein Byte (8 Bit) anfordern
  if (Wire.available()) data = Wire.read();   // Daten vorhanden?
  return data; 
  delay(1);
}  
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну я хз. уже и либу дал. и картинку что все компилируется. какая версия иде? так для интереса

Grigory
Offline
Зарегистрирован: 29.03.2014

1,0,6

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну хз. но что то явно не так)))

с утра тоже компилируется. у вас похоже энергетика плохая, несовместимая с ардуино

так у меня вообще 1.0.4)) тоже чтоли обновить чтобы перестало работать

Grigory
Offline
Зарегистрирован: 29.03.2014

попробую поставить 4 релиз

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да дело не в версии я думаю

либо библиотеки неправильно ставишь, либо есть либа с таким же названием

 

Grigory
Offline
Зарегистрирован: 29.03.2014

проверял, таких имен нет в папаке с библиотеками, а ставить ее ставил и через загрузки ide и просто копированием в папку

Grigory
Offline
Зарегистрирован: 29.03.2014

Итак вот оно решение проблемы, после удалений, переустановок и тд. Сделал следующее - C:\Users\мой пользователь\Documents\Arduino\ libraries закинул библиотеки и  вуаля все закрутилось. Причем мне не понятно почему отсюда заработало а из C:\Program Files\Arduino\libraries ни  в какую. Всем спасибо)))

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

)))

Grigory
Offline
Зарегистрирован: 29.03.2014

а можно еще вопрос не по существу? Очень бы хотелось передавать значения с датчиков в игру например в NFS ? с таким не сталкивались? ну или мож подскажите куда копать?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да вот только была тема про мышь и клаву на ардуине

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Grigory пишет:

а можно еще вопрос не по существу? Очень бы хотелось передавать значения с датчиков в игру например в NFS ? с таким не сталкивались? ну или мож подскажите куда копать?

Дело не столько в передаче, сколько в приёме. В игре или любой другой программе должна быть реализована поддержка приёма данных с какого-либо устройства. Игра типа NFS поддерживает клавиатуру, мышь, джойстик, руль, педали. От этого и надо отталкиваться. Т.е. эмулировать работу этих девайсов.

Radjah
Offline
Зарегистрирован: 06.08.2014

Вангую, что ошибка лезет из-за того, что скетчи все в одну папку свалены, вот среда и пытается их все разом скомпиллировать. Скиншот не видел, ибо удален уже.

Grigory
Offline
Зарегистрирован: 29.03.2014

добрый вечер в продолжении темы, собрал в кучу ардуину + 6 штук pcf8574 схема подключения по sli , но проблема заключается в том что на основе скеча

 

#include <PCF8574.h>
#include <Wire.h>
 
PCF8574 PCF(0x27);
PCF8574 PCF1(0x28);
PCF8574 PCF2(0x29);
PCF8574 PCF3(0x30);
PCF8574 PCF4(0x31);
 
 
void setup()
{
 
}
 
void loop()
{
for(int i=4;i<=7;i++){
  PCF.toggle(i);  
}
  
}
 
ардуинка подвисает, т.е. в void loop() в цикле пишу serial.writeln(i) ,но при просмотре монитора порта ничего не приходит. 
Вопрос № 1 - как мне выверить нужные адреса(пробовал с разными вариантами перемычек)
                2 - есть ли сканер для ic(те которые находил оказались не работчими)
jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а кто тебе сказал что  по i2с будет 6 устройств работать с одними адресами?

Grigory
Offline
Зарегистрирован: 29.03.2014

подскажите какого плана должны быть адреса.