【实例演示】ESP8266+U8g2库,玩转OLED显示
上篇文章,介绍了ESP8266在Arduino IDE中的基础使用方法,本篇,来继续学习OLED显示屏如何使用ESP8266来控制。
1 ESP8266引脚首先来看一下ESP8266的引脚定义,因为本篇需要外接OLED,就要先看看ESP8266具有哪些功能的引脚。
ESP8266的引脚定义如下:
可以看出,ESP8266的功能引脚包括:
3个串口:TXD、RXD
2个SPI接口:MOSI、MISO、SCLK、CS
1个IIC接口:SDA、SCL
多个数字输入/输出接口:D1~D8
1个模拟输入/输出接口:A0
2 OLED简介OLED模块的尺寸多种多样,比较常用的是0.96寸的矩形的,也有其它尺寸的OLED。
此外,屏幕的接口,一般有IIC接口和SPI接口两种。加上电源,IIC接口需要4根线,而SPI接口需要6根线,IIC的通信比SPI通信慢,但4线接线更方便。
本篇使用最为常用的0.96寸的OLED,分辨率128x64,黄蓝双色。
注意这里的双色,不是值一个像素点可以显示两种颜色,而是屏幕的上部1/4只能显示黄色,下部的3/4只能显示蓝色,并且黄色和蓝色之间,不是紧密靠在一起 ...
ESP8266开发-ArduinoIDE安装、配置与使用
ESP8266是一款价格十分亲民的wifi模块,在某宝上一块ESP8266开发板只要10几块钱!可以买来玩玩一些物联网相关的小项目。
ESP8266的开发方式有多种,目前我了解到的有:
使用Arduino IDE开发,沿用Arduino的开发风格,简单易上手
使用ESP8266官方的SDK开发
使用MicroPython开发,沿用Python的编程风格,此方式需要先给板子烧写一个特殊的固件
因为我之前玩过Arduino,而且Arduino编程简单易操作,所以就选择先使用Arduino IDE来玩一玩ESP8266。
1 安装Arduino IDEArduino官网下载IDE:https://www.arduino.cc/en/software,我之前安装的版本是Arduino IDE 1.8.16,目前又有新版本的,可以安装最新的,不过基础功能相差不大。
根据自己使用的平台,点击右侧的下载。
我下载得到arduino-1.8.16-windows.exe安装文件,常规的“下一步”的安装方式安装即可。
安装完之后,打开,可以看到我的软件里已经有了Arduino AVR和ESP82 ...
Linux中CMake的使用4-代码与编译文件单独存放
本篇介绍当源文件与编译文件独立存放时,如何编写CMakeLists.txt。
1只使用一个CMakeLists.txt1.1 目录结构文件目录结构如下,sum.c、sum.h、sub.c、sub.h和main.c的代码内容见前面的文章。
其中sum.h和sub.h放到include这个文件夹中,main.c、sum.c和sub.c放到src这个文件夹中。
在整个工程中,只有一个CMakeLists.txt:
1.2 CMakeLists.txt1234567891011cmake_minimum_required (VERSION 2.8)project (sum_sub_test)include_directories (include)aux_source_directory (src SRC_LIST)add_executable (sum_sub_test ${SRC_LIST})set (EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
最后一句是一个新的知识点:
EXECUTAB ...
Linux中CMake的使用3-不同目录多个源文件
上篇介绍了在同一目录下有多个源文件时如何编写CMakeLists.txt。
本篇继续介绍不同目录下有多个源文件时如何编写CMakeLists.txt
1 有1个独立文件夹1.1 文件目录结构先来看下面这种情况,文件目录结构如下,sum.c、sum.h和main.c的代码内容见前面的文章。
1.2 编写CMakeLists.txt对于这种情况,CMakeLists.txt可以有不同的写法:
写法1首先看第一种写法,如下:
1234567cmake_minimum_required (VERSION 2.8)project (sum_test)include_directories (func)add_executable(sum_test main.c func/sum.c)
这里出现了1个新的命令:include_directories,用来指定头文件的搜索路径
写法2再来看第二种写法,如下:
123456789cmake_minimum_required (VERSION 2.8)project (sum_test)include_directories (func)aux_so ...
Linux中CMake的使用2-同目录下多个源文件
上篇文章介绍了编写CMakeLists.txt的最基础用法——只有一个源文件的情况。
本篇继续介绍,在同一目录下有多个源文件时如何编写CMakeLists.txt。
1 一组文件的情况先来看下面这种情况:除了main.c以外,只多出来一组源文件(1个.c文件+1个.h文件)。
1.1 编写C源文件以一个简单的两数相加为例,代码如下:
main.c
123456789101112#include <stdio.h>#include "sum.h"int main(void){ int a = 1; int b = 2; printf("a=%d, b=%d\n", a, b); printf("a+b=%d\n", sum(a, b)); return 0;}
sum.c
123456#include "sum.h"int sum(int a, int b){ return (a + b);}
sum.h
12345 ...
Linux中CMake的使用1-单个源文件
1 引言linux中进行C/C++开发,一般都是先用编辑器写好代码,然后使用gcc工具来编译程序。
文件数量不多的工程,可以直接敲gcc命令进行编译。对于文件较多的工程,就要使用Makefile来管理代码的编译了。
而手动编写Makefile其实也是具有一定的难度的,更方便的方式是使用更易编写CMake来自动生成Makefile。
2 Linux中安装CMake这里插一句,在Window系统中,许多人也用过CMake,它可以配合集成开发环境如Visual Studio,通过图形化的操作界面,操作CMake图形界面进行代码的编译。
本篇介绍的,在Linux中使用CMake,还用不到图形界面,仍然是文本编辑的方式使用CMake。
CMake在Linux的安装,直接使用命令安装即可:
1sudo apt install cmake
安装完成之后可以查看cmake的版本,我用的是3.10.2
3 编译单个文件的CMake基础示例3.1 编写C源文件首先写一个最简单的hello word程序,hello.c:
1234567#include <stdio.h>int main(v ...
嵌入式Linux-Qt环境搭建
本编介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试。
[TOC]
1 tslib编译tslib之前在测试触摸屏的时候使用过,这里再来记录一下编译过程。
下载tslib库的源码:https://github.com/libts/tslib/tags
将下载的源码拷贝到ubuntu虚拟机中,然后解压:
1tar xvf tslib-1.21.tar.bz2
编译 tslib 的时候需要先在 ubuntu 中安装一些文件:
123sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool
在 ubunt中创建一个名为“tslib”的目录存放编译结果,然后执行以下指令进行编译:
1234./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/xxpcb/myTest/imx ...
VirtualBox虚拟机Ubuntu扩容记
在VirtualBox中使用ubuntu系统,一开始分配的硬盘空间太小,使用一段时间后发现空间不够用了怎么办?
本篇记录自己在使用VirtualBox中的ubuntu系统时,对ubuntu系统的进行磁盘扩容的实际操作记录。
0 起因之前在VirtualBox中安装了ubuntu虚拟机,分配了29G的磁盘容量,最近发现不够用了,就想着如何给它扩充容量。
VirtualBox中,ubuntu虚拟机系统是保存在一个vdi文件中,而我之前又是单独给这个vdi文件在Windows系统中分配了一个30G的磁盘,所以,以我目前的情况,想要为ubuntu扩容,就先要为Window系统中的这个I盘扩容。
1 为Windows系统的磁盘扩容(失败)Window中为磁盘扩容,可以使用Window系统自带的磁盘管理器,从相邻的磁盘中借一些空间。
比如从我目前H盘中借来40G,先将H盘压缩出来40G:
然后就出现了40G的未分配空间:
接着再将这40G空间尝试扩展到ubuntu所在的I盘:
最后一步出现警告提示:你选定的操作会将选定的基本磁盘转换成动态磁盘,如果将磁盘转换成动态,你将无法从这 ...
【i.MX6ULL】驱动开发13--电容触摸驱动实践(下)
上篇文章介绍了电容触摸驱动的编写,包括设备树的修改和驱动程序(IIC驱动+中断+input子系统),并通过将触摸坐标值实时打印出来的方式,对触摸功能进行测试。
本篇,先来介绍一会测试触摸是库——tslib,使用它可以进行图形化的触摸测试。之后,再回头来分析分析触摸协议上报的原理以及通过input子系统上报的数据的具体含义。
[TOC]
1 tslib的使用Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
1.1 tslib库移植首先下载tslib库的源码:https://github.com/libts/tslib/tags
目前最新的是1.22,不过本篇先使用1.21版本
1.1.1 ubuntu上编译tslib将下载的源码拷贝到ubuntu虚拟机中,然后解压:
1tar xvf tslib-1.21.tar.bz2
编译 tslib 的时候需要先在 ubuntu 中安装一些文件
123sudo apt-get install autoconf sudo apt-get inst ...
【i.MX6ULL】驱动开发12--电容触摸驱动实践(上)
上篇文章介绍了LCD屏幕的使用,这个屏幕还有触摸功能,本篇就来介绍LCD的触摸功能的使用。
关于触摸的内容有点多,分为上下两篇进行讲解,本篇先介绍触摸驱动的编写以及将触摸点坐标实时打印出来进行测试,先有一个整体的使用感受,下篇文章再介绍具体的触摸上报协议以及图形化的测试方法。
[TOC]
1 触摸介绍LCD的触摸功能,本质就是显示屏上再叠加一层透明的触摸屏,实现触摸的方式与LCD进行交互。
触摸屏分为电阻触摸屏和电容触摸屏。
电阻触摸屏是一种传感器,其结构是薄膜加上玻璃的结构,两结构相邻的一面上均涂有ITO(一种导电性和透明性很好的)涂层。当触摸操作时,两层结构挤压接触,经由感应器传出相应的电信号,通过运算转化为屏幕上的X、Y值。
电容技术触摸屏CTP(Capacity Touch Panel)是利用人体的电流感应进行工作的。电容屏是一块四层复合玻璃屏,电容式触摸屏就是支持多点触摸的人机交互方式,普通电阻式触摸屏只能进行单一点的触控。
1.1 硬件原理图本篇使用的是野火的7寸电容触摸屏,分辨率和屏幕一样,800x480。触摸驱动芯片我GT911,是IIC接口的芯片。
触摸芯片有四 ...