Code Monkey home page Code Monkey logo

waveshare-dtoverlays's Introduction

WaveShare SpotPear 3.2" and 3.5/4.0" LCD Device Tree Overlays for the Raspberry PI

This is Device Tree Overlays of WaveShare SpotPear 3.2" TFT LCD and WaveShare SpotPear 3.5" TFT LCD for the Raspberry PI and PI 2 using notro's FBTFT driver.

Note that the waveshare 3.5/4.0" lcd's overlay is almost same with JBTek overlay.

Installation

Update: The fbtft drivers have been absorbed into the official linux kernel tree. Step 1 can be skipped.

1.) Follow the steps on notro's wiki for installing the fbtft driver on your pi/pi2 (Your PI will not boot with the LCD attached until the right overlay is specified in /boot/config.txt)

2.) Clone my repo onto your pi

git clone https://github.com/swkim01/waveshare-dtoverlays.git

3.) According to your LCD's type, copy the overlay file waveshare32b-overlay.dtb or waveshare35b-overlay.dtb to /boot/overlays as root

In case of waveshare 3.2" LCD

sudo cp waveshare-dtoverlays/waveshare32b-overlay.dtb /boot/overlays/

or if linux 4.4 kernel or newer,

sudo cp waveshare-dtoverlays/waveshare32b-overlay.dtb /boot/overlays/waveshare32b.dtbo

In case of waveshare 3.5/4" LCD

sudo cp waveshare-dtoverlays/waveshare35a-overlay.dtb /boot/overlays/

or if linux 4.4 kernel or newer,

sudo cp waveshare-dtoverlays/waveshare35a-overlay.dtb /boot/overlays/waveshare35a.dtbo

4.) Specify this overlay file in your /boot/config.txt

dtoverlay=waveshare32b

or

dtoverlay=waveshare35a

You can configure some parameters of the lcd module like this:

dtoverlay=waveshare32b:rotate=270
dtoverlay=waveshare35a:rotate=90,swapxy=1

5.) reboot your raspberry pi

After then, you need to calibrate touch position.

Touch Calibration

Since now x server uses libinput to handle input devices instead of evdev, there are two method to calibrate/coordinate touch screen.

1.) One is to use coordination transformation matrix. You can confirm the transformation matrix property of the input device by following commands.

$ xinput list
$ xinput list-props "ADS7846 Touchscreen"

This is coordinate transformation matrix that transform from input coordinate(x, y, z) to output coordinate(X, Y, Z).

⎡ 1 0 0 ⎤
⎜ 0 1 0 ⎥
⎣ 0 0 1 ⎦

Thus to convert coordinates, you have to add the following code within the section of touchscreen in /usr/share/X11/xorg.conf.d/99-callibration.conf or 40-libinput.conf.

  • in case of rotating left (counterclockwise 90 degree),

      ⎡ 0 -1 1 ⎤ 
      ⎜ 1  0 0 ⎥ 
      ⎣ 0  0 1 ⎦ 
    
     Option "TransformationMatrix" "0 -1 1 1 0 0 0 0 1"
    

    or execute the following code.

     xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
    
  • in case of rotating right (clockwise 90 degree),

      ⎡ 0 1 0 ⎤ 
      ⎜-1 0 1 ⎥ 
      ⎣ 0 0 1 ⎦ 
    
     Option "TransformationMatrix" "0 1 0 -1 0 1 0 0 1"
    

    or execute the following code.

     xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
    
  • in case of inverting rotate (clockwise 180 degree),

      ⎡-1  0 1 ⎤ 
      ⎜ 0 -1 1 ⎥ 
      ⎣ 0  0 1 ⎦ 
    
     Option "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"
    

    or execute the following code.

     xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
    
  • in case of inverting x,

      ⎡-1 0 1 ⎤ 
      ⎜ 0 1 1 ⎥ 
      ⎣ 0 0 1 ⎦ 
    
     Option "TransformationMatrix" "-1 0 1 0 1 0 0 0 1"
    

    or execute the following code.

     xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' -1 0 1 0 1 0 0 0 1
    
  • in case of inverting y,

      ⎡ 1  0 0 ⎤ 
      ⎜ 0 -1 1 ⎥ 
      ⎣ 0  0 1 ⎦ 
    
     Option "TransformationMatrix" "1 0 0 0 -1 1 0 0 1"
    

    or execute the following code.

     xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 1 0 0 0 -1 1 0 0 1
    
  • in case of swapping x and y,

      ⎡ 0 1 0 ⎤ 
      ⎜ 1 0 0 ⎥ 
      ⎣ 0 0 1 ⎦ 
    
     Option "TransformationMatrix" "0 1 0 1 0 0 0 0 1"
    

    or execute the following code.

     xinput set-prop 'ADS7846 Touchscreen' 'Coordinate Transformation Matrix' 0 1 0 1 0 0 0 0 1
    

2.) The other method is to reuse evdev. The detailed step is as follows.

  • Install evdev package.
$ sudo apt-get install xserver-xorg-input-evdev
  • Make sure that /etc/X11/xorg.conf.d is empty.
  • Modify /usr/share/X11/xorg.conf.d/40-libinput.conf in the last section change the driver to evdev.
Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
EndSection
  • Calibrate touchscreen as to FBTFT wiki and/or make /usr/share/X11/xorg.conf.d/99-ads7846-cal.conf.

waveshare-dtoverlays's People

Contributors

horsetailfiddlehead avatar swkim01 avatar xingrz avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.