树莓派3 B, HDMI连接Dell显示器, 能看到开机时跑的数据,但是没有图形界面。 3.5寸显示器分辨率太低。

树莓派3 B, HDMI连接Dell显示器, 能看到开机时跑的数据,但是没有图形界面。 3.5寸显示器分辨率太低。,第1张

在Windows下,进入已写入树莓派系统的SD卡,找到configtxt(最好备份一下这个)。建议,不管你是什么显示器,或者高清电视机,最好在没显示的情况,请将configtxt 中的分辨率调低一些,不要老想着,我的显示设备支持1080p,就非得一步到位。。。建议从下面的低分辨率尝试开始:
计算机显示器使用的分辨率 :
hdmi_mode=4 640x480 60Hz
hdmi_mode=9 800x600 60Hz
hdmi_mode=16 1024x768 60Hz
CEA规定的电视规格分辨率。:
hdmi_mode=2 480p 60Hz
hdmi_mode=4 720p 60Hz
另外:若直接使用的是HDMI线接显示设备,请在configtxt中添加一条:
hdmi_ignore_edid=0xa5000080

这个是命令树莓派不检测HDMI设备的任何信息,只按照我们指定的分辨率输出。 这样就不会自动检测显示设备的分辨率,而避免掉很多可能不显示的造成因素,就会按照你自己设置的分辨率显示。分辨率也按照上面列出的尝试,修改configtxt 中hdmi_mode=x 的”x“值。

视频里有校正的功能,自己可以找一下,就是屏幕中间一个大方框,左上和右下各一个标记,把那两个标记缩到显示范围内,并且保证中间的方框是正方形的就ok了。如果看不到左上和右下的标记,就用鼠标盲拖一下吧,那个不是没有,只是超出了显示范围而已。

可选:HDMI输出,35mm视频输出,其它转接方式,以及 官方显示屏
HDMI最方便,直接连接即可

用35mm视频输出可以连接CRT旧电视,接口集成在音频口,所以直接在音频口接耳机会发现底噪很大,不过社区正在 改进 这点
可以直接淘宝购买Zune的RCA Cable,或者DIY接口定义一致的线材,定义参考下图,版权归属原作者 MATT :

或Windows上打开 configtxt

前面的 # 删掉,变为:
sdtv_mode=2

配合老电视和 Xbox 360手柄或8位堂完全仿红白机的 FC30 手柄怀旧FC是相当不错的选择,系统方面可以选择 Lakka , RetroPie , recalbox-os
HDMI可以转接VGA,但 多篇 文章 都建议一定用有源的HDMI转VGA,也就是可以连接电源的,否则会烧毁树莓派

修改 configtxt 文件,添加:
hdmi_force_hotplug=1hdmi_group=2hdmi_mode=16hdmi_drive=2

hdmi_mode=16为设置1024x768 60Hz 其它分辨率可参考官方 configtxt说明
一些有源HDMI转VGA的选择:
白色款1 , 白色款2 , 黑色款1 , 黑色款2 , Moto ,(似乎这款最便宜,需要另外配一个Micro HDMI母对HDMI公,比如 这个 )
Lapdock 也可以连接Moto Lapdock(需要一个Micro HDMI转HDMI 母转公用作视频输出,比如 这个 ,一个USB 20 A公对MICRO B母作数据传输(Lapdock的键盘及USB口设备),比如 这个 )或者 NexDock 当笔记本

Webtop

Lapdock

Lapdock

RPi

RPi

Micro HDMI female to HDMI male(Video)

Micro USB female to USB 20 male(Data)

如果用Moto Lapdock的话,可能发现没有声音,需要作以下改动:
sudo nano /boot/configtxt

找到:
hdmi_drive=2

去掉前面的‘#’使其生效
另外Lapdock的音量键需配置才能在Raspbian上使用
sudo nano ~/config/openbox/lxde-pi-rcxml

使用 CTRL + w 搜索 keyboard
定位到:
<keyboard>

添加:
<keybind key="XF86AudioLowerVolume"> <action name="Execute"> <command>amixer set PCM 250-</command> </action> </keybind> <keybind key="XF86AudioRaiseVolume"> <action name="Execute"> <command>amixer set PCM 250+</command> </action> </keybind>

保存 CTRL + o 退出 CTRL + x
之后在Pi的终端内运行:
openbox --reconfigure

Nokia 5510/3310 LCD 这块屏幕的尺寸约15寸,分辨率为84x48,不论字体采用8x8还是6x12显示的内容都很有限,而且因为是拆机屏,质量难以保证 诺基亚5510/3310的液晶模块controller一般为PCD8544,接口为 SPI

然后通过:
gpio readall

查找树莓派上对应的端口,得到:
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 33v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO 7 | IN | 1 | 7 || 8 | 1 | ALT5 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT5 | RxD | 16 | 15 | | 17 | 0 | GPIO 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO 1 | 1 | 18 | | 27 | 2 | GPIO 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO 3 | IN | 0 | 15 || 16 | 1 | OUT | GPIO 4 | 4 | 23 | | | | 33v | | | 17 || 18 | 1 | OUT | GPIO 5 | 5 | 24 | | 10 | 12 | MOSI | ALT0 | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | ALT0 | 0 | 21 || 22 | 1 | OUT | GPIO 6 | 6 | 25 | | 11 | 14 | SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | OUT | CE1 | 11 | 7 | | 0 | 30 | SDA0 | IN | 1 | 27 || 28 | 1 | IN | SCL0 | 31 | 1 | | 5 | 21 | GPIO21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO22 | IN | 1 | 31 || 32 | 0 | IN | GPIO26 | 26 | 12 | | 13 | 23 | GPIO23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO24 | IN | 0 | 35 || 36 | 0 | IN | GPIO27 | 27 | 16 | | 26 | 25 | GPIO25 | IN | 0 | 37 || 38 | 0 | IN | GPIO28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

对照 BCM Physical 栏,依次找到连线表内的对应端口
启用 SPI
sudo nano /boot/configtxt

加入:
dtparam=spi=on

重启生效
这块单色LCD可以通过 FBTFT 进行console显示,这样在终端里能做的事用它都可以做到
由于Linux kernel staging tree已经加入FBTFT,所以不需额外安装
终端显示:
sudo modprobe fbtft_device name=nokia3310

dmesg 会显示:
[ 52092954] fbtft: module is from the staging directory, the quality is unknown, you have been warned[ 52098978] fbtft_device: module is from the staging directory, the quality is unknown, you have been warned[ 52101017] fbtft_device: SPI devices registered:[ 52101040] fbtft_device: spidev spi00 500kHz 8 bits mode=0x00[ 52101053] fbtft_device: spidev spi01 500kHz 8 bits mode=0x00[ 52101062] fbtft_device: 'fb' Platform devices registered:[ 52101092] fbtft_device: soc:fb id=-1 pdata no[ 52101132] fbtft_device: Deleting spi00[ 52101429] spi spi00: setting up native-CS0 as GPIO 8[ 52101544] fbtft_device: GPIOS used by 'nokia3310':[ 52101555] fbtft_device: 'reset' = GPIO25[ 52101564] fbtft_device: 'dc' = GPIO24[ 52101572] fbtft_device: 'led' = GPIO23[ 52101580] fbtft_device: SPI devices registered:[ 52101592] fbtft_device: spidev spi01 500kHz 8 bits mode=0x00[ 52101603] fbtft_device: fb_pcd8544 spi00 400kHz 8 bits mode=0x00[ 52113572] fb_pcd8544: module is from the staging directory, the quality is unknown, you have been warned[ 52253490] graphics fb1: fb_pcd8544 frame buffer, 84x48, 7 KiB video memory, 0 KiB DMA buffer memory, fps=20, spi00 at 0 MHz

lsmod 会显示:
Module Size Used byfb_pcd8544 3048 0 fbtft_device 27354 0 fbtft 27484 2 fb_pcd8544,fbtft_devicesyscopyarea 2773 1 fbtftsysfillrect 3299 1 fbtftsysimgblt 1921 1 fbtftfb_sys_fops 1157 1 fbtft

启用终端:
con2fbmap 1 1

(如果遇到屏幕正面看是black screen,在别的角度可以看到文字的话,这和屏幕本身连接方式有关,其液晶与电路板是用导电胶连接的,可能没有充分接触,稍微压一下边框应该可以正常显示;如果LED闪得厉害,多半是屏幕有问题,建议找卖家换一个)

