课题作业——Arduino与身高体重仪-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6497|回复: 5

课题作业——Arduino与身高体重仪

[复制链接]
发表于 2018-5-24 21:12 | 显示全部楼层 |阅读模式
在社区这么久一直做米虫,一直没有什么作为,最近打算做一个身高体重仪,算是一个课题,接下来的时间里面我会一直更新帖子进度,希望能够给以前我看的那些帖子一些回报。不多说,先说说身高体重仪完成以后的功能:1、超声波测升高
2、4个压力应变片测体重
3、一个显示屏显示身高体重数据
 楼主| 发表于 2018-5-25 19:52 | 显示全部楼层
既然是身高体重仪,不可避免的是显示的模块了 ,用OLED12864屏幕太小,LCD12864引脚太多,IIC的太贵,进过一中午的查询与老师的指点找到了带串口的LCD屏幕并且成功将它显示成功,下面我将上传我的代码和库。(测试程序都是各帖子里面的,感谢各位大神)。
/*
   在进行LCD串口显示的时候有两种选择
   1.将PSB引脚拉低——不要接地
   2.JP2与S点焊接起来
*/
#include<LCD12864RSPI.h>
//LCD12864RSPI(int _latchPin,int _dataPin,int _clockPin):
LCD12864RSPI LCDA(A3, A4, A5); //RS->A3,R/W->A4,E->A5
void setup()
{
  LCDA.setCursor(0, 1); //在第一行第二位显示
  LCDA.print("室内环境监测");
  LCDA.setCursor(1, 0); //在第二行第一位显示
  LCDA.print("温度:");
  LCDA.setCursor(2, 0); //在第三行第一位显示
  LCDA.print("湿度:");
  LCDA.setCursor(3, 0); //第四行第一格开始显示
  LCDA.print("PM2.5:");
}

void loop()
{
  ;
}
1.jpg

lcd12864.zip

3.7 KB, 下载次数: 24

发表于 2018-7-21 21:27 | 显示全部楼层
为什么要要用4个应变片?还有就是体重测量范围是多少呢?
 楼主| 发表于 2018-6-2 17:26 | 显示全部楼层
鼓捣鼓捣终于将称重模块捣鼓出来了,话说其实HX711的模块还是很好用的,这次还是用了第三方库,用来读取HX711的数据,不过读出来的不准,所以我加了算法后就差不多准确的,废话不多说下面给料了
#include <HX711.h>

// Hx711.DOUT: A1
// Hx711.SCK:  A0
Hx711 scale(4, 5);

void HX711Init(void)
{
  Serial.println("System Init,Please Wait...");

  long offset= scale.getAverageValue(10);
  //计算偏移量(此时称必须保持水平且称上不能有东西!!!)
  //getAverageValue(M)M是读取次数栓平均值
  scale.setOffset(offset);//设置偏移
  scale.setScale(100);//设置比例(此值需要根据不同的重量传感器自己设置!)
}

void setup()
{
  Serial.begin(9600);
  HX711Init();
}

void loop()
{
  Serial.print(((-(int)scale.getWeight(10)*4.75312935)/1000),2);//返回值是处理过后Kg,x*4.75312935/1000是处理数据公式
  Serial.println("kg");
}




 楼主| 发表于 2018-5-28 18:47 | 显示全部楼层
本帖最后由 辉煌仪奇 于 2018-6-2 17:26 编辑

经过两天的捣鼓,在终于将语音模块给捣鼓出来了,语音模块使用的是MY2490-16P,省钱又多功能的一个模块,好了不多说了下面是MY2490的说明书:http://www.51hei.com/bbs/dpj-83694-1.html
下面是测试程序
#include <SoftwareSerial.h>
#include "yuyin.h"
SoftwareSerial mySerial(2, 3); // RX, TX
String comdata = "";

