I2C एलसीडी सीरियल इंटरफ़ेस बोर्ड पाठ प्रदर्शित नहीं कर रहा है (गलत पिन?)


9

मेरे पास 1602 एलसीडी स्क्रीन है जो अपने आप ठीक काम करती है। हालाँकि मैं अलग से खरीदे गए I2C / IIC एलसीडी कंट्रोलर का उपयोग करके कुछ पिन मुक्त करना चाहता था।

हालांकि नियंत्रक सही पते पर मेरे Arduino UNO के साथ संचार करता हुआ प्रतीत होता है, मुझे प्रदर्शित करने के लिए पाठ नहीं मिल सकता है। डिफ़ॉल्ट रूप से (कोई कोड नहीं) ऐसा लगता है कि एलसीडी में 16 ठोस "वर्गों" की 1 पंक्ति होगी। मेरे कोड में पता 27 का उपयोग करते समय, एलसीडी 16 वर्गों की 2 पंक्तियों में बदल जाएगी (नीचे फोटो देखें)। कोड 3 बार फ्लैशलाइट के लिए भी कॉल करता है, जो काम करता है। हालाँकि मुझे वर्गों की 2 पंक्तियों के अलावा कुछ नहीं मिल सकता है। (पूर्ण कोड इस प्रश्न के निचले भाग में है)।

मैं एफ मालपेरिडा द्वारा लिक्विड क्रिस्टल_आई 2 सी लाइब्रेरी का उपयोग कर रहा हूं , जो आमतौर पर उपयोग किया जाता है।
क्या एक बेहतर पुस्तकालय है जिसका मुझे उपयोग करना चाहिए?

मैं सोच रहा हूँ कि क्या यह सिर्फ कोड में इस्तेमाल किया जा रहा गलत पिन है। मेरे द्वारा देखे गए सभी रेखाचित्र निम्नलिखित पिन का उपयोग करते हैं:

//                    addr,en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// Set the LCD I2C address

लेकिन मेरे द्वारा देखे गए सभी 1602 एलसीडी में मेरा जैसा ही पिन है, जैसा कि आप नीचे दिए गए मेरे फोटो में देख सकते हैं:

I2C एलसीडी नियंत्रक

ये पिन मानक प्रतीत होते हैं:
1602 एलसीडी पिनआउट

मुझे और भ्रमित करने के लिए, एलसीडी बोर्ड पर पिन बाईं ओर 1 से शुरू होती हैं, फिर भी डिफ़ॉल्ट कोड की पिन 0 से शुरू होती हैं! इसलिए मैंने कोड के पिन को एलसीडी बोर्ड पर संख्याओं में बदलने की कोशिश की। एलसीडी अब वर्गों की 2 लाइनों में नहीं बदलता है और अब बैकलाइट को ब्लिंक नहीं करता है। मैंने तब प्रत्येक पिन से 1 घटाया (0 से शुरू करने के लिए), वही परिणाम। मैंने तब डिफ़ॉल्ट पिन माइनस 1 का उपयोग करने की कोशिश की, वही परिणाम। इस प्रकार डिफ़ॉल्ट पिन किसी तरह अधिक सही हैं ?! मैं क्या गलत कर रहा हूं?

क्या किसी और को इन I2C नियंत्रकों में से एक उनके लिए काम करने के लिए मिल गया है, और यदि हां, तो कैसे?

पूर्ण कोड:

/* YourDuino.com Example Software Sketch
 16 character 2 line I2C Display
 Backpack Interface labelled "YwRobot Arduino LCM1602 IIC V1"
 terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here: 
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>

/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 2 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);  // Used to type in characters
  lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++) {
    lcd.backlight();
    delay(250);
    lcd.noBacklight();
    delay(250);
  }
  lcd.backlight(); // finish with backlight on  

//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0  
  lcd.setCursor(0,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");
  delay(1000);
  lcd.setCursor(0,1);
  lcd.print("HI!YourDuino.com");
  delay(8000);  

// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.clear();
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Use Serial Mon");
  lcd.setCursor(0,1);
  lcd.print("Type to display");  

}/*--(end setup )---*/

void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
      }
    }
  }

}/* --(end main loop )-- */

क्या आपने पुलअप को जोड़ना याद किया?
इग्नासियो वाज़केज़-अब्राम्स


1
शायद समस्या नहीं है, लेकिन क्या आपने पोटेंशियोमीटर का उपयोग करके इसके विपरीत को समायोजित करने की कोशिश की है? कोड में नंबर पीसीएफ 8574 चिप पर किस पिन को संदर्भित करते हैं, किस बोर्ड पर किस पिन से जुड़ा होता है। I2C बोर्ड पर P3 स्पष्ट रूप से एलसीडी पर बैकलाइट पिन से जुड़ा हुआ है। लेकिन मुझे लगता है कि अन्य पिन किसी तरह गलत हैं। एक मल्टीमीटर का उपयोग करके यह देखने की कोशिश करें कि PCF8574 के P0-P7 पिन एलसीडी हेडर पर किस पिन में जाते हैं।
गेरबेन

2
यद्यपि यह मुद्दा नहीं हो सकता है, आपको एलसीडी पर टांका लगाने वाले पिन हेडर पर ध्यान देना चाहिए, जिस तस्वीर से वे छेद के चारों ओर तांबे को पूरी तरह से कवर नहीं करते दिखाई देते हैं; मैं पहले इन सोल्डर पॉइंट्स को बेहतर बनाने की कोशिश करूंगा।
jfpoilpret

1
@ गेरबेन, डीआरपी। मैंने एक मल्टीमीटर के साथ चिप का परीक्षण किया, हालांकि मैं अभी भी पूरी तरह से भ्रमित हूं। चिप पर पिन 9-12 एलसीडी पर डी 4-डी 7 के अनुरूप है। पिन 6 = ई, 5 = आरडब्ल्यू, और 4 = आरएस। मैं यह पता नहीं लगा सकता कि वास्तव में पिन 7 क्या है। उन मूल्यों का उपयोग करने से मुझे एलसीडी से कोई जवाब नहीं मिला। इसके अलावा, क्या मुझे उन पिंस से 1 घटाना चाहिए? क्योंकि फिर से, सभी डिफ़ॉल्ट कोड्स में पिन 0 = RS है। लेकिन ऐसा नहीं हो सकता, क्योंकि चिप पर पहला पिन A0 (पता) है। असल में, किसी एक पिन को बदलने से या तो बैकलाइट प्रतिक्रिया को मार दिया जाएगा या दूसरी पंक्ति को ब्लॉक वर्णों को दिखाने से रोक दिया जाएगा।
बोर्ट

जवाबों:


3

सबसे पहले, ऐसा लगता है कि ये तार ठीक से जुड़े नहीं हैं:

यहां छवि विवरण दर्ज करें

मैंने पहले एक महिला जम्पर को डिसाइड नहीं किया है, इसलिए यह मुद्दा नहीं हो सकता है। हालाँकि, ऐसा लगता है कि यह एक कारण हो सकता है।

इसके अलावा, आपको उस ट्रिमर को बदलकर कंट्रास्ट को एडजस्ट करने की जरूरत है (नीली चीज जो थोड़े लगती है जैसे उसमें एक पेंच है)। यदि कंट्रास्ट सही तरीके से सेट नहीं किया गया है, तो एलसीडी या तो कुछ भी नहीं दिखाएगा, पाठ का एक धोया हुआ संस्करण या ब्लू बॉक्स। शायद यही कारण है।


जंपर्स ऐसे ही होते हैं, क्योंकि मैं फोटो के लिए बोर्ड ले जाता हूं। इसके अलावा, मैंने पहले से ही ट्रिमर को समायोजित किया है और यह या तो पूर्ण ब्लॉक है या कुछ भी नहीं है।
Bort

3

मैंने सैन्स्मार्ट 20x04 खरीदा और मुझे इसका पता भी बदलना पड़ा 0x3F। मेरा बैकलाइट जम्पर गायब था, I2C बोर्ड के दाईं ओर थोड़ा सा हेडर बैकलाइट पावर प्रदान करता है। मुझे मिला कुछ कोड इसमें शामिल हैं:

lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);

1

मुझे वही समस्या है और मैं इसे केवल एलसीडी 1602 ए के लिए पता बदलकर ठीक करता हूं, जो कि ट्यूटोरियल 0x27 में है लेकिन मेरे डिवाइस में 0x3F है।

शुभ लाभ!


मेरे मामले में भी, इस लाइन को बदलते समय काम किया गया LiquidCrystal_I2C lcd(0x3F,16,2);:। आपका बहुत बहुत धन्यवाद!
स्टीफन

0

जहाँ तक मुझे पता है, पुल-अप प्रतिरोधों को प्रदर्शन के साथ एकीकृत किया जाना चाहिए।

क्या आपने अलग पते की कोशिश की? मेरे पास एक समान है, जो 0x3F पते पर काम करता है। शायद यह मदद करता है।


बोर्ड को "पता 27" के रूप में बेचा गया था, और 27 एकमात्र ऐसा पता है जो सभी पर प्रतिक्रिया करता है। यह वास्तव में फोटो में देखे गए ट्रिमिंग पॉट के ऊपर A1 A2 और A3 पिन को मिला कर वास्तव में अनुकूलन योग्य है।
बर्थ डे

0

इस कोड को बदलें:

LiquidCrystal_I2C lcd(0x26, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

इसके लिए:

LiquidCrystal_I2C lcd(0x26, 2, 1, 0, 4, 5, 6, 7, 8, POSITIVE);

("पॉज़िटिव" से पहले का तर्क 3 से 8 में बदल जाता है)


1
कोई स्पष्टीकरण क्यों? PCF8574 पर कोई P8 नहीं है।
tcurdt

-1

मुझे यकीन है कि यह लिंक आपके लिए उपयोगी होगा, मेरे पास एक ही एलसीडी है और मुझे इस लिंक http://forum.arduino.cc/index.php?topic=128635.0 में दिए चरणों का पालन करते हुए I2C के साथ काम करना पड़ा


1
अपने अन्य उत्तर की तरह, आपके लिंक के 404 हो जाने पर यहां गाइड का सारांश पोस्ट करें।
लॉगऑनब्लैड्स

-2
LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 6, 5, 7, 3, POSITIVE);  // Set the LCD

I2C मॉड्यूल D6-> P5 D5-> P6 (उल्टा) है।


1
क्या आप और अधिक व्याख्या कर सकते हैं?
२:१६

2
कृपया अपनी पोस्ट को संपादित करें और कोड स्वरूपण मार्कडाउन (चार प्रमुख रिक्त स्थान) का उपयोग करके कोड को प्रारूपित करें। मदद के लिए मार्कडाउन मदद देखें । आपको कोड का चयन करके और Ctrl+Kअपने ब्राउज़र को आपके लिए ऐसा करने के लिए दबाकर ऐसा करने में सक्षम होना चाहिए । यदि आप अधिक विवरण में गए तो आपका उत्तर अधिक उपयोगी होगा।
निक गैमन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.