[参赛项目]创客造 | 智能药盒 精华

2021-2-21 12:00:18 [显示全部楼层]
92383浏览
查看: 92383|回复: 4

[参赛项目] 创客造 | 智能药盒

[复制链接]
视频演示




创客造 | 智能药盒图12


一、制作背景
       在现实生活中,因遗忘没有按时服药的人很多,特别是老年人,他们不是忘了吃药就是不清楚吃几粒或什么时候吃,于是我就设计了这个服药提醒器,提醒他们服药的时间及服药的粒数。
  
二、设计思路及功能
       这个作品主要采用Arduino开发板、LED灯环、角度传感器、显示屏等设备制作而成。它的主要功能:
       1、可以设置每种药的吃的数量、每天吃的次数以及饭前吃还是饭后吃等。
       2、在OLED显示屏上显示每种药吃的次数,分别以早、中、晚等字样显示。
       3、每种药吃得粒数及时间会在下面对应的LED灯上显示出来,饭前吃的从上部向下显示,吃几粒就亮几盏灯,灯光的颜色为绿色,饭后吃的从下部向上显示,吃几粒就亮几盏灯,灯光的颜色为蓝色。
       4、为了节约用电,还设置了灯光和显示屏关闭的功能,通过旋转显示上的角度传感器来实现,往右旋转就关闭显示,往左转就打开显示效果。
       5、闹钟功能,通过旋转闹钟上的角度传感器来实现闹钟的开启与关闭,转到左边开启闹钟,转到右边关门闹钟。如果开启了闹钟,那到了吃药时间,闹钟就会响起来。
       6、为了区分吃了和未吃的药,我们可以按相应的按键,如吃了第一个格子中的药后,就按一下1号按键,那指示灯就会变暗,表示已吃了该药,在设定的时间亮度又会变亮回来。这里按了相应按键后也可以关闭闹钟,直到下次设定的闹钟时间。
       7、此智能药盒还有配套的手机APP(Blynk),服药的各种设置自动同步到手机APP上,也可以在手机APP上远程对智能药盒进行设置,还可以在上面查看家人服药的情况。

三、硬件清单
        掌控板                                  1
        百灵鸽扩展板                        1
        8位WS28125050 RGB灯环   3
        模拟角度传感器                    2
        杜邦线若干
        椴木板切割部件


四、结构设计与搭建:
       1、设计结构件图纸,并用激光切割机切割出来。
创客造 | 智能药盒图13


       2、按下图把药盒组装起来。
创客造 | 智能药盒图3

创客造 | 智能药盒图1
   
       3、把3个LED灯环分别固定在3个圆形的亚克力片上。
创客造 | 智能药盒图2

创客造 | 智能药盒图5
  
       4、把两个角度传感器固定在面板的相应位置。
创客造 | 智能药盒图4

创客造 | 智能药盒图6
  
       5、把灯环固定在面板上。
创客造 | 智能药盒图11

创客造 | 智能药盒图7
  
       6、把掌控板的安装在面板相应位置。  
创客造 | 智能药盒图8

       7、把LED灯环和角度传感器与百灵鸽扩展板接好连线。
创客造 | 智能药盒图9

创客造 | 智能药盒图14



       8、最后把面板固定在盒子上,这样安装部分就完成了。
创客造 | 智能药盒图10


五、程序编写
       1、程序开始时运行一些初始化,如网络连接、连接到Blynk服务器、LED灯环设置等。程序截图如下:
创客造 | 智能药盒图16

       2、智能药盒开机时要进行服药情况的设置,其中涉及到吃的粒数及吃的时间,它们是由两个角度传器来设置的,通过获取角度传感器的值来设置相应变量“药数量”、“药饭”的值,变量“药数量”、的值表示一次吃的粒数,“变量“药饭”如果为0表示饭前吃,为1表示饭后吃。程序截图如下:
创客造 | 智能药盒图24

       3、按B按键2秒以上进入设置,先进行变量的初始化,再运行函数“设置”,函数“设置”的程序的作用是设置各种药的吃的粒数、时间及次数以及闹钟的设置,并把相应的数据传到Blynk服务器,这里只是列出了第一种药的设置程序,其它设置方法差不多,在这里就省略了。部分程序截图如下:
创客造 | 智能药盒图15


创客造 | 智能药盒图17


       4、设置好后,通过读取P1上的角度传感器的值让屏幕显示服药情况信息或是闹钟设置情况或是关闭屏幕。显示服药信息程序中调用函数“药1”、“药2” 、“药3”的程序,函数“药1”、“药2” 、“药3”的程序基本相同,这里只列举了函数“药1”的程序,函数“药1”程序中主要是根据设置当中服药粒数、时间、次数的值让它们在显示屏相应位置显示出来,并让LED灯环的灯亮不同的颜色来指示吃几粒,饭前还是饭后吃,LED灯亮几颗就表示吃几粒,如果饭前吃就亮绿色,并从上部往下亮,如果饭后吃就亮蓝色,从下部往上亮。其中“时钟”函数是显示当前时间以及设置中设置的闹钟时间。程序截图如下:
创客造 | 智能药盒图18


创客造 | 智能药盒图22


创客造 | 智能药盒图19


       5、当某种药吃了,我们可以通过按掌控板上的P、Y、T触摸键使LED指示亮变暗,表示该药已吃了,并把相应的信息发送给Blynk服务器,而到了一天当中的5点钟、9点钟和15点钟时,让LED亮度恢复原样,提供给下一时间段服药查看。
       “闹钟”函数的作用是通过检测P2上的角度传感器的值来判断闹钟功能是否开启,并把相应的信息发送给Blynk服务器,如果开启了,那到指定的闹钟时间运行Blynk定时器中的程序。程序截图如下:
创客造 | 智能药盒图20


创客造 | 智能药盒图23


创客造 | 智能药盒图21


       6、如果在手机BlynkAPP中对设置进行了更改,就需要读取相应的数据,程序截图如下:
