mirror of
https://github.com/xreef/PCF8574_library.git
synced 2024-08-30 18:12:18 +00:00
Fix on readAll
This commit is contained in:
parent
7d7ba7ea57
commit
011eb1b5f5
18
PCF8574.cpp
18
PCF8574.cpp
@ -176,16 +176,16 @@ PCF8574::DigitalInput PCF8574::digitalReadAll(void){
|
||||
DEBUG_PRINT("Buffer value ");
|
||||
DEBUG_PRINTLN(byteBuffered, BIN);
|
||||
|
||||
if (bit(0)&readMode>0) digitalInput.p0 = (byteBuffered&bit(0)>0)?HIGH:LOW;
|
||||
if (bit(1)&readMode>0) digitalInput.p1 = (byteBuffered&bit(1)>0)?HIGH:LOW;
|
||||
if (bit(2)&readMode>0) digitalInput.p2 = (byteBuffered&bit(2)>0)?HIGH:LOW;
|
||||
if (bit(3)&readMode>0) digitalInput.p3 = (byteBuffered&bit(3)>0)?HIGH:LOW;
|
||||
if (bit(4)&readMode>0) digitalInput.p4 = (byteBuffered&bit(4)>0)?HIGH:LOW;
|
||||
if (bit(5)&readMode>0) digitalInput.p5 = (byteBuffered&bit(5)>0)?HIGH:LOW;
|
||||
if (bit(6)&readMode>0) digitalInput.p6 = (byteBuffered&bit(6)>0)?HIGH:LOW;
|
||||
if (bit(7)&readMode>0) digitalInput.p7 = (byteBuffered&bit(7)>0)?HIGH:LOW;
|
||||
if ((bit(0) & readMode)>0) digitalInput.p0 = ((byteBuffered & bit(0))>0)?HIGH:LOW;
|
||||
if ((bit(1) & readMode)>0) digitalInput.p1 = ((byteBuffered & bit(1))>0)?HIGH:LOW;
|
||||
if ((bit(2) & readMode)>0) digitalInput.p2 = ((byteBuffered & bit(2))>0)?HIGH:LOW;
|
||||
if ((bit(3) & readMode)>0) digitalInput.p3 = ((byteBuffered & bit(3))>0)?HIGH:LOW;
|
||||
if ((bit(4) & readMode)>0) digitalInput.p4 = ((byteBuffered & bit(4))>0)?HIGH:LOW;
|
||||
if ((bit(5) & readMode)>0) digitalInput.p5 = ((byteBuffered & bit(5))>0)?HIGH:LOW;
|
||||
if ((bit(6) & readMode)>0) digitalInput.p6 = ((byteBuffered & bit(6))>0)?HIGH:LOW;
|
||||
if ((bit(7) & readMode)>0) digitalInput.p7 = ((byteBuffered & bit(7))>0)?HIGH:LOW;
|
||||
|
||||
if (readMode & byteBuffered>0){
|
||||
if ((readMode & byteBuffered)>0){
|
||||
byteBuffered = ~readMode & byteBuffered;
|
||||
DEBUG_PRINT("Buffer hight value readed set readed ");
|
||||
DEBUG_PRINTLN(byteBuffered, BIN);
|
||||
|
48
examples/05_readAll_Interrupt.ino
Normal file
48
examples/05_readAll_Interrupt.ino
Normal file
@ -0,0 +1,48 @@
|
||||
#include "Arduino.h"
|
||||
#include "PCF8574.h"
|
||||
|
||||
// For arduino uno only pin 1 and 2 are interrupted
|
||||
#define ARDUINO_UNO_INTERRUPTED_PIN 2
|
||||
|
||||
// Function interrupt
|
||||
void keyChangedOnPCF8574();
|
||||
|
||||
// Set i2c address
|
||||
PCF8574 pcf8574(0x39, ARDUINO_UNO_INTERRUPTED_PIN, keyChangedOnPCF8574);
|
||||
unsigned long timeElapsed;
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(115200);
|
||||
|
||||
pcf8574.pinMode(P0, OUTPUT);
|
||||
pcf8574.pinMode(P1, INPUT);
|
||||
pcf8574.pinMode(P2, INPUT);
|
||||
pcf8574.begin();
|
||||
|
||||
Serial.println("START");
|
||||
|
||||
timeElapsed = millis();
|
||||
}
|
||||
|
||||
bool keyChanged = false;
|
||||
void loop()
|
||||
{
|
||||
if (keyChanged){
|
||||
PCF8574::DigitalInput di = pcf8574.digitalReadAll();
|
||||
Serial.print("READ VALUE FROM PCF P1: ");
|
||||
Serial.print(di.p0);
|
||||
Serial.print(" - ");
|
||||
Serial.print(di.p1);
|
||||
Serial.print(" - ");
|
||||
Serial.print(di.p2);
|
||||
Serial.print(" - ");
|
||||
Serial.println(di.p3);
|
||||
// delay(5);
|
||||
keyChanged= false;
|
||||
}
|
||||
}
|
||||
|
||||
void keyChangedOnPCF8574(){
|
||||
// Interrupt called (No Serial no read no wire in this function, and DEBUG disabled on PCF library)
|
||||
keyChanged = true;
|
||||
}
|
Loading…
Reference in New Issue
Block a user