树莓派(Linux 系统)触摸屏翻转显示以及触摸翻转

问题:未使用的Pi官方屏幕,所以使用HDMI屏幕显示的时候,显示旋转的同时,触摸没有旋转

目的:旋转屏幕显示的同时,使得触摸也跟随旋转

*** 作总流程:

    旋转90度 *** 作

 翻转显示:

 1sudo nano /boot/configtxt

 2在文件末尾加入

 display_rotate=0

 display_rotate=1   //90°

 display_rotate=2   //180°

 display_rotate=3   //270°

 ctrl + o 保存文档 重启即可。

 注:以下 *** 作皆为SSH *** 作,所以每条指令前都加了DISPLAY=:0,如果本机 *** 作删掉即可。

 1安装xinput

 sudo apt-get install xinput

 2列出所有输入设备信息 远程 *** 作时,使用xinput指令需要加入DISPLAY=:0

 DISPLAY=:0 xinput --list

 3列出目标设备属性

 DISPLAY=:0 xinput --list-props 7

 4旋转触摸的坐标轴

 1)所以先交换x、y轴

 DISPLAY=:0 xinput --set-prop '7' 'Evdev Axes Swap' 1

 2)然后反转y轴

 DISPLAY=:0 xinput --set-prop '7' 'Evdev Axis Inversion' 0 1

显示旋转修改之后需要重启。而触摸旋转不需要重启。

详细 *** 作方法: 

1安装xinput

 sudo apt-get install xinput

 描述:

 xinput - utility to configure and test X input devices  

 xinput-用于配置和测试X输入设备的实用程序

 xinput is a utility to list available input devices,

 xinput是一个实用程序,可以列出可用的输入设备、

 query information about a device and change input device settings

 关于设备的查询信息和更改输入设备设置

2列出所有输入设备信息

 xinput --list

 如果远程 *** 作记得在命令前加DISPLAY=:0

得到以下信息:

 pi@NTGAGE:~ $ DISPLAY=:0 xinput --list

⎡ Virtual core pointer                          id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]

⎜   ↳ Logitech USB Optical Mouse                id=6    [slave  pointer  (2)]

⎜   ↳ WaveShare WaveShare Touchscreen           id=7    [slave  pointer  (2)]

⎣ Virtual core keyboard                         id=3    [master keyboard (2)]

    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]

    ↳ Logitech USB Keyboard                     id=8    [slave  keyboard (3)]

    ↳ Logitech USB Keyboard                     id=9    [slave  keyboard (3)]

3列出目标设备属性

 由于所使用的触摸屏幕是微雪7寸屏幕,由以上信息可以得到微雪的触摸屏对应的ID为7

所以,接下来看这款输入设备的属性,

pi@NTGAGE:~ $ DISPLAY=:0 xinput --list-props 7

Device 'WaveShare WaveShare Touchscreen':

        Device Enabled (115):   1

        Coordinate Transformation Matrix (116): 1000000, 0000000, 0000000, 0000000, 1000000, 0000000, 0000000, 0000000, 1000000

        Device Accel Profile (240):     0

        Device Accel Constant Deceleration (241):       1000000

        Device Accel Adaptive Deceleration (242):       1000000

        Device Accel Velocity Scaling (243):    10000000

        Device Product ID (244):        3823, 5

        Device Node (245):      "/dev/input/event3"

        Evdev Axis Inversion (246):     0, 0

        Evdev Axis Calibration (247):   <no items>

        Evdev Axes Swap (248):  0

        Axis Labels (249):      "Abs MT Position X" (267), "Abs MT Position Y" (268), "Abs MT Pressure" (269), "None" (0), "None" (0), "None" (0)

        Button Labels (250):    "Button Unknown" (233), "Button Unknown" (233), "Button Unknown" (233), "Button Wheel Up" (121), "Button Wheel Down" (122)

        Evdev Scrolling Distance (251): 0, 0, 0

        Evdev Middle Button Emulation (252):    0

        Evdev Middle Button Timeout (253):      50

        Evdev Third Button Emulation (254):     0

        Evdev Third Button Emulation Timeout (255):     1000

        Evdev Third Button Emulation Button (256):      3

        Evdev Third Button Emulation Threshold (257):   20

        Evdev Wheel Emulation (258):    0

        Evdev Wheel Emulation Axes (259):       0, 0, 4, 5

        Evdev Wheel Emulation Inertia (260):    10

        Evdev Wheel Emulation Timeout (261):    200

        Evdev Wheel Emulation Button (262):     4

        Evdev Drag Lock Buttons (263):  0

 这块屏幕正常显示和触摸的信息如上。

 如果执行到这一步,发现并没有以上的Evdev等属性项,请跳转第2种方法。

 现在需要达到的目的是在屏幕显示反转的同时,使得触摸也随显示翻转。

 屏幕显示为翻转90度。/boot/configtxt设置为display_rotate=1

 上述信息中Evdev Axis Inversion 项是每条轴的旋转设置项,后面第一个参数是x,第二个参数是y

 Evdev Axes Swap项对应的是两条轴的交换。

 0为不翻转,1为翻转 

 例如。x轴原本是朝向右的,当把Evdev Axis Inversion的第一个参数

 设置为1,即x轴朝向左。

