Kód: Vybrat vše
#include <PCF8574.h>
#include <Wire.h>
PCF8574 expander;
PCF8574 expander1;
char inString[32];
int inCount;
boolean AktualniStavPinu_D2; boolean MinulyStavPinu_D2 = 0;
boolean AktualniStavPinu_D3; boolean MinulyStavPinu_D3 = 0;
boolean AktualniStavPinu_D4; boolean MinulyStavPinu_D4 = 0;
boolean AktualniStavPinu_D5; boolean MinulyStavPinu_D5 = 0;
boolean AktualniStavPinu_D6; boolean MinulyStavPinu_D6 = 0;
boolean AktualniStavPinu_D7; boolean MinulyStavPinu_D7 = 0;
//-------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------
void setup() {
Serial.begin(9600);
Wire.begin();
byte error, address;
//-------------------------------------------------------------------------------------------
Wire.beginTransmission(0x20);
if (Wire.endTransmission() != 0){Serial.print("expander 0x20 nenalezen");}
//-------------------------------------------------------------------------------------------
Wire.beginTransmission(0x3F);
if (Wire.endTransmission() != 0){Serial.print("expander 0x3F nenalezen");}
//-------------------------------------------------------------------------------------------
expander.begin(0x20);
expander1.begin(0x3F);
pinMode(2, INPUT); // rele 0
pinMode(3, INPUT); // rele 1
pinMode(4, INPUT); // rele 2
pinMode(5, INPUT); // rele 3
pinMode(6, INPUT); // rele 4
pinMode(7, INPUT); // rele 5
pinMode(8, INPUT); // rele 6
pinMode(9, INPUT); // rele 7
// nastavi všechny koliky u expanderu PCF8574 - 0x20 jako vystup
for (byte i = 0; i < 8; i++) expander.pinMode(i, OUTPUT);
// nastavi všechny koliky u expanderu1 PCF8574 - 0x3F led blikač, jako vystup
for (byte i = 0; i < 8; i++) expander1.pinMode(i, OUTPUT);
// Nastaví vysoký stav "HIGH" na všech kolících expanderu PCF8574 - 0x20.
expander.set();
// Nastaví vysoký stav "HIGH" na všech kolících expanderu PCF8574 - 0x3F.
expander1.set(); // Nastaví vysoký stav "HIGH" na všech kolících.
Serial.println("stavrelay " + String(expander.read(), BIN));
}
void loop()
{
inCount = 0;
while (Serial.available() > 0)
{
inString[inCount] = Serial.read();
delay(10);
if (inString[inCount] == '\0') break;
inCount++;
}
inString[inCount] = '\0';
if (inCount > 0) {
String MyString = inString;
MyString.trim();
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele0") // rele 0
{
expander.toggle(0); //negace - obrati stav pinu
Serial.println("A001_Rele0 " + String(expander.digitalRead(0))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele1") // rele 1
{
expander.toggle(1); //negace - obrati stav pinu
Serial.println("A001_Rele1 " + String(expander.digitalRead(1))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele2") // rele 2
{
expander.toggle(2); //negace - obrati stav pinu
Serial.println("A001_Rele2 " + String(expander.digitalRead(2))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele3") // rele 3
{
expander.toggle(3);
Serial.println("A001_Rele3 " + String(expander.digitalRead(3))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele4") // // rele 4
{
expander.toggle(4);
Serial.println("A001_Rele4 " + String(expander.digitalRead(4))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele5") // // rele 5
{
expander.toggle(5);
Serial.println("A001_Rele5 " + String(expander.digitalRead(5))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele6") // rele 6
{
expander.toggle(6);
Serial.println("A001_Rele6 " + String(expander.digitalRead(6))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_rele7") // rele 7
{
expander.toggle(7);
Serial.println("A001_Rele7 " + String(expander.digitalRead(7))+ " net");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
//-------------------------------------------------------------------------------------------
if (MyString == "A001_info") // info vÜechnř rele
{
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
}
//--------------------------------------------------------------------------------
// Pro rele 2 - tlačitko D4 - Led svetlo pokoj------------------------------------
AktualniStavPinu_D4 = digitalRead(4); // nacteni aktualniho stavu tlacitka D4
if ((AktualniStavPinu_D4 == 1) && (MinulyStavPinu_D4 == 0)) // je-li stisknuto tlacitko D4
{
expander.toggle(2);// obrati stav pinu 2 na expanderu
Serial.println("A001_Rele2 " + String(expander.digitalRead(2))+ " vyp");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
MinulyStavPinu_D4 = AktualniStavPinu_D4;
//--------------------------------------------------------------------------------
// Pro rele 3 - tlačitko D5 - Led svetlo pokoj -----------------------------------
AktualniStavPinu_D5 = digitalRead(5); // nacteni aktualniho stavu tlacitka D5
if ((AktualniStavPinu_D5 == 1) && (MinulyStavPinu_D5 == 0)) // je-li ted stisknuto tlacitko D5
{
expander.toggle(3);// obrati stav pinu 3 na expanderu
Serial.println("A001_Rele3 " + String(expander.digitalRead(3))+ " vyp");
delay(100);
Serial.println("A001_stavrelay " + String(expander.read(), BIN));
}
MinulyStavPinu_D5 = AktualniStavPinu_D5;
//--------------------------------------------------------------------------------
if (expander.digitalRead(0) == 0) (expander1.blink(0, 1, 1000));
if (expander.digitalRead(1) == 0) (expander1.blink(1, 1, 1000));
if (expander.digitalRead(2) == 0) (expander1.blink(2, 1, 1000));
if (expander.digitalRead(3) == 0) (expander1.blink(3, 1, 1000));
if (expander.digitalRead(4) == 0) (expander1.blink(4, 1, 1000));
if (expander.digitalRead(5) == 0) (expander1.blink(5, 1, 1000));
//--------------------------------------------------------------------------------
}
Spravně tam ma byt 6 vypinaču.
Jelikož to hapruje, tak jsem to smaz a zatím řešim jen ty 2.