基于IOT背景下,嵌入式电子相册的设计

基于IOT背景下,嵌入式电子相册的设计

前言:随着物联网技术的不断发展,物联网技术在城市管理、智能交通系统、以及之能家居等领域的应用十分广泛,本文就智慧生活领域中的电子相册展开分享。

一、设计目的

随着文娱活动越来越受年轻人所关注,对美好时光的记录成为当下年轻人的一大生活方式。作为追求个性化、独特化广大年轻人中的一员,对于私人定制电子相册的期望度也十分高。笔者通过设计一项嵌入式电子相册旨在满足当下需求。

二、整体设计

本项目使用粤嵌GC6818试验机及VM虚拟机中的Ubuntu操作系统完成整个流程,系统整体设计思路如图1。

主菜单
电子相册
照片翻页和播放
音乐播放器
音乐切换和播放
视频播放器
视频切换和播放

图1系统整体设计图
(1)硬件清单:粤嵌GC6818试验机整套
(2)软件清单:VM虚拟机、Ubuntu操作系统、Secure CRT7.3(比较稳定)

三、软件设计

1、主函数

#include "color.h"				//显示颜色的头文件
#include "bmp.h"				//显示bmp图片的头文件
#include "ts.h"					//触摸屏的头文件
#include "music.h"				//音乐的头文件
#include "movie.h"				//视频的头文件
	
