- Katılım
- 27 Şubat 2019
- Mesajlar
- 12,016
Bu gün gelen pcf8574 ile beraber seriyi tamamladım. Dün i2c seri haberleşme modülünü alarak 2x16 lcd ekran pinlerine lehimlemiştim.
Bu gün de gelen pcf8574 seri haberleşme modülünü 4x4 keypadimin pinlerine lehimleyerek nodemcu'nun pinlerini yeterli hale getireceğim.
Normalde i2c seri haberleşme modülü olmadan 2x16 lcd ekramınızdan 12 pini, pcf8574 seri haberleşme modülü olmadan da keypadimizden 8 pini nodemcu ya bağlamamız gerekiuordu. Yalnız nodemcu bize bu kadar pini sağlamıyor. Bu iki seri haberleşme modülü sayesinde toplamda 20 olan pin adedimizi 8'e düşürdük.
Biraz daha düşürelim mi?
Pcf8574 seri haberleşme modülümüzün üzerinde bulunan input VCC, GND, SCL ve SDA pinlerinden yararlanacağız.
İlk önce i2c ile pcf8574 arasındaki bağlantıyı yapalım. İ2c seri haberleşme modülümüzden çıkan VCC, GND, SCL ve SDA pinlerini pcf8574 modülümüzdeki dişi header tarafında aynı pinlere denk gelecek şekilde jumper kablo ile bağlıyoruz.
Daha sonra pcf8574 modülümüzün erkek header tarafından jumper kablo çıkarak nodemcu da VCC-->3.3v, GND-->GND, SCL-->D3, SDA-->D4 pinlerine bağlıyoruz. Gördüğünüz gibi VCC ve GND pinlerini saymazsak sadece 2 dijital pini kullanarak sistemi kurmuş olduk.
Yalnız burada önemli bir durum var. i2c modülü ile pcf8574 keypad modülü birbirinden farklı yapıda modüller. O yüzden bana göre çok mantıklı olan bu bağlantının çalışmama ihtimali var. İki modülüde incelediğim de ikisinin de üzerinde PCF8574T çip olduğunu fark ettim. Eğer birbirinden farklı yapıdaki bu iki modülün pin bağlantıları doğru yapılmış ise sorunsuz bir şekilde çalışacağını düşünüyorum.
Bunu öğrenmenin 2 yolu var. Birincisi dene ve gör, ikincisi ise @taydin veya @uyesercan 'a sor.
Sercan halihazırda bu devreyi kurmuş olduğu için daha ayrıntılı bilgi verebilir belki.
Diyelim ki olmadı. İki modül yapı farkından dolayı bize destek vermedi. Bu durum da yinede kârdayız.
Çünkü bu iki seri haberleşme modülünü ayrı ayrı da nodemcu ya bağlasak VCC ve GND hariç 4 digital pini kullanmış olacağız. 20 neredeee 4 nerede.
i2C Scanner Kodu;
Bu gün de gelen pcf8574 seri haberleşme modülünü 4x4 keypadimin pinlerine lehimleyerek nodemcu'nun pinlerini yeterli hale getireceğim.
Normalde i2c seri haberleşme modülü olmadan 2x16 lcd ekramınızdan 12 pini, pcf8574 seri haberleşme modülü olmadan da keypadimizden 8 pini nodemcu ya bağlamamız gerekiuordu. Yalnız nodemcu bize bu kadar pini sağlamıyor. Bu iki seri haberleşme modülü sayesinde toplamda 20 olan pin adedimizi 8'e düşürdük.
Biraz daha düşürelim mi?
Pcf8574 seri haberleşme modülümüzün üzerinde bulunan input VCC, GND, SCL ve SDA pinlerinden yararlanacağız.
İlk önce i2c ile pcf8574 arasındaki bağlantıyı yapalım. İ2c seri haberleşme modülümüzden çıkan VCC, GND, SCL ve SDA pinlerini pcf8574 modülümüzdeki dişi header tarafında aynı pinlere denk gelecek şekilde jumper kablo ile bağlıyoruz.
Daha sonra pcf8574 modülümüzün erkek header tarafından jumper kablo çıkarak nodemcu da VCC-->3.3v, GND-->GND, SCL-->D3, SDA-->D4 pinlerine bağlıyoruz. Gördüğünüz gibi VCC ve GND pinlerini saymazsak sadece 2 dijital pini kullanarak sistemi kurmuş olduk.
Yalnız burada önemli bir durum var. i2c modülü ile pcf8574 keypad modülü birbirinden farklı yapıda modüller. O yüzden bana göre çok mantıklı olan bu bağlantının çalışmama ihtimali var. İki modülüde incelediğim de ikisinin de üzerinde PCF8574T çip olduğunu fark ettim. Eğer birbirinden farklı yapıdaki bu iki modülün pin bağlantıları doğru yapılmış ise sorunsuz bir şekilde çalışacağını düşünüyorum.
Bunu öğrenmenin 2 yolu var. Birincisi dene ve gör, ikincisi ise @taydin veya @uyesercan 'a sor.
Sercan halihazırda bu devreyi kurmuş olduğu için daha ayrıntılı bilgi verebilir belki.
Diyelim ki olmadı. İki modül yapı farkından dolayı bize destek vermedi. Bu durum da yinede kârdayız.
Çünkü bu iki seri haberleşme modülünü ayrı ayrı da nodemcu ya bağlasak VCC ve GND hariç 4 digital pini kullanmış olacağız. 20 neredeee 4 nerede.
i2C Scanner Kodu;
Kod:
// --------------------------------------
// i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
Son düzenleme: