德赢Vwin官网 App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
德赢Vwin官网 网>电子资料下载>电子资料>使用圆形进度条的电位器的值

使用圆形进度条的电位器的值

2023-02-02 | zip | 0.18 MB | 次下载 | 免费

资料介绍

描述

介绍

经过一段时间的分析,我在这里继续用另一种方式来表示电位器vwin 值,这次我想体验一个3.5“TFT LCD,我喜欢它的尺寸和可以表示的各种颜色。它是一个组件值得一些项目拥有。当然,这个文档也是关于模拟值的传奇的一部分。

图表

要开发这个项目,不需要复杂的连接或图表,因为电位器必须连接到引脚 A0,然后按照图像参考将屏幕安装在ArduinoUNO 上。

diagram_iu5JLJ7OdV.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
image_YuZ0xPToZY.png?auto=compress%2Cformat&w=740&h=555&fit=max
图片来自 LCDwiki

另一个重要的细节:必要的库是LCDWIKI_GUI.hLCDWIKI_KBV,我喜欢这些库的地方在于易于设计引人注目的元素、文本和背景。

代码的系统

我们包括必要的图形库以使用屏幕并表示必要的形式。

#include//Core graphics library#include//Hardware-specificlibrary

接下来我们为各自的库构建屏幕。

LCDWIKI_KBVmy_lcd(ILI9486,A3,A2,A1,A0,A4);

我们定义要使用的颜色。

#defineBLACK 0x0000#defineRED 0xF800#defineGREY 0x2104 // Dark grey 16 bit colour#defineGREEN 0x07E0#defineWHITE0xFFFF#defineBLUE 0x001F// Meter colour schemes#defineRED2RED 0#defineGREEN2GREEN 1#defineBLUE2BLUE 2#defineBLUE2RED 3#defineGREEN2RED 4#defineRED2GREEN 5

我们设置变量来控制时间并存储模拟读数的值。

uint32_t runTime = -99999;//timefornextupdateint reading =0;//Value to be displayed

现在,在下面几行设置代码中,我们分别初始化屏幕、设置深色背景和设置屏幕旋转方向。

voidsetup() {my_lcd.Init_LCD();my_lcd.Fill_Screen(0x0);my_lcd.Set_Rotation(1);}

ringMeter 函数是代码的核心,内部应用数学公式创建各种三角形,两个顶点在内弧上,另一个顶点在外弧上,然后生成一个倒三角形。各种三角形的生成允许构建圆形条并逐渐将颜色应用于它。然后生成居中文本的表示,为此考虑了它所具有的图形数量。

