Pages: [1]   Go Down
Author Topic: PCF8574 duvida  (Read 1043 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ola, é possivel criar uma array ou algo parecido para contralar de forma mais facil o PCF8574
tipo

P0 = 0
P1 = 1
P2 =0

eu estou usando esse codigo:

Code:
#include "Wire.h"
#define expander 0x20

void setup()
{
Wire.begin();
}

void loop()
{
 
  expanderWrite(B11111111);
  delay(1000);
 
  expanderWrite(B00000000);
  delay(1000);
}

void expanderWrite(byte _data )
{
  Wire.beginTransmission(expander);
  Wire.write(_data);
  Wire.endTransmission();
 
}


Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E de que maneira é que o array ia controlar o PCF8574?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

para ativar uma porta no PCF8574 eu estou usando o expanderWrite(B11111111)

mais gostaria de simplificar usando algo do tipo writedigital(P0, Low)

ponde o P0 seria a porta 0 do PCF8574

Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Com array é menos eficiente... algo como:

Code:

#define P0   0x1
#define P1   0x2
#define P2   0x4
#define P3   0x8
//completa o resto

void expanderBitWrite( unsigned char bit, unsigned char value) {

unsigned char status = expanderRead(); //deve haver uma destas funcões para ler o estado do registo

if (value == HIGH) expanderWrite(status | bit);
else expanderWrite(status &~(bit));

}


Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok eu vou olhar seu codigo com calma para entender
eu usar assim no Bascom-AVR usando BASIC

Code:
**Variavel
Dim Bytearray(1) As Byte


** Saidas
S1 Alias Bytearray(1).0
S2 Alias Bytearray(1).1
S3 Alias Bytearray(1).2
S4 Alias Bytearray(1).3
S5 Alias Bytearray(1).4
S6 Alias Bytearray(1).5
S7 Alias Bytearray(1).6

S1 = 0
S2 = 1
S4 = 1

*** depois mandava assim

' Envias dados PC8574
I2cstart
I2cwbyte Pcf8574
I2cwbyte Bytearray(1)
I2cstop




S8 Alias Bytearray(1).7


« Last Edit: April 16, 2012, 06:57:59 pm by ricardomira77 » Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3263
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Eu não sei BASIC...
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

opa eu achei uma biblioteca para usar com o PCF8574

http://skyduino.wordpress.com/librairie-arduino-pcf8574-pcf8575/

ficou mais simples:

Code:
#include <PCF8574.h> // Required for ... all

#include <Wire.h> // Required for I2C communication

PCF8574 expander; // Create object from PCF8574 class

void setup(){

  Serial.begin(9600); // Setup serial for read echo
 
  expander.pinMode(0,OUTPUT); // Setup pin D0 as output
  expander.pinMode(1,OUTPUT); // Setup pin D1 as output
  expander.pinMode(2,OUTPUT); // Setup pin D2 as output
 
  expander.set(); // coloca todas as saidas em HIGH
  expander.begin(0x20);
 
}

void loop(){
  expander.digitalWrite(0, LOW); // Blink led 1
  delay(1000);
  expander.digitalWrite(0, HIGH); // Blink led 2
  delay(1000);

} // Loop forever
Logged

Pages: [1]   Go Up
Jump to: