按照惯例,先po出效果图,使用AliOS-Things的LCD来显示学校LOGO
效果如图中所示。
1 环境搭建
搭建环境时,需要的软件包括:VSCode安装包、STlinkDrv等,
下载链接:https://pan.baidu.com/s/1nCNW4lKP7kBmAV6V5iq9kA 提取密码:c5oi
(1)首先安装VSCode
VSCode安装成功后,安装扩展alios-stdio
提示我们安装Python和pip
(2)安装Python2.7.15
将Python添加进系统文件夹
Python环境变量配置
(3)安装pip
打开命令行command,切换到pip的解压路径
(4)安装AOS-cube
重启VACode,自动安装
2. 开始编程
(1)图片显示部分的代码为
/*
* Copyright (C) 2015-2017 Alibaba Group Holding Limited
*/
#include <aos/aos.h>
#include "lvgl/lvgl.h"
#include <k_api.h>
#include "sensor_display.h"
#include <hal/soc/soc.h>
#include <stdlib.h>
LV_IMG_DECLARE(AliOS_Things_logo);
#define MAX_MSG_BYTES 100
#define MAX_NUM_BYTES 20
#define MAX_pos 170
#define MIN_pos 0
#define MAX_angle 180;
#define MIN_angle 0;
#define PI 3.14159265
#define GPIO_LED_IO 22
#define GPIO_TRIGGER_IO 67
#define GPIO_INPUT_IO 75
char msg_buffer[MAX_MSG_BYTES];
char number_buf[MAX_NUM_BYTES];
int flag;
int loop = 1;
unsigned int posX;
int screenX;
int screenY;
signed short Xscreen;
signed short Yscreen;
gpio_dev_t input;
/* pressed flag */
int button_pressed = 0;
lv_obj_t *scr = NULL;
lv_obj_t *chart1 = NULL;
lv_obj_t *label = NULL;
lv_obj_t *labe2 = NULL;
lv_obj_t *labe3 = NULL;
aos_timer_t refresh_timer;
float x=120.0;
float y=120;
float step=1.0;
float k=0.5;
static void sensor_refresh_task(void *arg);
static void refresh_string(void);
void button_handler(void *arg){
button_pressed = 1;
}
void app_init(void)
{
input.port = GPIO_INPUT_IO;
/* set as interrupt mode */
input.config = IRQ_MODE;
/* configure GPIO with the given settings */
hal_gpio_init(&input);
/* gpio interrupt config */
hal_gpio_enable_irq(&input, IRQ_TRIGGER_BOTH_EDGES, button_handler, (void *) GPIO_INPUT_IO);
aos_timer_new(&refresh_timer, sensor_refresh_task, NULL, 50, 1);
while(1){
if(button_pressed == 1){
button_pressed = 0;
}
}
}
static void sensor_refresh_task(void *arg)
{
static int task1_count = 0;
static lv_obj_t *img_src;
if (task1_count == 0) {
if (0 == button_pressed) {
scr = lv_scr_act();
img_src = lv_img_create(scr, NULL); /*Crate an image object*/
lv_img_set_src(img_src, &AliOS_Things_logo); /*Set the created file as image (a red fl ower)*/
lv_obj_set_pos(img_src, -5, 90); /*Set the positions*/
lv_obj_set_drag(img_src, true);
}
}
if (1 == button_pressed) {
lv_obj_clean(scr);
lv_obj_del(img_src);
/*Use ASCII and Unicode letters*/
static lv_style_t style1;
label = lv_label_create(scr, NULL);
lv_style_copy(&style1, &lv_style_plain);
style1.text.color = LV_COLOR_RED;
lv_label_set_style(label, &style1);
refresh_string();
task1_count++;
printf("button_pressed %d :",button_pressed);
}
}
static void refresh_string(void)
{
strcpy(msg_buffer, "HERO@PI ");
lv_label_set_text(label, msg_buffer);
if(x>=170||x<=0)
{
step=-step;
k=-k;
}
if(y>=217||y<=0)
{
k=-k;
}
x=x+step;
y=y+step*k;
// if(button_pressed == 1)
// {
// x=x+step;
// y=y+step*k;
// }
lv_obj_set_pos(label, x, y);
}
2. 图片编码部分的代码
图片编码使用的时Image2LCD软件进行编码