03-12-2023, 17:02
(02-12-2023, 13:42)Matmax89 napisał(a): To jaki masz pomysł na używanie PCF8574 bez biblioteki?
Wykorzystuje go głownie na dodatkowe przyciski.
Chciałbym tez odczytać stan wysoki na którymś z pinów i tu mam problem bo tylko odczytuje stan niski.
Poprzez bezpośrednie wywołania I2C. Ponieważ tylko czytasz to najpierw wysłanie 0xFF, a potem odczyt stanu pinów i sprawdzenie poszczególnych bitów. Dokumentacja podaje coś takiego:
najpierw include - to jest w samym core arduino:
Kod:
#include <Wire.h>
W funkcji setup() trzeba ustawić wszystkie PINy na H.
Kod:
Wire.begin(); //uruchamiam I2C
Wire.beginTransmission(PCF8574_ADRES); //rozpocznij transmisję do urządzenia
Wire.write(0xFF); // wszystkie piny na H
Wire.endTransmission(); //zakończ transmisję
A w funkcji loop() odczytać wejścia:
`
Kod:
Wire.requestFrom(PCF8574,1); //zażądaj od odczytania z PCF8574 1 bajtu
pins = Wire.read(); // stan pinów
A potem trzeba sprawdzić stan poszczególnych bitów zmiennej pins - wciśnięty przycisk to L czyli
Kod:
if ((pins & 0x01) == 0)
{
...
}
Jeśli źle odczytujesz przyciski to pewnie są źle podłączone. Wejścia są typu PULLUP - czyli na niepodłączonym pinie jest H i przycisk powinien zwierać go do masy.