• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
PCF8574 - brak współpracy_błędny kod
#1
Kod:
#include<PCF8574.h>
//#include <AccelStepper.h>
#include <Wire.h>         
#include <LiquidCrystal_I2C.h>        
LiquidCrystal_I2C lcd(0x27, 20, 4);
PCF8574 ex1;
PCF8574 ex2;

void setup()
{
lcd.init();
lcd.clear();
lcd.backlight();  


ex1.begin(0x3F);  //IC1
ex1.pinMode(0, INPUT);
ex1.pinMode(1, INPUT);
ex1.pinMode(2, INPUT);
ex1.pinMode(3, INPUT);
ex1.pinMode(4, INPUT);
ex1.pinMode(5, INPUT);
ex1.pinMode(6, INPUT);
ex1.pinMode(7, INPUT);

ex2.begin(0x20);  //IC2
ex2.pinMode(0, OUTPUT); //Led1
ex2.pinMode(1, OUTPUT); //Led2
ex2.pinMode(2, INPUT);  //SW1           
ex2.pinMode(3, INPUT);  //SW2
ex2.pinMode(4, INPUT);
ex2.pinMode(5, INPUT);
ex2.pinMode(6, INPUT);
ex2.pinMode(7, INPUT);
}

void loop()
{
  if(ex2.digitalRead(2),LOW)
  //if(ex2.digitalRead(2),HIGH) //test1
    {
    lcd.setCursor (1, 0);
    lcd.print("SW1 active");
    ex2.digitalWrite(0,HIGH);
    }
  else
    {
    lcd.setCursor (1, 0);
    lcd.print("SW1 no active"); 
    ex2.digitalWrite(0,LOW);
    }

  if(ex2.digitalRead(3),LOW)
  //if(ex2.digitalRead(3),HIGH)  //test1
    {
    lcd.setCursor (1, 1);
    lcd.print("SW2 active");
    ex2.digitalWrite(1,HIGH);
    }
  else
    {
    lcd.setCursor (1, 1);
    lcd.print("SW2 no active"); 
    ex2.digitalWrite(1,LOW);
    }
    //ex2.blink(0,5,1000); //test2
    //ex2.blink(1,5,500); //test2
}

Witam wszystkim
Postanowiłem skorzystać / zapoznać się z bliska z ekspanderem PCF8574, zabrakło pinów w UNO [Obrazek: sad.gif]
Przedstawiam szkic w wersji uproszczonej i schemat, w pełni oddają problem:

Założenia układu:
- SW1 i SW2 spoczynkowo (zwarte styki 2 i 1) podaje +5V na P2 i P3 IC2(EX2),
- po naciśnięciu SW1 lub SW2 ma zostać podane zasilanie odpowiednia na Led1 lub Led2,
oraz zmienić komunikat na LCD,
- nie istnieje fizyczna możliwość naciśnięcia równocześnie SW1 i SW2, 
(są to wyłączniki krańcowe uruchamiane jedną dźwignią) , 

Napotkany problem:
po wgraniu załączonego kodu, układ nie reaguje na zmianę stanu SW1 lub SW2; 
Led1 i Led2 wygaszone,
LCD wyświetla "SW1 no active" i "SW2 no active".

Co próbowałem wykonać:
- dodawałem w kodzie podciągnięcia na wejściach ekspandera,
- próbowałem z R6 i R5 = 22k,
- podmieniałem IC,
w/w nie przyniosły zamierzonego efektu,

- wykonałem test1 (linia 40 i 54), 
przy test1; Led1 i Led2 świecą, LCD "SW1 active" i "SW2 active",

- wykonałem test2 (linia 66 i 67),
przy test2 Led1 i Led2 mrugają prawidłowo.

Dodatkowe informacje:
- IC2 (IC2 ex1 schemat) to PCF8574N natomiast nie widoczny na schemacie IC1 (ex1) tp PCF8574A, 
nie ma pomyłki w adresowaniu
- jeżeli wymusiłem załączenie Led1 i / lub Led2 natężenie w obwodzie każdej było I=3mA

Gdzieś popełniam błąd, ale jestem już w pętli - brak pomysłu [Obrazek: sad.gif]
Proszę o podpowiedź gdzie popełniam błąd.

Pzdr


Załączone pliki Miniatury
   
 
Odpowiedź
  


Wiadomości w tym wątku
PCF8574 - brak współpracy_błędny kod - przez sp9svn - 26-04-2020, 19:19

Skocz do:


Przeglądający: 1 gości