计算机显示器使用的分辨率 :
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的算法
>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)