intringMeter(int value, int vmin, int vmax, int x, int y, int r, byte scheme){// Minimum value of r is about52before value text intrudesonring// drawing the text first is an optionx += r; y += r; // Calculate coords of centre of ringint w = r /4; // Width of outer ring is1/4of radiusint angle =150; // Half the sweep angle of meter (300degrees)int text_colour =0; // To hold the text colourint v = map(value, vmin, vmax, -angle, angle); // Map the value to an angle vbyte seg =5; // Segments are5degrees wide =60segments for300degreesbyte inc =5; // Draw segments every5degrees, increase to10for segmented ring// Draw colour blocks every inc degreesfor (int i = -angle; i < angle; i += inc) {// Choose colour from schemeint colour =0;switch (scheme) {case0: colour = RED; break; // Fixed colourcase1: colour = GREEN; break; // Fixed colourcase2: colour = BLUE; break; // Fixed colourcase3: colour = rainbow(map(i, -angle, angle,0,127)); break; // Full spectrum blue to redcase4: colour = rainbow(map(i, -angle, angle,63,127)); break; // Green to red (high temperature etc)case5: colour = rainbow(map(i, -angle, angle,127,63)); break; // Red to green (low battery etc)default: colour = BLUE; break; // Fixed colour}// Calculate pair of coordinates for segment startfloat sx = cos((i -90) *0.0174532925);float sy = sin((i -90) *0.0174532925);uint16_t x0= sx * (r - w) + x;uint16_t y0= sy * (r - w) + y;uint16_t x1= sx * r + x;uint16_t y1= sy * r + y;// Calculate pair of coordinates for segment endfloat sx2= cos((i + seg -90) *0.0174532925);float sy2= sin((i + seg -90) *0.0174532925);int x2= sx2* (r - w) + x;int y2= sy2* (r - w) + y;int x3= sx2* r + x;int y3= sy2* r + y;if (i < v) { // Fill in coloured segments with2trianglesmy_lcd.Set_Draw_color(colour);my_lcd.Fill_Triangle(x0, y0, x1, y1, x2, y2);my_lcd.Fill_Triangle(x1, y1, x2, y2, x3, y3);text_colour = colour; // Save the last colour drawn}else // Fill in blank segments{my_lcd.Set_Draw_color(GREY);my_lcd.Fill_Triangle(x0, y0, x1, y1, x2, y2);my_lcd.Fill_Triangle(x1, y1, x2, y2, x3, y3);}}// Convert value to a stringchar buf[10];byte len =4; if (value >999) len =5;dtostrf(value, len,0, buf);my_lcd.Set_Draw_color(0,0,0);my_lcd.Fill_Rectangle(x-60, y-15, x+60, y+20);// Set the text colour to defaultmy_lcd.Set_Text_colour(WHITE);my_lcd.Set_Text_Back_colour(BLACK);my_lcd.Set_Text_Size(5);if (value>999){my_lcd.Print_String(String(value), x-60, y-15);} else if (value>99&& value<1000){my_lcd.Print_String(String(value), x-45, y-15);} else if (value>9&& value<100){my_lcd.Print_String(String(value), x-30, y-15);} else {my_lcd.Print_String(String(value), x-15, y-15);}return x + r;}

彩虹功能允许您设置用于圆形条的颜色变化。

unsignedint rainbow(byte value){// Value is expected to be in range0-127// The value is converted to a spectrum colour from0= blue through to127= redbyte red =0; // Red is the top5bits of a16bit colour valuebyte green =0;// Green is the middle6bitsbyte blue =0; // Blue is the bottom5bitsbyte quadrant = value /32;if (quadrant ==0) {blue =31;green =2* (value %32);red =0;}if (quadrant ==1) {blue =31- (value %32);green =63;red =0;}if (quadrant ==2) {blue =0;green =63;red = value %32;}if (quadrant ==3) {blue =0;green =63-2* (value %32);red =31;}return (red <<11) + (green <<5) + blue;}

在循环期间,您需要从电位器读取模拟信号,然后调用 ringmeter 函数进行绘图。

voidloop() {if(millis() - runTime >=100L) {runTime = millis();//Setthe position, gapbetweenmeters,andinnerradiusofthe metersintgap =4, radius =120, xpos = my_lcd.Get_Display_Width()/2-radius, ypos = my_lcd.Get_Display_Height()/2-radius;intvalue=analogRead(A5); //readofpotentiometervaluexpos = gap + ringMeter(value,0,1020, xpos, ypos, radius, GREEN2RED); // Draw analogue meter}}

结论

所有与用户交互的项目都允许欣赏与代码的各种交互,尤其是这个项目让我探索了 TFT 屏幕的使用、它的颜色甚至基本的图形元素。3.5 英寸的屏幕非常漂亮且易于使用,一旦您从制造商那里获得了技术信息,您仍然可以分享您使用此屏幕的体验。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

    下载排行

    本周

    1. 1山景DSP芯片AP8248A2数据手册
    2. 1.06 MB |532次下载 |免费
    3. 2RK3399完整板原理图(支持平板,盒子VR)
    4. 3.28 MB |339次下载 |免费
    5. 3TC358743XBG评估板参考手册
    6. 1.36 MB |330次下载 |免费
    7. 4DFM软件使用教程
    8. 0.84 MB |295次下载 |免费
    9. 5元宇宙深度解析—未来的未来-风口还是泡沫
    10. 6.40 MB |227次下载 |免费
    11. 6迪文DGUS开发指南
    12. 31.67 MB |194次下载 |免费
    13. 7元宇宙底层硬件系列报告
    14. 13.42 MB |182次下载 |免费
    15. 8FP5207XR-G1中文应用手册
    16. 1.09 MB |178次下载 |免费

    本月

    1. 1OrCAD10.5下载OrCAD10.5中文版软件
    2. 0.00 MB |234315次下载 |免费
    3. 2555集成电路应用800例(新编版)
    4. 0.00 MB |33566次下载 |免费
    5. 3接口电路图大全
    6. 未知 |30323次下载 |免费
    7. 4开关电源设计实例指南
    8. 未知 |21549次下载 |免费
    9. 5电气工程师手册免费下载(新编第二版pdf电子书)
    10. 0.00 MB |15349次下载 |免费
    11. 6数字电路基础pdf(下载)
    12. 未知 |13750次下载 |免费
    13. 7电子制作实例集锦 下载
    14. 未知 |8113次下载 |免费
    15. 8《LED驱动电路设计》 温德尔著
    16. 0.00 MB |6656次下载 |免费

    总榜

    1. 1matlab软件下载入口
    2. 未知 |935054次下载 |免费
    3. 2protel99se软件下载(可英文版转中文版)
    4. 78.1 MB |537798次下载 |免费
    5. 3MATLAB 7.1 下载 (含软件介绍)
    6. 未知 |420027次下载 |免费
    7. 4OrCAD10.5下载OrCAD10.5中文版软件
    8. 0.00 MB |234315次下载 |免费
    9. 5Altium DXP2002下载入口
    10. 未知 |233046次下载 |免费
    11. 6电路仿真软件multisim 10.0免费下载
    12. 340992 |191187次下载 |免费
    13. 7十天学会AVR单片机与C语言视频教程 下载
    14. 158M |183279次下载 |免费
    15. 8proe5.0野火版下载(中文版免费下载)
    16. 未知 |138040次下载 |免费