手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Arduino自制模型搭建GPS测速仪工具

时间:2024-10-12 17:59:30

1、第一,我们先了解一下它原理吧原理:将地图数据依据瓦片算法存储在SD卡中,通过串口获取GPS定位信息并从中解析出经纬度坐标,依据经纬度坐标读取相应地图数赍铈于脏据显示在12864液晶模块上,同时显示定位坐标点。1. 地图存储算法——瓦片系统(Maps Tile System)本制作采用的地图数据和地图存储算法来源于微软的bing maps并做了相应修改,具体可参考:Bing Maps Tile System[1*]Virtual Earth Tile Image URI 参数解析Goolge and Microsoft Map Url Parameters在瓦片系统中地图采用金字塔式的分层存储结构,不同层具有不同级别的地图分辨率(地图精细程度),每一层地图被分割成等像素大小(256X256)的瓦片,算法要解决的问题就是给定经纬度坐标和缩放级别(层索引)得到具体相应的瓦片编号。在连接[1*]的最后有算法实现的代码可共参考。2. 针对12864液晶模块的设计12864液晶模块是128像素宽64像素高的单色液晶显示模块,本制作为了适应模块显示做出了两个设计。

Arduino自制模型搭建GPS测速仪工具
Arduino自制模型搭建GPS测速仪工具

2、第二,搭建测试。12864液晶模块是128像素宽64像素高的单色液晶显示模块,本制作为了适应模块显示做出了两个设计。1). 将256X256像素的瓦片裁切成128X64像素大小的8份 子瓦片2). 通过阈值方法将8位png索引图像(bing maps 的道路数据)转换成二进制地图数据文件,为了能够显示原图中的文字信息,采用多阈值提取求或方法提取原地图中背景、地物和标注文字数据,由于标注文字和背景之间的扰动,提取效果有待改进。效果如下:

Arduino自制模型搭建GPS测速仪工具

3、第三,代码程序。static void write_command(unsigned char Co罪焐芡拂mmand_value){digitalWrite(CS, LOW);digitalWrite(DC, LOW);DATAPORT2 = (DATAPORT2 & DATA1_MASK) | (Command_value & DATA2_MASK);DATAPORT1 = (DATAPORT1 & DATA2_MASK) | (Command_value & DATA1_MASK); // top 6 bitsdigitalWrite(CS, HIGH);}/*********************************************** // Write Data**********************************************/static void write_Data(unsigned char Data_value){digitalWrite(CS, LOW);digitalWrite(DC, HIGH);DATAPORT2 = (DATAPORT2 & DATA1_MASK) | (Data_value & DATA2_MASK);DATAPORT1 = (DATAPORT1 & DATA2_MASK) | (Data_value & DATA1_MASK); // top 6 bitsdigitalWrite(CS, HIGH);}/********************************************* // Draw Picture********************************************/static void drawPicFromFlash(uint8_t x0,uint8_t y0,uint8_t w,uint8_t h,const PROGMEM char *c) {digitalWrite(DC, LOW);//solve a bug of write_command defore write_datawrite_command(0x15); //set column addresswrite_command(x0); //column address start 00write_command(x0+w-1); //column address end 95write_command(0x75); //set row addresswrite_command(y0); //row address start 00write_command(y0+h-1); //row address end 63unsigned char k,i;for(k=0;k<h;k++){ for(i=0;i<w;i++) { write_Data(pgm_read_byte(c++)); write_Data(pgm_read_byte(c++)); }}}/********************************************* // Fill color********************************************/static void fill_color (uint8_t startx,uint8_t endx,uint8_t starty,uint8_t endy,unsigned char dat1,unsigned char dat2) {digitalWrite(DC, LOW);//solve a bug of write_command defore write_datawrite_command(0x15); //set column addresswrite_command(startx); //column address start 00write_command(endx-1); //column address end 95write_command(0x75); //set row addresswrite_command(starty); //row address start 00write_command(endy-1); //row address end 63unsigned char k,i;for(k=starty;k<endy;k++){ for(i=startx;i<endx;i++) { write_Data(dat1); write_Data(dat2); }}}/********************************************* // DrawRectangle********************************************/static void drawRectangle(unsigned char startx,unsigned char starty,unsigned char endx,unsigned char endy,unsigned char BcolorR,unsigned char BcolorB,unsigned char BcolorG,unsigned char FcolorR,unsigned char FcolorB,unsigned char FcolorG,boolean isFill){digitalWrite(DC, LOW);//solve a bug of write_command defore write_datawrite_command(0x26);if(isFill){ write_command(0x01);}else{ write_command(0x00);}write_command(0x22);write_command(startx);write_command(starty);write_command(endx);write_command(endy);write_command(BcolorR);write_command(BcolorB);write_command(BcolorG);write_command(FcolorR);write_command(FcolorB);write_command(FcolorG);}

Arduino自制模型搭建GPS测速仪工具
Arduino自制模型搭建GPS测速仪工具
Arduino自制模型搭建GPS测速仪工具
© 手抄报圈