创客造 | 智能药盒图25

       7、由于整个程序比较长,所以全部程序用代码来呈现。全部代码如下:  
  1. /*!
  2. * MindPlus
  3. * mpython
  4. *
  5. */
  6. #include <WiFi.h>
  7. #include <MPython.h>
  8. #include <TimeLib.h>
  9. #include <WiFiClient.h>
  10. #define BLYNK_PRINT Serial
  11. #include <DFRobot_NeoPixel.h>
  12. #include <BlynkSimpleEsp32.h>
  13. #include <WidgetRTC.h>
  14. // 动态变量
  15. String         mind_s_Yao1ShiJian, mind_s_Yao2ShiJian, mind_s_Yao3ShiJian, mind_s_YaoShiJian;
  16. volatile float mind_n_Yao1ShuLiang, mind_n_Yao1Fan, mind_n_Yao2ShuLiang, mind_n_Yao2Fan,
  17.                mind_n_Yao3ShuLiang, mind_n_Yao3Fan, mind_n_SheZhi, mind_n_YaoFan,
  18.                mind_n_YaoShuLiang, mind_n_XianShi, mind_n_NaoZhong1, mind_n_NaoZhong2,
  19.                mind_n_NaoZhong3, mind_n_NaoZhong4, mind_n_NaoZhong5, mind_n_NaoZhong6,
  20.                mind_n_NaoZhongKaiGuan, mind_n_Yao1FuYaoZhuangTai, mind_n_Yao2FuYaoZhuangTai,
  21.                mind_n_Yao3FuYaoZhuangTai, mind_n_ShiZhongXianShi;
  22. // 函数声明
  23. void DF_YaoShuLiangDuQu();
  24. void DF_FanQianFanHou();
  25. void DF_Yao1();
  26. void DF_Yao2();
  27. void DF_Yao3();
  28. void DF_NaoZhong();
  29. void DF_SheZhi();
  30. void DF_ShiZhong();
  31. void myTimerEvent1();
  32. // 创建对象
  33. DFRobot_NeoPixel neoPixel_P13;
  34. DFRobot_NeoPixel neoPixel_P14;
  35. DFRobot_NeoPixel neoPixel_P15;
  36. WidgetLED        ledV16(V16);
  37. WidgetLED        ledV17(V17);
  38. WidgetLED        ledV18(V18);
  39. WidgetRTC        rtc;
  40. BlynkTimer       timer;
  41. // 主程序开始
  42. void setup() {
  43.         mPython.begin();
  44.         Serial.begin(9600);
  45.         Blynk.connectWiFi("zmg", "123456789");
  46.         Blynk.config("BO5a5saSNfm7GvfKI25MafRNjo8DFy9Q", "blynk.mixly.org", 8080);
  47.         setSyncInterval(10 * 60);
  48.         timer.setInterval(1000L, myTimerEvent1);
  49.         display.setCursor(20, 20);
  50.         display.print("正在连接Wi-Fi");
  51.         delay(1000);
  52.         delay(1000);
  53.         display.fillScreen(0);
  54.         display.setCursor(30, 20);
  55.         display.print("Wi-Fi 已连接");
  56.         mind_n_Yao1ShuLiang = 0;
  57.         mind_n_Yao1Fan = 0;
  58.         mind_s_Yao1ShiJian = "";
  59.         mind_n_Yao2ShuLiang = 0;
  60.         mind_n_Yao2Fan = 0;
  61.         mind_s_Yao2ShiJian = "";
  62.         mind_n_Yao3ShuLiang = 0;
  63.         mind_n_Yao3Fan = 0;
  64.         mind_s_Yao3ShiJian = "";
  65.         mind_n_SheZhi = 0;
  66.         mind_n_YaoFan = 0;
  67.         mind_n_YaoShuLiang = 0;
  68.         mind_n_XianShi = 0;
  69.         mind_n_NaoZhong1 = 0;
  70.         mind_n_NaoZhong2 = 0;
  71.         mind_n_NaoZhong3 = 0;
  72.         mind_n_NaoZhong4 = 0;
  73.         mind_n_NaoZhong5 = 0;
  74.         mind_n_NaoZhong6 = 0;
  75.         mind_n_NaoZhongKaiGuan = 0;
  76.         mind_n_Yao1FuYaoZhuangTai = 0;
  77.         mind_n_Yao2FuYaoZhuangTai = 0;
  78.         mind_n_Yao3FuYaoZhuangTai = 0;
  79.         mind_s_YaoShiJian = "";
  80.         neoPixel_P13.begin(P13, 8);
  81.         neoPixel_P13.setBrightness(255);
  82.         neoPixel_P13.clear();
  83.         neoPixel_P14.begin(P14, 8);
  84.         neoPixel_P14.setBrightness(255);
  85.         neoPixel_P14.clear();
  86.         neoPixel_P15.begin(P15, 8);
  87.         neoPixel_P15.setBrightness(255);
  88.         neoPixel_P15.clear();
  89.         display.fillScreen(0);
  90.         display.setCursor(33, 0);
  91.         display.print("智能药盒");
  92.         display.setCursor(0, 16);
  93.         display.print("药1:");
  94.         display.setCursor(0, 32);
  95.         display.print("药2:");
  96.         display.setCursor(0, 48);
  97.         display.print("药3:");
  98.         ledV16.setColor("#2550000");
  99.         ledV16.off();
  100.         ledV17.setColor("#2550000");
  101.         ledV17.off();
  102.         ledV18.setColor("#2550000");
  103.         ledV18.off();
  104. }
  105. void loop() {
  106.         Blynk.run();
  107.         DF_NaoZhong();
  108.         if ((mind_n_SheZhi==0)) {
  109.                 if (((analogRead(P1))<1400)) {
  110.                         if (((mind_n_XianShi==0) || (mind_n_XianShi==2))) {
  111.                                 mind_n_XianShi = 1;
  112.                         }
  113.                 }
  114.                 else if ((2000<(analogRead(P1)))) {
  115.                         if (((mind_n_XianShi==1) || (mind_n_XianShi==2))) {
  116.                                 mind_n_XianShi = 0;
  117.                         }
  118.                 }
  119.                 else {
  120.                         mind_n_XianShi = 2;
  121.                 }
  122.                 if ((mind_n_XianShi==2)) {
  123.                         if ((mind_n_ShiZhongXianShi==0)) {
  124.                                 display.fillScreen(0);
  125.                                 mind_n_ShiZhongXianShi = 1;
  126.                         }
  127.                         DF_ShiZhong();
  128.                 }
  129.                 else if ((mind_n_XianShi==1)) {
  130.                         mind_n_ShiZhongXianShi = 0;
  131.                         display.fillScreen(0);
  132.                         display.setCursor(33, 0);
  133.                         display.print("智能药盒");
  134.                         display.setCursor(0, 16);
  135.                         display.print("药1:");
  136.                         display.setCursor(0, 32);
  137.                         display.print("药2:");
  138.                         display.setCursor(0, 48);
  139.                         display.print("药3:");
  140.                         if ((mind_n_Yao1ShuLiang>0)) {
  141.                                 neoPixel_P13.clear();
  142.                                 DF_Yao1();
  143.                         }
  144.                         else {
  145.                                 neoPixel_P13.clear();
  146.                         }
  147.                         if ((mind_n_Yao2ShuLiang>0)) {
  148.                                 neoPixel_P14.clear();
  149.                                 DF_Yao2();
  150.                         }
  151.                         else {
  152.                                 neoPixel_P14.clear();
  153.                         }
  154.                         if ((mind_n_Yao3ShuLiang>0)) {
  155.                                 neoPixel_P15.clear();
  156.                                 DF_Yao3();
  157.                         }
  158.                         else {
  159.                                 neoPixel_P15.clear();
  160.                         }
  161.                         mind_n_XianShi += 2;
  162.                 }
  163.                 else if ((mind_n_XianShi==0)) {
  164.                         display.fillScreen(0);
  165.                         neoPixel_P13.clear();
  166.                         neoPixel_P14.clear();
  167.                         neoPixel_P15.clear();
  168.                         mind_n_XianShi += 3;
  169.                 }
  170.                 else {
  171.                 }
  172.         }
  173.         if ((touchPadP.isTouched())) {
  174.                 if ((mind_n_Yao1FuYaoZhuangTai==0)) {
  175.                         mind_n_Yao1FuYaoZhuangTai = 1;
  176.                         ledV16.setColor("#0025500");
  177.                         ledV16.on();
  178.                         neoPixel_P13.setBrightness(10);
  179.                 }
  180.                 else {
  181.                         mind_n_Yao1FuYaoZhuangTai = 0;
  182.                         neoPixel_P13.setBrightness(255);
  183.                         ledV16.setColor("#2550000");
  184.                         ledV16.on();
  185.                 }
  186.                 delay(1000);
  187.         }
  188.         if ((touchPadY.isTouched())) {
  189.                 if ((mind_n_Yao2FuYaoZhuangTai==0)) {
  190.                         mind_n_Yao2FuYaoZhuangTai = 1;
  191.                         ledV17.setColor("#0025500");
  192.                         ledV17.on();
  193.                         neoPixel_P14.setBrightness(10);
  194.                 }
  195.                 else {
  196.                         mind_n_Yao2FuYaoZhuangTai = 0;
  197.                         neoPixel_P14.setBrightness(255);
  198.                         ledV17.setColor("#2550000");
  199.                         ledV17.on();
  200.                 }
  201.                 delay(1000);
  202.         }
  203.         if ((touchPadT.isTouched())) {
  204.                 if ((mind_n_Yao3FuYaoZhuangTai==0)) {
  205.                         mind_n_Yao3FuYaoZhuangTai = 1;
  206.                         neoPixel_P15.setBrightness(10);
  207.                         ledV18.setColor("#0025500");
  208.                         ledV18.on();
  209.                 }
  210.                 else {
  211.                         mind_n_Yao3FuYaoZhuangTai = 0;
  212.                         ledV18.setColor("#2550000");
  213.                         ledV18.on();
  214.                         neoPixel_P15.setBrightness(255);
  215.                 }
  216.                 delay(1000);
  217.         }
  218.         if ((buttonB.isPressed())) {
  219.                 delay(2000);
  220.                 if ((buttonB.isPressed())) {
  221.                         mind_n_SheZhi = 1;
  222.                         mind_n_Yao1ShuLiang = 0;
  223.                         mind_n_Yao1Fan = 0;
  224.                         mind_s_Yao1ShiJian = "";
  225.                         mind_n_Yao2ShuLiang = 0;
  226.                         mind_n_Yao2Fan = 0;
  227.                         mind_s_Yao2ShiJian = "";
  228.                         mind_n_Yao3ShuLiang = 0;
  229.                         mind_n_Yao3Fan = 0;
  230.                         mind_s_Yao3ShiJian = "";
  231.                         mind_n_SheZhi = 0;
  232.                         mind_n_YaoFan = 0;
  233.                         mind_n_YaoShuLiang = 0;
  234.                         mind_n_XianShi = 0;
  235.                         mind_s_YaoShiJian = "";
  236.                         DF_SheZhi();
  237.                 }
  238.         }
  239.         if (((((hour()==5) || (hour()==9)) || (hour()==15)) && (minute()==0))) {
  240.                 neoPixel_P13.setBrightness(255);
  241.                 neoPixel_P14.setBrightness(255);
  242.                 neoPixel_P15.setBrightness(255);
  243.         }
  244. }
  245. // 自定义函数
  246. void DF_YaoShuLiangDuQu() {
  247.         if (((analogRead(P2))<100)) {
  248.                 mind_n_YaoShuLiang = 0;
  249.         }
  250.         else if (((analogRead(P2))<600)) {
  251.                 mind_n_YaoShuLiang = 1;
  252.         }
  253.         else if (((analogRead(P2))<1100)) {
  254.                 mind_n_YaoShuLiang = 2;
  255.         }
  256.         else if (((analogRead(P2))<1600)) {
  257.                 mind_n_YaoShuLiang = 3;
  258.         }
  259.         else if (((analogRead(P2))<2100)) {
  260.                 mind_n_YaoShuLiang = 4;
  261.         }
  262.         else if (((analogRead(P2))<2600)) {
  263.                 mind_n_YaoShuLiang = 5;
  264.         }
  265.         else if (((analogRead(P2))<3100)) {
  266.                 mind_n_YaoShuLiang = 6;
  267.         }
  268.         else if (((analogRead(P2))<3600)) {
  269.                 mind_n_YaoShuLiang = 7;
  270.         }
  271.         else {
  272.                 mind_n_YaoShuLiang = 8;
  273.         }
  274. }
  275. void DF_FanQianFanHou() {
  276.         if (((analogRead(P1))<1900)) {
  277.                 mind_n_YaoFan = 0;
  278.         }
  279.         else {
  280.                 mind_n_YaoFan = 1;
  281.         }
  282. }
  283. void DF_Yao1() {
  284.         if ((mind_n_Yao1Fan==0)) {
  285.                 if ((mind_n_Yao1ShuLiang==1)) {
  286.                         neoPixel_P13.setRangeColor(0, 0, 0x00FF00);
  287.                 }
  288.                 else if ((mind_n_Yao1ShuLiang==2)) {
  289.                         neoPixel_P13.setRangeColor(0, 1, 0x00FF00);
  290.                 }
  291.                 else if ((mind_n_Yao1ShuLiang==3)) {
  292.                         neoPixel_P13.setRangeColor(0, 1, 0x00FF00);
  293.                         neoPixel_P13.setRangeColor(7, 7, 0x00FF00);
  294.                 }
  295.                 else if ((mind_n_Yao1ShuLiang==4)) {
  296.                         neoPixel_P13.setRangeColor(0, 1, 0x00FF00);
  297.                         neoPixel_P13.setRangeColor(6, 7, 0x00FF00);
  298.                 }
  299.                 else if ((mind_n_Yao1ShuLiang==5)) {
  300.                         neoPixel_P13.setRangeColor(0, 2, 0x00FF00);
  301.                         neoPixel_P13.setRangeColor(6, 7, 0x00FF00);
  302.                 }
  303.                 else if ((mind_n_Yao1ShuLiang==6)) {
  304.                         neoPixel_P13.setRangeColor(0, 2, 0x00FF00);
  305.                         neoPixel_P13.setRangeColor(5, 7, 0x00FF00);
  306.                 }
  307.                 else if ((mind_n_Yao1ShuLiang==7)) {
  308.                         neoPixel_P13.setRangeColor(0, 3, 0x00FF00);
  309.                         neoPixel_P13.setRangeColor(5, 7, 0x00FF00);
  310.                 }
  311.                 else if ((mind_n_Yao1ShuLiang==8)) {
  312.                         neoPixel_P13.setRangeColor(0, 7, 0x00FF00);
  313.                 }
  314.         }
  315.         else {
  316.                 if ((mind_n_Yao1ShuLiang==1)) {
  317.                         neoPixel_P13.setRangeColor(4, 4, 0x0000FF);
  318.                 }
  319.                 else if ((mind_n_Yao1ShuLiang==2)) {
  320.                         neoPixel_P13.setRangeColor(4, 5, 0x0000FF);
  321.                 }
  322.                 else if ((mind_n_Yao1ShuLiang==3)) {
  323.                         neoPixel_P13.setRangeColor(3, 5, 0x0000FF);
  324.                 }
  325.                 else if ((mind_n_Yao1ShuLiang==4)) {
  326.                         neoPixel_P13.setRangeColor(3, 6, 0x0000FF);
  327.                 }
  328.                 else if ((mind_n_Yao1ShuLiang==5)) {
  329.                         neoPixel_P13.setRangeColor(2, 6, 0x0000FF);
  330.                 }
  331.                 else if ((mind_n_Yao1ShuLiang==6)) {
  332.                         neoPixel_P13.setRangeColor(2, 7, 0x0000FF);
  333.                 }
  334.                 else if ((mind_n_Yao1ShuLiang==7)) {
  335.                         neoPixel_P13.setRangeColor(1, 7, 0x0000FF);
  336.                 }
  337.                 else if ((mind_n_Yao1ShuLiang==8)) {
  338.                         neoPixel_P13.setRangeColor(0, 7, 0x0000FF);
  339.                 }
  340.         }
  341.         display.setCursor(0, 16);
  342.         display.print("药1:");
  343.         display.setCursor(30, 16);
  344.         display.print(mind_n_Yao1ShuLiang);
  345.         if ((mind_n_Yao1Fan==0)) {
  346.                 display.setCursor(45, 16);
  347.                 display.print("饭前");
  348.         }
  349.         else {
  350.                 display.setCursor(45, 16);
  351.                 display.print("饭后");
  352.         }
  353.         if (((String(mind_s_Yao1ShiJian).indexOf(String("早")) != -1))) {
  354.                 display.setCursor(80, 16);
  355.                 display.print("早");
  356.         }
  357.         if (((String(mind_s_Yao1ShiJian).indexOf(String("中")) != -1))) {
  358.                 display.setCursor(95, 16);
  359.                 display.print("中");
  360.         }
  361.         if (((String(mind_s_Yao1ShiJian).indexOf(String("晚")) != -1))) {
  362.                 display.setCursor(110, 16);
  363.                 display.print("晚");
  364.         }
  365. }
  366. void DF_Yao2() {
  367.         if ((mind_n_Yao2Fan==0)) {
  368.                 if ((mind_n_Yao2ShuLiang==1)) {
  369.                         neoPixel_P14.setRangeColor(0, 0, 0x00FF00);
  370.                 }
  371.                 else if ((mind_n_Yao2ShuLiang==2)) {
  372.                         neoPixel_P14.setRangeColor(0, 1, 0x00FF00);
  373.                 }
  374.                 else if ((mind_n_Yao2ShuLiang==3)) {
  375.                         neoPixel_P14.setRangeColor(0, 1, 0x00FF00);
  376.                         neoPixel_P14.setRangeColor(7, 7, 0x00FF00);
  377.                 }
  378.                 else if ((mind_n_Yao2ShuLiang==4)) {
  379.                         neoPixel_P14.setRangeColor(0, 1, 0x00FF00);
  380.                         neoPixel_P14.setRangeColor(6, 7, 0x00FF00);
  381.                 }
  382.                 else if ((mind_n_Yao2ShuLiang==5)) {
  383.                         neoPixel_P14.setRangeColor(0, 2, 0x00FF00);
  384.                         neoPixel_P14.setRangeColor(6, 7, 0x00FF00);
  385.                 }
  386.                 else if ((mind_n_Yao2ShuLiang==6)) {
  387.                         neoPixel_P14.setRangeColor(0, 2, 0x00FF00);
  388.                         neoPixel_P14.setRangeColor(5, 7, 0x00FF00);
  389.                 }
  390.                 else if ((mind_n_Yao2ShuLiang==7)) {
  391.                         neoPixel_P14.setRangeColor(0, 3, 0x00FF00);
  392.                         neoPixel_P14.setRangeColor(5, 7, 0x00FF00);
  393.                 }
  394.                 else if ((mind_n_Yao2ShuLiang==8)) {
  395.                         neoPixel_P14.setRangeColor(0, 7, 0x00FF00);
  396.                 }
  397.         }
  398.         else {
  399.                 if ((mind_n_Yao2ShuLiang==1)) {
  400.                         neoPixel_P14.setRangeColor(4, 4, 0x0000FF);
  401.                 }
  402.                 else if ((mind_n_Yao2ShuLiang==2)) {
  403.                         neoPixel_P14.setRangeColor(4, 5, 0x0000FF);
  404.                 }
  405.                 else if ((mind_n_Yao2ShuLiang==3)) {
  406.                         neoPixel_P14.setRangeColor(3, 5, 0x0000FF);
  407.                 }
  408.                 else if ((mind_n_Yao2ShuLiang==4)) {
  409.                         neoPixel_P14.setRangeColor(3, 6, 0x0000FF);
  410.                 }
  411.                 else if ((mind_n_Yao2ShuLiang==5)) {
  412.                         neoPixel_P14.setRangeColor(2, 6, 0x0000FF);
  413.                 }
  414.                 else if ((mind_n_Yao2ShuLiang==6)) {
  415.                         neoPixel_P14.setRangeColor(2, 7, 0x0000FF);
  416.                 }
  417.                 else if ((mind_n_Yao2ShuLiang==7)) {
  418.                         neoPixel_P14.setRangeColor(1, 7, 0x0000FF);
  419.                 }
  420.                 else if ((mind_n_Yao2ShuLiang==8)) {
  421.                         neoPixel_P14.setRangeColor(0, 7, 0x0000FF);
  422.                 }
  423.         }
  424.         display.setCursor(0, 32);
  425.         display.print("药2:");
  426.         display.setCursor(30, 32);
  427.         display.print(mind_n_Yao2ShuLiang);
  428.         if ((mind_n_Yao2Fan==0)) {
  429.                 display.setCursor(45, 32);
  430.                 display.print("饭前");
  431.         }
  432.         else {
  433.                 display.setCursor(45, 32);
  434.                 display.print("饭后");
  435.         }
  436.         if (((String(mind_s_Yao2ShiJian).indexOf(String("早")) != -1))) {
  437.                 display.setCursor(80, 32);
  438.                 display.print("早");
  439.         }
  440.         if (((String(mind_s_Yao2ShiJian).indexOf(String("中")) != -1))) {
  441.                 display.setCursor(95, 32);
  442.                 display.print("中");
  443.         }
  444.         if (((String(mind_s_Yao2ShiJian).indexOf(String("晚")) != -1))) {
  445.                 display.setCursor(110, 32);
  446.                 display.print("晚");
  447.         }
  448. }
  449. void DF_Yao3() {
  450.         if ((mind_n_Yao3Fan==0)) {
  451.                 if ((mind_n_Yao3ShuLiang==1)) {
  452.                         neoPixel_P15.setRangeColor(0, 0, 0x00FF00);
  453.                 }
  454.                 else if ((mind_n_Yao3ShuLiang==2)) {
  455.                         neoPixel_P15.setRangeColor(0, 1, 0x00FF00);
  456.                 }
  457.                 else if ((mind_n_Yao3ShuLiang==3)) {
  458.                         neoPixel_P15.setRangeColor(0, 1, 0x00FF00);
  459.                         neoPixel_P15.setRangeColor(7, 7, 0x00FF00);
  460.                 }
  461.                 else if ((mind_n_Yao3ShuLiang==4)) {
  462.                         neoPixel_P15.setRangeColor(0, 1, 0x00FF00);
  463.                         neoPixel_P15.setRangeColor(6, 7, 0x00FF00);
  464.                 }
  465.                 else if ((mind_n_Yao3ShuLiang==5)) {
  466.                         neoPixel_P15.setRangeColor(0, 2, 0x00FF00);
  467.                         neoPixel_P15.setRangeColor(6, 7, 0x00FF00);
  468.                 }
  469.                 else if ((mind_n_Yao3ShuLiang==6)) {
  470.                         neoPixel_P15.setRangeColor(0, 2, 0x00FF00);
  471.                         neoPixel_P15.setRangeColor(5, 7, 0x00FF00);
  472.                 }
  473.                 else if ((mind_n_Yao3ShuLiang==7)) {
  474.                         neoPixel_P15.setRangeColor(0, 3, 0x00FF00);
  475.                         neoPixel_P15.setRangeColor(5, 7, 0x00FF00);
  476.                 }
  477.                 else if ((mind_n_Yao3ShuLiang==8)) {
  478.                         neoPixel_P15.setRangeColor(0, 7, 0x00FF00);
  479.                 }
  480.         }
  481.         else {
  482.                 if ((mind_n_Yao3ShuLiang==1)) {
  483.                         neoPixel_P15.setRangeColor(4, 4, 0x0000FF);
  484.                 }
  485.                 else if ((mind_n_Yao3ShuLiang==2)) {
  486.                         neoPixel_P15.setRangeColor(4, 5, 0x0000FF);
  487.                 }
  488.                 else if ((mind_n_Yao3ShuLiang==3)) {
  489.                         neoPixel_P15.setRangeColor(3, 5, 0x0000FF);
  490.                 }
  491.                 else if ((mind_n_Yao3ShuLiang==4)) {
  492.                         neoPixel_P15.setRangeColor(3, 6, 0x0000FF);
  493.                 }
  494.                 else if ((mind_n_Yao3ShuLiang==5)) {
  495.                         neoPixel_P15.setRangeColor(2, 6, 0x0000FF);
  496.                 }
  497.                 else if ((mind_n_Yao3ShuLiang==6)) {
  498.                         neoPixel_P15.setRangeColor(2, 7, 0x0000FF);
  499.                 }
  500.                 else if ((mind_n_Yao3ShuLiang==7)) {
  501.                         neoPixel_P15.setRangeColor(1, 7, 0x0000FF);
  502.                 }
  503.                 else if ((mind_n_Yao3ShuLiang==8)) {
  504.                         neoPixel_P15.setRangeColor(0, 7, 0x0000FF);
  505.                 }
  506.         }
  507.         display.setCursor(0, 48);
  508.         display.print("药3:");
  509.         display.setCursor(30, 48);
  510.         display.print(mind_n_Yao3ShuLiang);
  511.         if ((mind_n_Yao3Fan==0)) {
  512.                 display.setCursor(45, 48);
  513.                 display.print("饭前");
  514.         }
  515.         else {
  516.                 display.setCursor(45, 48);
  517.                 display.print("饭后");
  518.         }
  519.         if (((String(mind_s_Yao3ShiJian).indexOf(String("早")) != -1))) {
  520.                 display.setCursor(80, 48);
  521.                 display.print("早");
  522.         }
  523.         if (((String(mind_s_Yao3ShiJian).indexOf(String("中")) != -1))) {
  524.                 display.setCursor(95, 48);
  525.                 display.print("中");
  526.         }
  527.         if (((String(mind_s_Yao3ShiJian).indexOf(String("晚")) != -1))) {
  528.                 display.setCursor(110, 48);
  529.                 display.print("晚");
  530.         }
  531. }
  532. void DF_NaoZhong() {
  533.         if (((analogRead(P2))<1500)) {
  534.                 mind_n_NaoZhongKaiGuan = 1;
  535.         }
  536.         else if ((2000<(analogRead(P2)))) {
  537.                 mind_n_NaoZhongKaiGuan = 0;
  538.         }
  539.         else {
  540.         }
  541.         if ((mind_n_NaoZhongKaiGuan==1)) {
  542.                 if ((mind_n_NaoZhong1>0)) {
  543.                         if (((hour()==mind_n_NaoZhong1) && (minute()==0))) {
  544.                                 timer.run();
  545.                         }
  546.                 }
  547.                 if ((mind_n_NaoZhong2>0)) {
  548.                         if (((hour()==mind_n_NaoZhong2) && (minute()==0))) {
  549.                                 timer.run();
  550.                         }
  551.                 }
  552.                 if ((mind_n_NaoZhong3>0)) {
  553.                         if (((hour()==mind_n_NaoZhong3) && (minute()==0))) {
  554.                                 timer.run();
  555.                         }
  556.                 }
  557.                 if ((mind_n_NaoZhong4>0)) {
  558.                         if (((hour()==mind_n_NaoZhong4) && (minute()==0))) {
  559.                                 timer.run();
  560.                         }
  561.                 }
  562.                 if ((mind_n_NaoZhong5>0)) {
  563.                         if (((hour()==mind_n_NaoZhong5) && (minute()==0))) {
  564.                                 timer.run();
  565.                         }
  566.                 }
  567.                 if ((mind_n_NaoZhong6>0)) {
  568.                         if (((hour()==mind_n_NaoZhong6) && (minute()==0))) {
  569.                                 timer.run();
  570.                         }
  571.                 }
  572.         }
  573. }
  574. void DF_SheZhi() {
  575.         mind_n_SheZhi = 1;
  576.         mind_n_XianShi = 0;
  577.         display.fillScreen(0);
  578.         display.setCursor(0, 16);
  579.         display.print("服药时间:");
  580.         display.setCursor(0, 32);
  581.         display.print("服药数量:");
  582.         display.setCursor(0, 48);
  583.         display.print("服药次数:");
  584.         display.setCursor(33, 0);
  585.         display.print("药1设置");
  586.         rgb.write(-1, 0x000000);
  587.         rgb.write(0, 0xFF0000);
  588.         delay(300);
  589.         while (!(buttonA.isPressed())) {
  590.                 DF_FanQianFanHou();
  591.                 DF_YaoShuLiangDuQu();
  592.                 display.setCursor(75, 32);
  593.                 display.print("        ");
  594.                 display.setCursor(85, 32);
  595.                 display.print(mind_n_YaoShuLiang);
  596.                 if ((mind_n_YaoFan==0)) {
  597.                         display.setCursor(75, 16);
  598.                         display.print("        ");
  599.                         display.setCursor(75, 16);
  600.                         display.print("饭前");
  601.                 }
  602.                 else {
  603.                         display.setCursor(75, 16);
  604.                         display.print("        ");
  605.                         display.setCursor(75, 16);
  606.                         display.print("饭后");
  607.                 }
  608.                 if ((touchPadH.isTouched())) {
  609.                         if ((!((String(mind_s_Yao1ShiJian).indexOf(String("早")) != -1)))) {
  610.                                 mind_s_Yao1ShiJian = (String(mind_s_Yao1ShiJian) + String("早"));
  611.                         }
  612.                 }
  613.                 if ((touchPadO.isTouched())) {
  614.                         if ((!((String(mind_s_Yao1ShiJian).indexOf(String("中")) != -1)))) {
  615.                                 mind_s_Yao1ShiJian = (String(mind_s_Yao1ShiJian) + String("中"));
  616.                         }
  617.                 }
  618.                 if ((touchPadN.isTouched())) {
  619.                         if ((!((String(mind_s_Yao1ShiJian).indexOf(String("晚")) != -1)))) {
  620.                                 mind_s_Yao1ShiJian = (String(mind_s_Yao1ShiJian) + String("晚"));
  621.                         }
  622.                 }
  623.                 if (((String(mind_s_Yao1ShiJian).indexOf(String("早")) != -1))) {
  624.                         display.setCursor(60, 48);
  625.                         display.print("早");
  626.                 }
  627.                 if (((String(mind_s_Yao1ShiJian).indexOf(String("中")) != -1))) {
  628.                         display.setCursor(80, 48);
  629.                         display.print("中");
  630.                 }
  631.                 if (((String(mind_s_Yao1ShiJian).indexOf(String("晚")) != -1))) {
  632.                         display.setCursor(100, 48);
  633.                         display.print("晚");
  634.                 }
  635.                 yield();
  636.         }
  637.         mind_n_Yao1Fan = mind_n_YaoFan;
  638.         mind_n_Yao1ShuLiang = mind_n_YaoShuLiang;
  639.         Blynk.virtualWrite(V0, mind_n_Yao1ShuLiang);
  640.         delay(500);
  641.         Blynk.virtualWrite(V2, mind_n_Yao1Fan);
  642.         delay(500);
  643.         Blynk.virtualWrite(V1, mind_s_Yao1ShiJian);
  644.         delay(500);
  645.         display.setCursor(33, 0);
  646.         display.print("                   ");
  647.         display.setCursor(33, 0);
  648.         display.print("药2设置");
  649.         display.setCursor(60, 48);
  650.         display.print("                  ");
  651.         rgb.write(-1, 0x000000);
  652.         rgb.write(1, 0xFF0000);
  653.         delay(300);
  654.         while (!(buttonA.isPressed())) {
  655.                 DF_FanQianFanHou();
  656.                 DF_YaoShuLiangDuQu();
  657.                 display.setCursor(75, 32);
  658.                 display.print("        ");
  659.                 display.setCursor(85, 32);
  660.                 display.print(mind_n_YaoShuLiang);
  661.                 if ((mind_n_YaoFan==0)) {
  662.                         display.setCursor(75, 16);
  663.                         display.print("        ");
  664.                         display.setCursor(75, 16);
  665.                         display.print("饭前");
  666.                 }
  667.                 else {
  668.                         display.setCursor(75, 16);
  669.                         display.print("        ");
  670.                         display.setCursor(75, 16);
  671.                         display.print("饭后");
  672.                 }
  673.                 if ((touchPadH.isTouched())) {
  674.                         if ((!((String(mind_s_Yao2ShiJian).indexOf(String("早")) != -1)))) {
  675.                                 mind_s_Yao2ShiJian = (String(mind_s_Yao2ShiJian) + String("早"));
  676.                         }
  677.                 }
  678.                 if ((touchPadO.isTouched())) {
  679.                         if ((!((String(mind_s_Yao2ShiJian).indexOf(String("中")) != -1)))) {
  680.                                 mind_s_Yao2ShiJian = (String(mind_s_Yao2ShiJian) + String("中"));
  681.                         }
  682.                 }
  683.                 if ((touchPadN.isTouched())) {
  684.                         if ((!((String(mind_s_Yao2ShiJian).indexOf(String("晚")) != -1)))) {
  685.                                 mind_s_Yao2ShiJian = (String(mind_s_Yao2ShiJian) + String("晚"));
  686.                         }
  687.                 }
  688.                 if (((String(mind_s_Yao2ShiJian).indexOf(String("早")) != -1))) {
  689.                         display.setCursor(60, 48);
  690.                         display.print("早");
  691.                 }
  692.                 if (((String(mind_s_Yao2ShiJian).indexOf(String("中")) != -1))) {
  693.                         display.setCursor(80, 48);
  694.                         display.print("中");
  695.                 }
  696.                 if (((String(mind_s_Yao2ShiJian).indexOf(String("晚")) != -1))) {
  697.                         display.setCursor(100, 48);
  698.                         display.print("晚");
  699.                 }
  700.                 yield();
  701.         }
  702.         mind_n_Yao2Fan = mind_n_YaoFan;
  703.         mind_n_Yao2ShuLiang = mind_n_YaoShuLiang;
  704.         Blynk.virtualWrite(V3, mind_n_Yao2ShuLiang);
  705.         delay(500);
  706.         Blynk.virtualWrite(V5, mind_n_Yao2Fan);
  707.         delay(500);
  708.         Blynk.virtualWrite(V4, mind_s_Yao2ShiJian);
  709.         delay(500);
  710.         display.setCursor(33, 0);
  711.         display.print("                   ");
  712.         display.setCursor(33, 0);
  713.         display.print("药3设置");
  714.         display.setCursor(60, 48);
  715.         display.print("                  ");
  716.         rgb.write(-1, 0x000000);
  717.         rgb.write(2, 0xFF0000);
  718.         delay(300);
  719.         while (!(buttonA.isPressed())) {
  720.                 DF_FanQianFanHou();
  721.                 DF_YaoShuLiangDuQu();
  722.                 display.setCursor(75, 32);
  723.                 display.print("        ");
  724.                 display.setCursor(85, 32);
  725.                 display.print(mind_n_YaoShuLiang);
  726.                 if ((mind_n_YaoFan==0)) {
  727.                         display.setCursor(75, 16);
  728.                         display.print("        ");
  729.                         display.setCursor(75, 16);
  730.                         display.print("饭前");
  731.                 }
  732.                 else {
  733.                         display.setCursor(75, 16);
  734.                         display.print("        ");
  735.                         display.setCursor(75, 16);
  736.                         display.print("饭后");
  737.                 }
  738.                 if ((touchPadH.isTouched())) {
  739.                         if ((!((String(mind_s_Yao3ShiJian).indexOf(String("早")) != -1)))) {
  740.                                 mind_s_Yao3ShiJian = (String(mind_s_Yao3ShiJian) + String("早"));
  741.                         }
  742.                 }
  743.                 if ((touchPadO.isTouched())) {
  744.                         if ((!((String(mind_s_Yao3ShiJian).indexOf(String("中")) != -1)))) {
  745.                                 mind_s_Yao3ShiJian = (String(mind_s_Yao3ShiJian) + String("中"));
  746.                         }
  747.                 }
  748.                 if ((touchPadN.isTouched())) {
  749.                         if ((!((String(mind_s_Yao3ShiJian).indexOf(String("晚")) != -1)))) {
  750.                                 mind_s_Yao3ShiJian = (String(mind_s_Yao3ShiJian) + String("晚"));
  751.                         }
  752.                 }
  753.                 if (((String(mind_s_Yao3ShiJian).indexOf(String("早")) != -1))) {
  754.                         display.setCursor(60, 48);
  755.                         display.print("早");
  756.                 }
  757.                 if (((String(mind_s_Yao3ShiJian).indexOf(String("中")) != -1))) {
  758.                         display.setCursor(80, 48);
  759.                         display.print("中");
  760.                 }
  761.                 if (((String(mind_s_Yao3ShiJian).indexOf(String("晚")) != -1))) {
  762.                         display.setCursor(100, 48);
  763.                         display.print("晚");
  764.                 }
  765.                 yield();
  766.         }
  767.         mind_n_Yao3Fan = mind_n_YaoFan;
  768.         mind_n_Yao3ShuLiang = mind_n_YaoShuLiang;
  769.         delay(300);
  770.         Blynk.virtualWrite(V6, mind_n_Yao3ShuLiang);
  771.         delay(500);
  772.         Blynk.virtualWrite(V8, mind_n_Yao3Fan);
  773.         delay(500);
  774.         Blynk.virtualWrite(V7, mind_s_Yao3ShiJian);
  775.         delay(500);
  776.         rgb.write(-1, 0x000000);
  777.         display.fillScreen(0);
  778.         display.setCursor(33, 0);
  779.         display.print("闹钟1设置");
  780.         display.setCursor(20, 32);
  781.         display.print("闹钟1时间:");
  782.         while (!(buttonA.isPressed())) {
  783.                 mind_n_NaoZhong1 = (floor(((analogRead(P2)) / 170)));
  784.                 if ((mind_n_NaoZhong1==0)) {
  785.                         display.setCursor(85, 32);
  786.                         display.print("      ");
  787.                         display.setCursor(85, 32);
  788.                         display.print("关闭");
  789.                         delay(200);
  790.                 }
  791.                 else {
  792.                         display.setCursor(85, 32);
  793.                         display.print("      ");
  794.                         display.setCursor(85, 32);
  795.                         display.print(mind_n_NaoZhong1);
  796.                         delay(200);
  797.                 }
  798.                 yield();
  799.         }
  800.         delay(1000);
  801.         Blynk.virtualWrite(V9, mind_n_NaoZhong1);
  802.         display.fillScreen(0);
  803.         display.setCursor(33, 0);
  804.         display.print("闹钟2设置");
  805.         display.setCursor(20, 32);
  806.         display.print("闹钟2时间:");
  807.         while (!(buttonA.isPressed())) {
  808.                 mind_n_NaoZhong2 = (floor(((analogRead(P2)) / 170)));
  809.                 if ((mind_n_NaoZhong2==0)) {
  810.                         display.setCursor(85, 32);
  811.                         display.print("      ");
  812.                         display.setCursor(85, 32);
  813.                         display.print("关闭");
  814.                         delay(200);
  815.                 }
  816.                 else {
  817.                         display.setCursor(85, 32);
  818.                         display.print("      ");
  819.                         display.setCursor(85, 32);
  820.                         display.print(mind_n_NaoZhong2);
  821.                         delay(200);
  822.                 }
  823.                 yield();
  824.         }
  825.         delay(1000);
  826.         Blynk.virtualWrite(V10, mind_n_NaoZhong2);
  827.         display.fillScreen(0);
  828.         display.setCursor(33, 0);
  829.         display.print("闹钟3设置");
  830.         display.setCursor(20, 32);
  831.         display.print("闹钟3时间:");
  832.         while (!(buttonA.isPressed())) {
  833.                 mind_n_NaoZhong3 = (floor(((analogRead(P2)) / 170)));
  834.                 if ((mind_n_NaoZhong3==0)) {
  835.                         display.setCursor(85, 32);
  836.                         display.print("      ");
  837.                         display.setCursor(85, 32);
  838.                         display.print("关闭");
  839.                         delay(200);
  840.                 }
  841.                 else {
  842.                         display.setCursor(85, 32);
  843.                         display.print("      ");
  844.                         display.setCursor(85, 32);
  845.                         display.print(mind_n_NaoZhong3);
  846.                         delay(200);
  847.                 }
  848.                 yield();
  849.         }
  850.         delay(1000);
  851.         Blynk.virtualWrite(V11, mind_n_NaoZhong3);
  852.         display.fillScreen(0);
  853.         display.setCursor(33, 0);
  854.         display.print("闹钟4设置");
  855.         display.setCursor(20, 32);
  856.         display.print("闹钟4时间:");
  857.         while (!(buttonA.isPressed())) {
  858.                 mind_n_NaoZhong4 = (floor(((analogRead(P2)) / 170)));
  859.                 if ((mind_n_NaoZhong4==0)) {
  860.                         display.setCursor(85, 32);
  861.                         display.print("      ");
  862.                         display.setCursor(85, 32);
  863.                         display.print("关闭");
  864.                         delay(200);
  865.                 }
  866.                 else {
  867.                         display.setCursor(85, 32);
  868.                         display.print("      ");
  869.                         display.setCursor(85, 32);
  870.                         display.print(mind_n_NaoZhong4);
  871.                         delay(200);
  872.                 }
  873.                 yield();
  874.         }
  875.         delay(1000);
  876.         Blynk.virtualWrite(V12, mind_n_NaoZhong4);
  877.         display.fillScreen(0);
  878.         display.setCursor(33, 0);
  879.         display.print("闹钟5设置");
  880.         display.setCursor(20, 32);
  881.         display.print("闹钟5时间:");
  882.         while (!(buttonA.isPressed())) {
  883.                 mind_n_NaoZhong5 = (floor(((analogRead(P2)) / 170)));
  884.                 if ((mind_n_NaoZhong5==0)) {
  885.                         display.setCursor(85, 32);
  886.                         display.print("      ");
  887.                         display.setCursor(85, 32);
  888.                         display.print("关闭");
  889.                         delay(200);
  890.                 }
  891.                 else {
  892.                         display.setCursor(85, 32);
  893.                         display.print("      ");
  894.                         display.setCursor(85, 32);
  895.                         display.print(mind_n_NaoZhong5);
  896.                         delay(200);
  897.                 }
  898.                 yield();
  899.         }
  900.         delay(1000);
  901.         Blynk.virtualWrite(V13, mind_n_NaoZhong5);
  902.         display.fillScreen(0);
  903.         display.setCursor(33, 0);
  904.         display.print("闹钟6设置");
  905.         display.setCursor(20, 32);
  906.         display.print("闹钟6时间:");
  907.         while (!(buttonA.isPressed())) {
  908.                 mind_n_NaoZhong6 = (floor(((analogRead(P2)) / 170)));
  909.                 if ((mind_n_NaoZhong6==0)) {
  910.                         display.setCursor(85, 32);
  911.                         display.print("      ");
  912.                         display.setCursor(85, 32);
  913.                         display.print("关闭");
  914.                         delay(200);
  915.                 }
  916.                 else {
  917.                         display.setCursor(85, 32);
  918.                         display.print("      ");
  919.                         display.setCursor(85, 32);
  920.                         display.print(mind_n_NaoZhong6);
  921.                         delay(200);
  922.                 }
  923.                 yield();
  924.         }
  925.         display.fillScreen(0);
  926.         mind_n_XianShi = 1;
  927.         mind_n_SheZhi = 0;
  928.         Blynk.virtualWrite(V14, mind_n_NaoZhong6);
  929.         delay(500);
  930. }
  931. void DF_ShiZhong() {
  932.         display.setCursor(3, 0);
  933.         display.print(month());
  934.         display.setCursor(15, 0);
  935.         display.print("月");
  936.         display.setCursor(25, 0);
  937.         display.print(day());
  938.         display.setCursor(38, 0);
  939.         display.print("日");
  940.         display.setCursor(52, 0);
  941.         display.print(hour());
  942.         display.setCursor(65, 0);
  943.         display.print("时");
  944.         if ((second()==0)) {
  945.                 display.setCursor(76, 0);
  946.                 display.print("                  ");
  947.         }
  948.         display.setCursor(76, 0);
  949.         display.print(minute());
  950.         display.setCursor(89, 0);
  951.         display.print("分");
  952.         display.setCursor(101, 0);
  953.         display.print(second());
  954.         display.setCursor(115, 0);
  955.         display.print("秒");
  956.         display.setCursor(3, 16);
  957.         display.print("闹钟1:");
  958.         if ((mind_n_NaoZhong1==0)) {
  959.                 display.setCursor(40, 16);
  960.                 display.print("无");
  961.         }
  962.         else {
  963.                 display.setCursor(40, 16);
  964.                 display.print(mind_n_NaoZhong1);
  965.         }
  966.         display.setCursor(70, 16);
  967.         display.print("闹钟2:");
  968.         if ((mind_n_NaoZhong2==0)) {
  969.                 display.setCursor(106, 16);
  970.                 display.print("无");
  971.         }
  972.         else {
  973.                 display.setCursor(106, 16);
  974.                 display.print(mind_n_NaoZhong2);
  975.         }
  976.         display.setCursor(3, 32);
  977.         display.print("闹钟3:");
  978.         if ((mind_n_NaoZhong3==0)) {
  979.                 display.setCursor(40, 32);
  980.                 display.print("无");
  981.         }
  982.         else {
  983.                 display.setCursor(40, 32);
  984.                 display.print(mind_n_NaoZhong3);
  985.         }
  986.         display.setCursor(70, 32);
  987.         display.print("闹钟4:");
  988.         if ((mind_n_NaoZhong4==0)) {
  989.                 display.setCursor(106, 32);
  990.                 display.print("无");
  991.         }
  992.         else {
  993.                 display.setCursor(106, 32);
  994.                 display.print(mind_n_NaoZhong4);
  995.         }
  996.         display.setCursor(3, 48);
  997.         display.print("闹钟5:");
  998.         if ((mind_n_NaoZhong5==0)) {
  999.                 display.setCursor(40, 48);
  1000.                 display.print("无");
  1001.         }
  1002.         else {
  1003.                 display.setCursor(40, 48);
  1004.                 display.print(mind_n_NaoZhong5);
  1005.         }
  1006.         display.setCursor(70, 48);
  1007.         display.print("闹钟6:");
  1008.         if ((mind_n_NaoZhong6==0)) {
  1009.                 display.setCursor(106, 48);
  1010.                 display.print("无");
  1011.         }
  1012.         else {
  1013.                 display.setCursor(106, 48);
  1014.                 display.print(mind_n_NaoZhong6);
  1015.         }
  1016. }
  1017. // 事件回调函数
  1018. BLYNK_CONNECTED() {
  1019.         rtc.begin();
  1020. }
  1021. void myTimerEvent1() {
  1022.         buzz.play(JUMP_UP, Once);
  1023.         buzz.play(JUMP_DOWN, Once);
  1024.         buzz.play(POWER_UP, Once);
  1025.         buzz.play(POWER_DOWN, Once);
  1026.         delay(500);
  1027. }
  1028. BLYNK_WRITE(V0) {
  1029.         mind_n_Yao1ShuLiang = param[0].asFloat();
  1030.         mind_n_XianShi = 1;
  1031. }
  1032. BLYNK_WRITE(V1) {
  1033.         mind_s_Yao1ShiJian = param[0].asStr();
  1034.         mind_n_XianShi = 1;
  1035. }
  1036. BLYNK_WRITE(V2) {
  1037.         mind_n_Yao1Fan = param[0].asFloat();
  1038.         mind_n_XianShi = 1;
  1039. }
  1040. BLYNK_WRITE(V3) {
  1041.         mind_n_Yao2ShuLiang = param[0].asFloat();
  1042.         mind_n_XianShi = 1;
  1043. }
  1044. BLYNK_WRITE(V4) {
  1045.         mind_s_Yao2ShiJian = param[0].asStr();
  1046.         mind_n_XianShi = 1;
  1047. }
  1048. BLYNK_WRITE(V5) {
  1049.         mind_n_Yao2Fan = param[0].asFloat();
  1050.         mind_n_XianShi = 1;
  1051. }
  1052. BLYNK_WRITE(V6) {
  1053.         mind_n_Yao3ShuLiang = param[0].asFloat();
  1054.         mind_n_XianShi = 1;
  1055. }
  1056. BLYNK_WRITE(V7) {
  1057.         mind_s_Yao3ShiJian = param[0].asStr();
  1058.         mind_n_XianShi = 1;
  1059. }
  1060. BLYNK_WRITE(V8) {
  1061.         mind_n_Yao3Fan = param[0].asFloat();
  1062.         mind_n_XianShi = 1;
  1063. }
  1064. BLYNK_WRITE(V9) {
  1065.         mind_n_NaoZhong1 = param[0].asFloat();
  1066. }
  1067. BLYNK_WRITE(V10) {
  1068.         mind_n_NaoZhong2 = param[0].asFloat();
  1069. }
  1070. BLYNK_WRITE(V11) {
  1071.         mind_n_NaoZhong3 = param[0].asFloat();
  1072. }
  1073. BLYNK_WRITE(V12) {
  1074.         mind_n_NaoZhong4 = param[0].asFloat();
  1075. }
  1076. BLYNK_WRITE(V13) {
  1077.         mind_n_NaoZhong5 = param[0].asFloat();
  1078. }
  1079. BLYNK_WRITE(V14) {
  1080.         mind_n_NaoZhong6 = param[0].asFloat();
  1081. }
  1082. BLYNK_WRITE(V15) {
  1083.         mind_n_NaoZhongKaiGuan = param[0].asFloat();
  1084. }