void setup()
{
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop()
{
  for (int i = 0; i < 24; i++)
    Disply_num(i);
}

void Disply_num(int x)//播放音乐函数
{
  switch (x)//选择播放哪一首音乐
  {
    case 0: mySerial.write(num24, 7); break;//0
    case 1: mySerial.write(num1, 7); break;//1
    case 2: mySerial.write(num2, 7); break;//2
    case 3: mySerial.write(num3, 7); break;//3
    case 4: mySerial.write(num4, 7); break;//4
    case 5: mySerial.write(num5, 7); break;//5
    case 6: mySerial.write(num6, 7); break;//6
    case 7: mySerial.write(num7, 7); break;//7
    case 8: mySerial.write(num8, 7); break;//8
    case 9: mySerial.write(num9, 7); break;//9
    case 10: mySerial.write(num10, 7); break;
    case 11: mySerial.write(num11, 7); break;
    case 12: mySerial.write(num12, 7); break;
    case 13: mySerial.write(num13, 7); break;
    case 14: mySerial.write(num14, 7); break;
    case 15: mySerial.write(num15, 7); break;
    case 16: mySerial.write(num16, 7); break;
    case 17: mySerial.write(num19, 7); break;
    case 18: mySerial.write(num20, 7); break;
    case 19: mySerial.write(num21, 7); break;
    case 20: mySerial.write(num22, 7); break;
    case 21: mySerial.write(num23, 7); break;
    //case 22: mySerial.write(num25, 7); break;
    case 22: mySerial.write(num17, 7); break;
    case 23: mySerial.write(num18, 7); break;
      // case 25: mySerial.write(num26, 7); break;
  }

  if (x > 20)
  {
    comdata = "";//字符串清零
GOTOH:

    while (mySerial.available() > 0)
    {
      comdata += char(mySerial.read());//读取模拟串口数据
      delay(1);
    }
    Serial.println(comdata);
    mySerial.flush();
    if (comdata == "OKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKSTOP" || comdata == "OKSTOP")//判断音乐是否播完
      ;
    else
      goto GOTOH;
  }
  else if (x <= 20 && x > 12)
    delay(1200);
  else
    delay(800);

}



#ifndef YUYIN_H
#define YUYIN_H
#include<arduino.h>
byte num1[7] = {0x7E, 0x05, 0x41, 0x00, 0x01, 0x45, 0xEF}; //1
byte num2[7] = {0x7E, 0x05, 0x41, 0x00, 0x02, 0x46, 0xEF}; //2
byte num3[7] = {0x7E, 0x05, 0x41, 0x00, 0x03, 0x47, 0xEF}; //3
byte num4[7] = {0x7E, 0x05, 0x41, 0x00, 0x04, 0x40, 0xEF}; //4
byte num5[7] = {0x7E, 0x05, 0x41, 0x00, 0x05, 0x41, 0xEF}; //5
byte num6[7] = {0x7E, 0x05, 0x41, 0x00, 0x06, 0x42, 0xEF}; //6
byte num7[7] = {0x7E, 0x05, 0x41, 0x00, 0x07, 0x43, 0xEF}; //7
byte num8[7] = {0x7E, 0x05, 0x41, 0x00, 0x08, 0x4c, 0xEF}; //8
byte num9[7] = {0x7E, 0x05, 0x41, 0x00, 0x09, 0x4d, 0xEF}; //9
byte num10[7] = {0x7E, 0x05, 0x41, 0x00, 0x0a, 0x4e, 0xEF}; //10
byte num11[7] = {0x7E, 0x05, 0x41, 0x00, 0x0b, 0x4f, 0xEF}; //百
byte num12[7] = {0x7E, 0x05, 0x41, 0x00, 0x0c, 0x48, 0xEF}; //点
byte num13[7] = {0x7E, 0x05, 0x41, 0x00, 0x0d, 0x49, 0xEF}; //体重
byte num14[7] = {0x7E, 0x05, 0x41, 0x00, 0x0e, 0x4a, 0xEF}; //千克
byte num15[7] = {0x7E, 0x05, 0x41, 0x00, 0x0f, 0x4b, 0xEF}; //身高
byte num16[7] = {0x7E, 0x05, 0x41, 0x00, 0x10, 0x54, 0xEF}; //厘米
byte num17[7] = {0x7E, 0x05, 0x41, 0x00, 0x11, 0x55, 0xEF}; //欢迎使用
byte num18[7] = {0x7E, 0x05, 0x41, 0x00, 0x12, 0x56, 0xEF}; //欢迎使用,请站好
byte num19[7] = {0x7E, 0x05, 0x41, 0x00, 0x13, 0x57, 0xEF}; //偏胖
byte num20[7] = {0x7E, 0x05, 0x41, 0x00, 0x14, 0x50, 0xEF}; //偏瘦
byte num21[7] = {0x7E, 0x05, 0x41, 0x00, 0x15, 0x51, 0xEF}; //适中
byte num22[7] = {0x7E, 0x05, 0x41, 0x00, 0x16, 0x52, 0xEF}; //建议
byte num23[7] = {0x7E, 0x05, 0x41, 0x00, 0x17, 0x53, 0xEF}; //感谢使用
byte num24[7] = {0x7E, 0x05, 0x41, 0x00, 0x18, 0x5c, 0xEF}; //0
byte num25[7] = {0x7E, 0x05, 0x41, 0x00, 0x19, 0x5d, 0xEF}; //等待超时感谢使用
byte num26[7] = {0x7E, 0x05, 0x41, 0x00, 0x1a, 0x5e, 0xEF}; //JuLy——In Love
#endif



将程序下载进板子以后将语音模块的TX RX于3,2号引脚相连接连上电源喇叭就可以正常放歌了,到此时语音模块正式于完成。



HX711.zip

8.55 KB, 下载次数: 21

 楼主| 发表于 2018-5-25 19:55 | 显示全部楼层
辉煌仪奇 发表于 2018-5-25 19:52
既然是身高体重仪,不可避免的是显示的模块了 ,用OLED12864屏幕太小,LCD12864引脚太多,IIC的太贵,进过 ...

感谢一下大神写的关于LCD显示的帖子给我提供了思路,下面是他们的帖子链接
https://www.arduino.cn/forum.php?mod=viewthread&tid=4822&highlight=12864

https://www.arduino.cn/forum.php?mod=viewthread&tid=76308&highlight=12864

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 09:42 , Processed in 0.126723 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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