LCD Liquid Crystal Readout of 1 segment

Dear all,
right now I am trying to read out 1 segment of a liquid crystal LCD segment.
This LCD is part of a remote control for my window shutters.

I found already out that the dedicated segment and the according COM line use a digital frequency of ca. 150Hz to get rid of the DC-Bias.

I need the status of the segment to compute it in an Arduino Uno.
But I have problems to read it correctly into the Arduino.

The Uno Board (5V) supplies the remote with the dedicated 3.3V pin (The remote is usually running on 3V)
The COM and Segment Pins are with 2 wires directly connected to 2 GPIO Pins of the Uno board.
No PullUp/Down used.

In SW I (hope that I) used some sort of XOR for SEG and COM.

Here my code:

int Com3Pin = 8;

int Seg1Pin = 11;

int Seg1_Diff_Com3;

void setup() {

pinMode(Com3Pin, INPUT);

pinMode(Seg1Pin, INPUT);

Serial.begin(9600);

Serial.println("Setup completed.");

}

void loop() {

int Seg1 = digitalRead(Seg1Pin);

int Com3 = digitalRead(Com3Pin);

if (Seg1 !=Com3){

Seg1_Diff_Com3=1;

} else {

Seg1_Diff_Com3=0;

}

Serial.println(Seg1_Diff_Com3);

delay(1000);

}

When I look on the serial terminal the computed Difference signal is strongly fluctuating and not stable.

Any ideas?

Greetings,
Jens

I am a step further.
I bought an handheld oscilloscope and the signal looked different than expected.
The attached screenshots show the Segment line enabled and disabled.
The COM signal looks btw very similar to the pure square signal picture.

Any ideas how I can "convert" this into an µC compatible signal?
My first idea is to use a OPAMP comparator.
Any better ideas?

Greetings,
Jens

Dear all, I found a solution for my problem.
I read in the signal via analog_in.
If the segment is activated then analog values bigger "500" occur.
If the segment is not activated then not.

For the scannig of the signal I wrote a small function. (I'm not this familiar with programming thus I worked with global variables)

The function delivers a stable "1" when segment activated and stable "0" when deactivated.
Due to the "hopefully" high impedance of the D0 input the segment should not see a DC bias to not be destroyed over the time.

void loop() {
  Position1();
Serial.println(DigitsActive);
 delay(200);
}


void Position1() {
 DigitsActive=0;
  for (int i = 0; i < 20; i++) 
    {
    int AnalogInputValue = analogRead(A0);
   //Serial.println(AnalogInputValue);
    if (AnalogInputValue > 500) 
    {
      DigitsActive=1; 
    } 
    delay(1);
    }
}

Greetings,
Jens

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.