复制代码


六、Blynd手机APP设置
       1、第一步登陆账号,如果是第一次使用需要先进行注册,如下图所示“Login”为登陆,Create New Account ”为注册,输入账号密码进行登陆。
创客造 | 智能药盒图26


       2、登陆成功后,点击“NewProject”上面的+号新建项目,输入并选择相应的内容后,点击“Create Project”按钮。
创客造 | 智能药盒图27


       3、点击右上角的六边形可以进入项目设置界面,在最下方也可以看到授权码的信息,把这里的授权码复制到程序中的授权码位置中。
创客造 | 智能药盒图28


       4、点击添加组件,在组件列表中选择“LED”组件,再修改组件中各项参数,设置好后点右上角“OK”确定,再长按LED组件移到相应位置,见下图。
创客造 | 智能药盒图29


       5、用同样的方法添加一个“TextInput”组件,见下图。
创客造 | 智能药盒图30


       6、按下图所示再添加两个“LED”组件和“Text Input”组件,“LED”组件引脚分别为V17、V18。
创客造 | 智能药盒图31


       7、按下图所示添加6个“Numeric Input”组件,组件名称分别为闹钟1……闹钟6、引脚分别为V9至V14,引脚值范围为0至24。
创客造 | 智能药盒图32


       8、按下图所示添加1个“Styled Button”组件,设置好组件各项参数及位置。
