Stduino UNO mini与7线oled显示屏实现Message Box-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3848|回复: 3

Stduino UNO mini与7线oled显示屏实现Message Box

[复制链接]
发表于 2021-8-3 11:59 | 显示全部楼层 |阅读模式
手头上有块7线的Oled显示屏一直想用stm32驱动下,正好现在通过Stduino UNO mini和arduino框架进行测试
材料:
软件:Stduino IDE 1.10.7
硬件:Stduino UNO mini (STM32F103C6主控)
其他:7线OLED显示屏及杜邦线
1.Oled 7线线序
Oled 7线分别是GND, VCC, D0, D1, RES, DC, CS ,这里仅说下D0是指Clock,D1是指Data,线序实物如下图1所示

hello

hello
图1线序及Hello World显示效果
2.线序具体连接根据下面这行代码进行连接线即可
U8X8_SSD1306_128X64_NONAME_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);
3.下载安装库u8g24.测试输出Hello world代码示例,显示效果即为上图1所示
  1. #include <Arduino.h>
  2. #include <U8x8lib.h>

  3. #ifdef U8X8_HAVE_HW_SPI
  4. #include <SPI.h>
  5. #endif

  6. U8X8_SSD1306_128X64_NONAME_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

  7. void setup(void)
  8. {
  9.   u8x8.begin();
  10.   u8x8.setPowerSave(0);
  11. }

  12. void loop(void)
  13. {
  14.   u8x8.setFont(u8x8_font_chroma48medium8_r);
  15.   u8x8.drawString(0,1,"Hello World!");
  16.   u8x8.refreshDisplay();
  17.   delay(2000);
  18. }
复制代码

5.测试Message Box功能
这里需要说明的是,Message Box具有两个选择框可以进行控制,因此这里根据Stduino UNO mini板子的引脚进行了自定义为:
u8x8.begin(/*Select=*/ 7, /*Right/Next=*/ A1, /*Left/Prev=*/ A2, /*Up=*/ A0, /*Down=*/ A3, /*Home/Cancel=*/ 6); // Stduino
5.1 Message Box初始化显示效果

init

init
图2Message Box初始界面,内容可自定义
5.2 通过Right/Next=*/ A1按键右移按钮显示位置效果

cancel

cancel

图3Message Box右移按钮显示
5.3 通过Select=*/ 7按键选择后效果

ok

ok

图4Message Box确认OK效果

还有更多玩法,此处不再一一列举了
Message Box具体代码如下
  1. #include <Arduino.h>
  2. #include <U8x8lib.h>

  3. #ifdef U8X8_HAVE_HW_SPI
  4. #include <SPI.h>
  5. #endif

  6. U8X8_SSD1306_128X64_NONAME_4W_SW_SPI u8x8(/* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

  7. void setup(void)
  8. {

  9.   u8x8.begin(/*Select=*/ 7, /*Right/Next=*/ A1, /*Left/Prev=*/ A2, /*Up=*/ A0, /*Down=*/ A3, /*Home/Cancel=*/ 6); // Stduino
  10.   u8x8.setPowerSave(0);
  11. }

  12. void loop(void)
  13. {

  14.   uint8_t r;
  15.   u8x8.setFont(u8x8_font_chroma48medium8_r);
  16.   r = u8x8_UserInterfaceMessage(u8x8.getU8x8(), "Message", "Box", NULL, " Ok \n Cancel ");
  17.   if ( r == 0 )
  18.   {
  19.     u8x8.userInterfaceMessage("You pressed the", "Home/Quit", "Button", " Ok ");  
  20.   }
  21.   else if ( r == 1 )
  22.   {
  23.     u8x8.userInterfaceMessage("You selected the", "Ok", "Button", " Ok ");  
  24.   }
  25.   else if ( r == 2 )
  26.   {
  27.     u8x8.userInterfaceMessage("You selected the", "Cancel", "Button", " Ok ");  
  28.   }
  29. }
复制代码



发表于 2021-8-3 15:12 | 显示全部楼层
所以···Stduino和隔壁的零知有什么不同呢(除了SWD)?
 楼主| 发表于 2021-8-3 19:28 | 显示全部楼层
frankhan747 发表于 2021-8-3 15:12
所以···Stduino和隔壁的零知有什么不同呢(除了SWD)?

欢迎你来体验下Stduino IDE

点评

啊这,电脑快满了:(  发表于 2021-8-4 08:18
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:36 , Processed in 0.078935 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表