int main(int argc, char const *argv[])
{
	int ts_x, ts_y;
	char music_path[4][32]={"./1.mp3","./2.mp3","./3.mp3","./4.mp3"};//音乐目录
	char music_pitc[4][32]={"./1.bmp","./2.bmp","./3.bmp","./4.bmp"};//音乐图片目录
	char video_path[2][16]={"./1.mp4","./2.mp4"};                    //视频目录
	char bmp_path[5][32]={"./p1.bmp","./p2.bmp","./p3.bmp","./p4.bmp","./p5.bmp"};//相册目录
	int i=0;
	int j=0;
	int k=0;
	open_lcd_color();			//1、打开显示屏(color)
	open_lcd_bmp();				//1、打开显示屏(bmp)
	open_ts();					//1、打开触摸屏


	show_bmp("./init.bmp");						//2、显示音乐界面图片
	//show_color(0x00ff0000);					//2、显示颜色
	while(1)
	{
		get_ts_xy(&ts_x, &ts_y);	
		show_bmp("./main.bmp");				//2、获取触摸屏坐标
		if(ts_x>0 && ts_x<80 && ts_y>0 && ts_y <50)  // 显示菜单页
		{
			show_bmp("./init.bmp");	
		}
		//===============一、音乐播放器================//
		if(ts_x>280 && ts_x<410 && ts_y>190 && ts_y <310)//===================点击音乐播放器
		{
			printf("=============1、音乐播放器==============\n");
			show_bmp("./music.bmp");	
			while(1)
			{
				get_ts_xy(&ts_x, &ts_y);		//2、获取触摸屏坐标
				if(ts_x>310 && ts_x<480 && ts_y>400 && ts_y <480)//============开始音乐
				{
					exit_music();
					show_bmp("./1.bmp");
					start_music("./1.mp3");
				}
	//=================================列表播放========================================//
				if(ts_x>640 && ts_x<800 && ts_y>0 && ts_y <60)//============第一首
				{
					exit_music();
					show_bmp("./1.bmp");
					start_music("./1.mp3");
				}
				if(ts_x>640 && ts_x<800 && ts_y>61 && ts_y <120)//============第二首
				{
					exit_music();
					show_bmp("./2.bmp");
					start_music("./2.mp3");
				}
				if(ts_x>640 && ts_x<800 && ts_y>121 && ts_y <180)//============第三首
				{
					exit_music();
					show_bmp("./3.bmp");
					start_music("./3.mp3");
				}
				if(ts_x>640 && ts_x<800 && ts_y>181 && ts_y <240)//============第四首
				{
					exit_music();
					show_bmp("./4.bmp");
					start_music("./4.mp3");
				}
//=====================================上一首,下一首====================//
				if(ts_x>500 && ts_x<550 && ts_y>400 && ts_y <480)//=============上一首
				{
					exit_music();
					printf("上一首 \n");
					i--;
					if(i==-1)
					{
						i=3;
					}
					start_music(music_path[i]);
					show_bmp(music_pitc[i]);
				}
				if(ts_x>580 && ts_x<630 && ts_y>400 && ts_y <480)//=============下一首
				{
					exit_music();
					printf("下一首 \n");
					i++;
					if(i==4)
					{
						i=0;
					}
					start_music(music_path[i]);
					show_bmp(music_pitc[i]);
				}
				if(ts_x>650 && ts_x<800 && ts_y>400 && ts_y <480)//=============退出音乐,回到主菜单
				{
					exit_music();
					printf("=============主界面==============\n");
					show_bmp("./main.bmp");
					ts_x = 0;
					ts_y = 0;
					break;
				}
				
				if(ts_x>0 && ts_x<150 && ts_y>400 && ts_y <480)//=============停止音乐
				{
					printf("停止音乐 \n");
					stop_music();
				}
				if(ts_x>160 && ts_x<300 && ts_y>400 && ts_y <480)//===========继续音乐
				{
					printf("继续音乐 \n");
					cont_music();
				}	
			}

		}
		//==============二、视频播放器=================//
		if(ts_x>480 && ts_x<620 && ts_y>190 && ts_y <310) //=====================到视频播放器
		{
			printf("=============2、视频播放器==============\n");
			show_bmp("./video.bmp");
			while(1)
			{
				get_ts_xy(&ts_x, &ts_y);		//2、获取触摸屏坐标

				//1、指定打开视频
				if(ts_x>0 && ts_x<150 && ts_y>400 && ts_y <480)//=================开始播放视频
				{
					printf("开始播放视频 \n");
					start_movie("./1.mp4", 150, 100, 493, 250);
				}

				//2、退出视频
				if(ts_x>0 && ts_x<80 && ts_y>0 && ts_y <50)//=================退出视频播放,回到主菜单
				{
					send_cmd_pipe(1);
					printf("=============主界面==============\n");
					show_bmp("./main.bmp");
					ts_x = 0;
					ts_y = 0;
					break;
				}
				//3、视频暂停/继续
				if(ts_x>350 && ts_x<450 && ts_y>400 && ts_y <480)//=================停止视频/继续视频
				{
					send_cmd_pipe(2);
					printf("视频暂停/继续\n");
				}
				if(ts_x>650 && ts_x<725 && ts_y>400 && ts_y <480)//==============调大音量
				{
					send_cmd_pipe(3);
					printf("音量加10\n");
				}
				if(ts_x>725 && ts_x<800 && ts_y>400 && ts_y <480)//===============调小音量
				{
					send_cmd_pipe(4);
					printf("音量减10\n");
				}
				if(ts_x>250 && ts_x<350 && ts_y>400 && ts_y <480)//=============快退5s
				{
					send_cmd_pipe(5);
					printf("快退5秒\n");
				}
				if(ts_x>450 && ts_x<550 && ts_y>400 && ts_y <480)//=============快进5s
				{
					send_cmd_pipe(6);
					printf("快进5秒\n");
				}
				if(ts_x>150 && ts_x<250 && ts_y>400 && ts_y <480)//=============上一个视频
				{
					send_cmd_pipe(1);
					usleep(500000);
					printf("上一个视频 \n");
					j--;
					if(j==-1)
					{
						j=1;
					}
					start_movie(video_path[j], 150, 100, 493, 250);
				}
				if(ts_x>550 && ts_x<650 && ts_y>400 && ts_y <480)//=============下一个视频
				{
					send_cmd_pipe(1);
					usleep(500000);
					printf("下一个视频 \n");
					j++;
					if(j==2)
					{
						j=0;
					}
					start_movie(video_path[j], 150, 100, 493, 250);
				}
			}

		}
		if(ts_x>90 && ts_x<210 && ts_y>190 && ts_y <310)//======================进入电子相册
		{
			printf("=============3、电子相册==============\n");
			show_bmp("./p1.bmp");
			while(1){
				get_ts_xy(&ts_x, &ts_y);
				if(ts_x>0 && ts_x<400 && ts_y>50 && ts_y <480 )//点击左半边 ,切换上一张图片
				{
					printf("切换上一张 \n");
					k--;
					if (k==-1)
					{
						k=4;
					}
					show_bmp(bmp_path[k]);
				}
				if(ts_x>400 && ts_x<800 && ts_y>0 && ts_y <480)//点击右半边 ,切换下一张图片
				{
					printf("切换下一张 \n");
					k++;
					if (k==5)
					{
						k=0;
					}
					show_bmp(bmp_path[k]);
				}
				if(ts_x>0 && ts_x<80 && ts_y>0 && ts_y <50)//点击左上角,退出,回到主界面
				{
					printf("=============主界面==============\n");
					show_bmp("./main.bmp");
					ts_x = 0;
					ts_y = 0;
					break;
				}
			}
		}
		
	}
	close_lcd_color();			//3、关闭显示屏(color)	
	close_lcd_bmp();			//3、关闭显示屏(bmp)
	close_ts();					//3、关闭触摸屏

	return 0;
}

tips:在主函数中,定义了#include “color.h”,显示颜色的头文件定义#include “bmp.h” ,显示bmp图片的头文件;定义include “ts.h” ,作为触摸屏的头文件;定义include “music.h” ,作为音乐的头文件,定义#include “movie.h” ,作为视频的头文件。整体实现主菜单的设计,进入主菜单实现对相册、音乐播放器、视频播放器的选择。此外,在相册中可以实现照片触摸更换;在音乐播放器中实现歌曲轮询,切换和暂停;在视频播放器中实现视频轮询,切换和暂停。**

四、测试视频

项目整体运行效果如下视频所示。

五、总结

以上就是今天要分享的内容,本文仅仅简单介绍了基于IOT背景下,嵌入式电子相册的设计,具体代码已经在gitee仓库开源(https://gitee.com/nqqdz/electonic-picture.git),旨在与各位同学一起交流,提升技术。作为一位死磕嵌入式的小白,希望大家能在此过程中不吝赐教,如有问题,请大家批评指正。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Looking forward to a bright

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值