创客造 | 智能药盒图33


       9、按下图所示添加1个“RTC Settings”组件,设置好组件各项参数及位置。
创客造 | 智能药盒图34


       10、按下图所示添加1个“Numeric Input”组件,置好组件各项参数及位置。
创客造 | 智能药盒图35


       11、按下图所示添加1个“Text Input”组件,置好组件各项参数及位置。
创客造 | 智能药盒图36


       12、按下图所示添加1个“Styled Button”组件,设置好组件各项参数及位置。
创客造 | 智能药盒图37


       13、按同样的方法添加好第二格、第三格服务的相关组件,最后效果如下图。
创客造 | 智能药盒图38


       blynk移动端的组件设置完成后,最后我们点击右上角的“三角”形就可以用运行这个程序了。
创客造 | 智能药盒图39

七、项目小结
       此次“智能药盒”项目创意来源生活,在一定程度上能解决家里老人忘记服药的现象,在项目的制作过程中本人也学到了许多知识和技术,特别是Blynk的使用。此作品必须连上网络才可以使用,如果家里没有网络,作品就运行不了,而且使用掌控板和百灵鸽扩展板后成本有点高,下次打算再做一个不基于网络的“智能药盒”,主控使用Arduino,成本也会低很多。

pATAq  版主

发表于 2021-2-28 21:10:55

感谢分享,Mark一下
回复

使用道具 举报

乐乐1  见习技师

发表于 2021-4-16 16:12:57

感谢分享,又学到了
回复

使用道具 举报

小毅0713450  学徒

发表于 2023-4-21 18:48:34

太牛了,项目很棒
回复

使用道具 举报

罗罗罗  初级技师

发表于 2024-4-14 11:51:15

太牛了
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail