Arduino Polska Forum
Expander PCF 8574 dekaracja pinów jako define - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Expander PCF 8574 dekaracja pinów jako define (/watek-expander-pcf-8574-dekaracja-pin%C3%B3w-jako-define)



Expander PCF 8574 dekaracja pinów jako define - Magikkomputerowy - 05-03-2016

Witam!
W moim projekcie brakło mi wyjść więc zakupiłem dwa expandery PCF8574 i wszystko działa jak należy, jednak powstał problem po dołączeniu do projektu płytki VS1053 odpowiedzialnej za dźwięk. Skorzystałem z biblioteki adafruit i też Arduiono gra jak należy. 
Do brzegu:
Płytka VS1053 zajmuje mi w arduino zbyt wiele pinów, ale mam kilka wolnych z ekspandera, ale nie mogę sobie poradzić z deklaracją pinów ekspandera tak by przerzucić piny z arduino na ekspander. Jeżeli chodzi o kod to użyję skrótu myślowego, gdyż całego nie ma sensu wrzucać:
Kod:
‪#‎include‬ <PCF8574.h>
#include <Wire.h>
// include SPI, MP3 and SD libraries
#include <SPI.h>
#include <Adafruit_VS1053.h>
#include <SD.h>
// --------------------------Chodzi właśnie o te zdefiniowane piny by użyć tych z ekspandera
//‪#‎define‬ CLK 13 // SPI Clock, shared with SD card
#define MISO 12 // Input data, from VS1053/SD card
#define MOSI 11 // Output data, to VS1053/SD card
// Connect CLK, MISO and MOSI to hardware SPI pins.
// See http://arduino.cc/en/Reference/SPI "Connections"
// These are the pins used for the breakout example
//#define BREAKOUT_RESET 9 // VS1053 reset pin (output)
#define BREAKOUT_CS 10 // VS1053 chip select pin (output)
#define BREAKOUT_DCS 8 // VS1053 Data/command select pin (output)
// These are common pins between breakout and shield
#define CARDCS 4 // Card chip select pin
// DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
#define DREQ 3 // VS1053 Data request, ideally an Interrupt pin

//---------------Tu mam zdefiniowany ekspander
PCF8574 expander;

void setup()
{
//-----------------------definiowanie wyjść pierwszego ekspandera
expander.begin(0x20); //pierwszy ekspander
expander.pinMode(0, OUTPUT); //pierwsza dioda oko BB
expander.pinMode(1, OUTPUT);
expander.pinMode(2, OUTPUT);
expander.pinMode(3, OUTPUT);
expander.pinMode(4, OUTPUT);
expander.pinMode(5, OUTPUT);
expander.pinMode(6, OUTPUT); //hologram
//--------------------funkcja odpowiedzialna za wydobywanie dźwięku
voices(3);
}
void loop(){
}

void voices(int nr){
//--------------------Tu są zdefinowane te piny które chcę przerzucić
Adafruit_VS1053_FilePlayer musicPlayer =
Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS);
Serial.begin(9600);
if (! musicPlayer.begin()) { // initialise the music player
Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
while (1);
}
SD.begin(CARDCS); // initialise the SD card
musicPlayer.setVolume(0,0);
musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // DREQ int
if(nr==1)
musicPlayer.playFullFile("track001.mp3");
if(nr==2)
musicPlayer.playFullFile("track002.mp3");
if(nr==3)
musicPlayer.playFullFile("track003.mp3");
if(nr==4)
musicPlayer.playFullFile("track004.mp3");
if(nr==5)
musicPlayer.playFullFile("track005.mp3");
if(nr==6)
musicPlayer.playFullFile("track006.mp3");
}



RE: Expander PCF 8574 dekaracja pinów jako define - zster - 07-03-2016

Witam,
To się nie uda. Piny o których wspominasz to piny sprzętowego interfejsu szeregowego SPI. Biblioteka obsługująca układ VS1053 korzysta ze sprzętowego SPI własnie ( stąd wymaganie obecności biblioteki SPI ).


RE: Expander PCF 8574 dekaracja pinów jako define - Magikkomputerowy - 07-03-2016

No spoko ale jeśli się nie uda to musi być jakiś sposób by to obejść... inaczej do arduino nie można by było podpiąć za wiele...


RE: Expander PCF 8574 dekaracja pinów jako define - zster - 09-03-2016

(07-03-2016, 20:07)Magikkomputerowy napisał(a): No spoko ale jeśli się nie uda to musi być jakiś sposób by to obejść... inaczej do arduino nie można by było podpiąć za wiele...

Ale dlaczego nie ? Myślę, że nieco mylisz pojęcia.
Expanderem podłączonym do szyny I2C można zwiększyć ilość wejść i wyjść cyfrowych. Jeśli mowa o PCF8574 to można ich podłączyć 8 sztuk do jednej szyny. Są także expandery z 16 wyjściami/ wejściami ( np. MCP23017 ).
Wejścia/ wyjścia analogowe także można "dokładać".
Również do magistrali szeregowej SPI można podłączyć WIELE układów na raz pod warunkiem, że każdy z tych układów będzie miał osobny pin CS.
Ale nie da się na tych wyjściach emulować sprzętowej magistrali SPI ! Expandery są po prostu za wolne. Nie mówiąc już o tym, że musiał byś przepisać bibliotekę obsługującą układ V1053 a domyślam się, że to nie wchodzi w grę Wink
Podłączasz więc układ V1053 pod sprzętowe SPI arduino, zgodnie ze schematem, a resztę pinów cyfrowym ogólnego przeznaczenia możesz sobie rozszerzyć odpowiednimi expanderami. Innej możliwości nie ma, nie tylko w Arduino.


RE: Expander PCF 8574 dekaracja pinów jako define - Magikkomputerowy - 09-03-2016

(09-03-2016, 14:56)zster napisał(a):
(07-03-2016, 20:07)Magikkomputerowy napisał(a): No spoko ale jeśli się nie uda to musi być jakiś sposób by to obejść... inaczej do arduino nie można by było podpiąć za wiele...

Ale dlaczego nie ? Myślę, że nieco mylisz pojęcia.
Expanderem podłączonym do szyny I2C można zwiększyć ilość wejść i wyjść cyfrowych. Jeśli mowa o PCF8574 to można ich podłączyć 8 sztuk do jednej szyny. Są także expandery z 16 wyjściami/ wejściami ( np. MCP23017 ).
Wejścia/ wyjścia analogowe także można "dokładać".
Również do magistrali szeregowej SPI można podłączyć WIELE układów na raz pod warunkiem, że każdy z tych układów będzie miał osobny pin CS.
Ale nie da się na tych wyjściach emulować sprzętowej magistrali SPI ! Expandery są po prostu za wolne. Nie mówiąc już o tym, że musiał byś przepisać bibliotekę obsługującą układ V1053 a domyślam się, że to nie wchodzi w grę Wink
Podłączasz więc układ V1053 pod sprzętowe SPI arduino, zgodnie ze schematem, a resztę pinów cyfrowym ogólnego przeznaczenia możesz sobie rozszerzyć odpowiednimi expanderami. Innej możliwości nie ma, nie tylko w Arduino.
Matka jest potrzebą wynalazków, dlatego wymyśliłem inne rozwiązanie użyję samego ATMega do obsługi części funkcji robota i dołożę drugiego do obsługi innej częsci... Wiem, że może nie najwydajniejsze rozwiązanie, ale rozwiąże problem, bo niestety potrzebuję jeszcze kilka pinów SPI. To tak jakbym pakował dwa arduina do jednego robota, ale sytuacja tego wymaga. Za kilka dni pokażę w sieci co buduję i jak to działa... Przede mną sporo pracy w, z i na Arduino Wink


RE: Expander PCF 8574 dekaracja pinów jako define - zster - 09-03-2016

Można i tak choć to przerost formy nad treścią Smile Jednym można załatwić wszystko i to w prosty sposób...
Ale trzymam kciuki - w razie czego pomożemy Smile