4旋转触摸的坐标轴

 现在目的是要触摸旋转90度,从坐标轴理解:

 即目的x轴正向为初始y轴的反向。目的y轴的正方向为初始x轴的正向。

 1)所以先交换x、y轴

 DISPLAY=:0 xinput --set-prop '7' 'Evdev Axes Swap' 1

 2)然后反转y轴

 DISPLAY=:0 xinput --set-prop '7' 'Evdev Axis Inversion' 0 1

这样即可完成触摸旋转90度。若要旋转其他角度,推理一下即可。

显示旋转修改之后需要重启。而触摸旋转不需要重启。

第二种方法

 如果查询到的信息如下

 DISPLAY=:0 xinput --list-props 6

Device 'WaveShare WaveShare Touchscreen':

        Device Enabled (114):   1

        Coordinate Transformation Matrix (115): 1000000, 0000000, 0000000, 0000000, 1000000, 0000000, 0000000, 0000000, 1000000

        libinput Calibration Matrix (246):      0000000, 1000000, 0000000, -1000000, 0000000, 1000000, 0000000, 0000000, 1000000

        libinput Calibration Matrix Default (247):      1000000, 0000000, 0000000, 0000000, 1000000, 0000000, 0000000, 0000000, 1000000

        libinput Send Events Modes Available (248):     1, 0

        libinput Send Events Mode Enabled (249):        0, 0

        libinput Send Events Mode Enabled Default (250):        0, 0

        Device Node (251):      "/dev/input/event0"

        Device Product ID (252):        3823, 5

 可以看到该驱动方式采用的是libinput,

 查看/usr/share/X11/xorgconfd/目录下是否有40-libinputconf这个文件。

 无 则需要安装 

 sudo apt-get install xserver-xorg-input-libinput 

 下一步安装完成后ls一下,就可以看到在/usr/share/X11/xorgconfd/目录下存在该文件,

 下一步复制该文件到/etc/X11/xorgconfd/目录下。

 一开始xorgconfd这个目录在/etc/X11可能没有,需要自己创建。

 sudo mkdir xorgconfd

 下一步复制到xorgconfd 目录下即可。

 sudo cp /usr/share/X11/xorgconfd/40-libinputconf /etc/X11/xorgconfd/

 下一步进入/etc/X11/xorgconfd/目录下修改40-libinputconf 文件

 cd /etc/X11/xorgconfd/

 sudo nano 40-libinputconf

 找到touchscreen section

 Section "InputClass"

        Identifier "libinput touchscreen catchall"

        MatchIsTouchscreen "on"

        MatchDevicePath "/dev/input/event"

        Driver "libinput"

 EndSection

 添加一行  Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1 

 结果为

 Section "InputClass"

        Identifier "libinput touchscreen catchall"

        Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1

        MatchIsTouchscreen "on"

        MatchDevicePath "/dev/input/event"

        Driver "libinput"

EndSection

然后重启生效

 这样的修改也是同样修改为翻转90度,如果需要修改为其他角度,请参考libinput的算法

  >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13379828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存