lugl4313820 发表于 2024-2-17 22:04

【ST NUCLEO-U5A5ZJ-Q开发板测评】ADC体验之三 手绘电压曲线

<div class='showpostmsg'><p><a href="https://bbs.eeworld.com.cn/thread-1271887-1-1.html">【ST NUCLEO-U5A5ZJ-Q开发板测评】ADC体验之一&nbsp;</a></p>

<p><a href="https://bbs.eeworld.com.cn/thread-1271892-1-1.html">【ST NUCLEO-U5A5ZJ-Q开发板测评】ADC体验之二&nbsp;</a></p>

<p>在上面两篇帖子的前提下,把电压实时绘制到OLED屏上。</p>

<p>1、首先我先确定曲线的区域在x轴的10-50上,y轴为0-128;</p>

<p>2、所测的数值为0-16384(即2的16次方)。</p>

<p>Y轴的点换数公式为:Y= 50-40*ADC值/16384。</p>

<p>由于代码如下:</p>

<pre>
<code>while (1)
{
          total_val = 0;

          for(int i=0; i&lt;32;i++)
          {
                  total_val +=aADCxConvertedData;
          }
          printf("ADC VaL:%d voltage:%.4f \r\n   ", total_val/32, (float)(total_val/32)*3.3/16384);
          //HAL_Delay(500);

          static int xPos = 0;
          y_val = 50-(uint8_t)((40*(float)total_val/16384.0)/32);
          /* Only write to buffer when not in transmission */

          SSD1306_DrawPixel(xPos,y_val,0x01);

          /* Update the ssd1306 display in non-blocking mode -&gt; should return SSD1306_STATE_READY if successful */
          SSD1306_UpdateScreen();


          xPos++;
          if (xPos == 128)
          {
                  SSD1306_Clear();
              xPos = 0;
          }

          /* 40 fps (tested up to 200 fps!) */
          HAL_Delay(25);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
}</code></pre>

<p>使用手动转动电位器,实现的效果如下视频:</p>

<div></div>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

lugl4313820 发表于 2024-2-17 22:05

<p>视频如下,因为没有波形发生器,效果一般般。</p>

<p>aaded14460348b446c35ccf157b45e5b<br />
&nbsp;</p>

<p>&nbsp;</p>

Jacktang 发表于 2024-2-18 07:49

<p>手绘电压曲线,学习了</p>

秦天qintian0303 发表于 2024-2-18 08:43

<p>应该用大点的,分辨率高点的屏&nbsp;&nbsp;</p>

lugl4313820 发表于 2024-2-18 09:16

秦天qintian0303 发表于 2024-2-18 08:43
应该用大点的,分辨率高点的屏&nbsp;&nbsp;

<p>先用OLED屏画,后面想用MCU屏,但是还没有学会如何驱动。</p>

HonestQiao 发表于 2024-2-18 17:57

lugl4313820 发表于 2024-2-18 09:16
先用OLED屏画,后面想用MCU屏,但是还没有学会如何驱动。

<p>效果已经非常丝滑了,点赞!!!</p>

lugl4313820 发表于 2024-2-18 19:40

HonestQiao 发表于 2024-2-18 17:57
效果已经非常丝滑了,点赞!!!

<p>还不行,如果跳变大,不成线,是点,下一步准备用touchgfx的曲线功能来实现。</p>
页: [1]
查看完整版本: 【ST NUCLEO-U5A5ZJ-Q开发板测评】ADC体验之三 手绘电压曲线