“4位数码管模块”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
应用示例
第50行: 第50行:
 
<img src="http://yfrobot.gitee.io/pic/lib/TM1650_x.rar"  alt="4位数码管显示TM1650库文件" />
 
<img src="http://yfrobot.gitee.io/pic/lib/TM1650_x.rar"  alt="4位数码管显示TM1650库文件" />
 
<pre >
 
<pre >
/*
+
/*------------------------------------------------------------------------------------
Potentiometer Test
+
 
*/
+
  TM1650 nixie tube
int pPin = A0;
+
 
int pVal = 0;
+
  This example code shows how to use the functions of the TM1650 Library.
int pVal_old = 0;
+
 
 +
  -------------------------------------------------------------------------------------*/
 +
/*************************************************************************************/
 +
 
 +
#include<tm1650.h>
 +
 
 +
#define ON DISPLAY_ON
 +
#define OFF DISPLAY_OFF
 +
#define SegmentMode _8_SEGMENT_MODE
 +
unsigned char  LightLevel = LV2;
 +
unsigned char  WorkMode = NORMAL_MODE;
 +
 
 +
//define each segment
 +
const unsigned char  Seg_test[8] =      {0x20, 0x01, 0x02, 0x04, 0x08, 0x10, 0x40, 0x80};
 +
//number 0-9 code
 +
const unsigned char Number_arr[10] =  {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
 +
 
 +
unsigned char i, j = 0, k = 0, l = 0, m = 0;
 +
unsigned char temp[4] = {0x3f, 0x06, 0x5b, 0x4f};
 +
boolean err = 0;
 +
 
 +
int pin_SCK = 10;
 +
int pin_DIO = 11;
 +
 
 +
TM1650 tm1650(pin_SCK, pin_DIO);
 +
 
 
void setup()
 
void setup()
 
{
 
{
  pinMode(pPin,INPUT);     
+
 
  Serial.begin(9600); 
+
 
}
 
}
 +
 
void loop()
 
void loop()
 
{
 
{
   // 读取A0模拟口的数值(0-5V 对应 0-1204取值)
+
 
   pVal = analogRead(pPin);   
+
   //config tm1650
   if(abs(pVal - pVal_old) >= 2 ){
+
   err = tm1650.DisplayConfig_TM1650(LightLevel, SegmentMode, WorkMode, ON);
     Serial.println(pVal);
+
   //all nixie tube turn on
    pVal_old = pVal;
+
   for (i = 0; i < 4; i++)
 +
  {
 +
     err = tm1650.DisplayOneDigi_TM1650(i + 1, 0xFF);
 
   }
 
   }
 +
  delay(500);
 +
 +
  //loop each segment
 +
  for (m = 0; m < 8; m++)
 +
  {
 +
    for (i = 0; i < 4; i++)
 +
    {
 +
      err = tm1650.DisplayOneDigi_TM1650(i + 1, Seg_test[m]);
 +
    }
 +
    delay(500);
 +
  }
 +
 +
  //display form 0 to 9
 +
  for (m = 0; m <= 9; m++)
 +
  {
 +
    for (i = 0; i < 4; i++)
 +
    {
 +
      err = tm1650.DisplayOneDigi_TM1650(i + 1, Number_arr[m]);
 +
    }
 +
    delay(500);
 +
  }
 +
  //display the content of array temp[]
 +
  for (i = 0; i < 4; i++)
 +
  {
 +
    err = tm1650.DisplayOneDigi_TM1650(i + 1, temp[i]);
 +
  }
 +
  delay(500);
 +
 +
  //all turn off
 +
  err = tm1650.DisplayOFF_TM1650(LightLevel, SegmentMode, WorkMode);
 +
  delay(1000);
 +
 +
  //turn on again
 +
  err = tm1650.DisplayON_TM1650(LightLevel, SegmentMode, WorkMode);
 +
  delay(1000);
 
}
 
}
 
</pre>
 
</pre>
 
 程序下载地址:[https://eyun.baidu.com/s/3miecpcc PotentiometerTest]
 
 程序下载地址:[https://eyun.baidu.com/s/3miecpcc PotentiometerTest]
  
 程序运行结果: 电位器值串口打印,结 如下图:
+
 程序运行结果: 根据显示效 看程序,更方便理解
  
 
[[File:电位器串口输出.png|450px|center]]
 
[[File:电位器串口输出.png|450px|center]]

2019年12月26日 (四) 09:33的版本

生成缩略图出错:文件可能丢失:
4位数码管


产品简介


4位数码管模块是采用0.56英寸4位数码管设计制作,有小数点、时钟两种模式可选择,采用PH2.0-4P接口/XH2.54-4P排针接口,配合专用传感器线使用方便接线;且有M3安装柱可选配,方便固定。

将4位数码管模块加入项目中,可用来显示数值、时钟等信息。


规格参数


  • 数码管:0.56 英寸,4 位
  • 驱动IC:TM1650
  • 工作电压 3V~5V
  • 工作温度:-40℃~80℃
  • 亮度等级:8 级亮度可设置
  • 模块尺寸:50.5mm * 19.5mm
  • 安装孔:3mm
  • 安装孔中心距:42mm * 12mm
  • 模块重量:3.8g


引脚说明


  • 1. GND 黑线 -- Gnd(地)
  • 2. VCC 红线 -- Vcc(电源+5V)
  • 3. CLK 蓝线 -- 信号
  • 3. DIO 白线 -- 信号


应用示例


电路连接示意图

电位器模块的 G、V、S分别连接 Arduino UNO的GND、VCC(+5V)、A0引脚。

4位数码管显示


示例代码

示例一:4位数码管显示测试
4位数码管显示TM1650库文件

/*------------------------------------------------------------------------------------

   TM1650 nixie tube

   This example code shows how to use the functions of the TM1650 Library.

  -------------------------------------------------------------------------------------*/
/*************************************************************************************/

#include<tm1650.h>

#define ON	DISPLAY_ON
#define OFF	DISPLAY_OFF
#define SegmentMode		_8_SEGMENT_MODE
unsigned char  LightLevel = LV2;
unsigned char  WorkMode = NORMAL_MODE;

//define each segment
const unsigned char  Seg_test[8] =      {0x20, 0x01, 0x02, 0x04, 0x08, 0x10, 0x40, 0x80};
//number 0-9 code
const unsigned char Number_arr[10] =   {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

unsigned char i, j = 0, k = 0, l = 0, m = 0;
unsigned char temp[4] = {0x3f, 0x06, 0x5b, 0x4f};
boolean err = 0;

int	pin_SCK = 10;
int	pin_DIO = 11;

TM1650 tm1650(pin_SCK, pin_DIO);

void setup()
{

}

void loop()
{

  //config tm1650
  err = tm1650.DisplayConfig_TM1650(LightLevel, SegmentMode, WorkMode, ON);
  //all nixie tube turn on
  for (i = 0; i < 4; i++)
  {
    err = tm1650.DisplayOneDigi_TM1650(i + 1, 0xFF);
  }
  delay(500);

  //loop each segment
  for (m = 0; m < 8; m++)
  {
    for (i = 0; i < 4; i++)
    {
      err = tm1650.DisplayOneDigi_TM1650(i + 1, Seg_test[m]);
    }
    delay(500);
  }

  //display form 0 to 9
  for (m = 0; m <= 9; m++)
  {
    for (i = 0; i < 4; i++)
    {
      err = tm1650.DisplayOneDigi_TM1650(i + 1, Number_arr[m]);
    }
    delay(500);
  }
  //display the content of array temp[]
  for (i = 0; i < 4; i++)
  {
    err = tm1650.DisplayOneDigi_TM1650(i + 1, temp[i]);
  }
  delay(500);

  //all turn off
  err = tm1650.DisplayOFF_TM1650(LightLevel, SegmentMode, WorkMode);
  delay(1000);

  //turn on again
  err = tm1650.DisplayON_TM1650(LightLevel, SegmentMode, WorkMode);
  delay(1000);
}

程序下载地址:PotentiometerTest

程序运行结果:根据显示效果看程序,更方便理解

生成缩略图出错:文件可能丢失:




示例二:电位器控制彩色LED模块变色
电路连接示意图

potentiometer2


/*
  Potentiometer control RGB LED change color
*/

#include <Adafruit_NeoPixel.h>

#define RGBLEDPin  5
#define NUMPIXELS  4
#define pPin  A0

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, RGBLEDPin, NEO_GRB + NEO_KHZ800);

int pVal = 0;
int RVal = 0;
int GVal = 0;
int BVal = 0;

void setup()
{
  pinMode(RGBLEDPin, OUTPUT);
  pixels.begin(); // This initializes the NeoPixel library.
  pixels.show();
}

void loop()
{
  pVal = analogRead(pPin);    //读取A0模拟口的数值(0-5V 对应 0-1203取值)
  if (pVal >= 0 && pVal <= 170) {
    RVal = 255;
    GVal = 0;
    BVal = map(pVal, 0, 170, 0, 255);
  } else if (pVal > 170 && pVal <= 340) {
    RVal = map(pVal, 170, 340, 255, 0);
    GVal = 0;
    BVal = 255;
  } else if (pVal > 340 && pVal <= 510) {
    RVal = 0;
    GVal = map(pVal, 340, 510, 0, 255);
    BVal = 255;
  } else if (pVal > 510 && pVal <= 680) {
    RVal = 0;
    GVal = 255;
    BVal = map(pVal, 510, 680, 255, 0);
  } else if (pVal > 680 && pVal <= 850) {
    RVal = map(pVal, 680, 850, 0, 255);
    GVal = 255;
    BVal = 0;
  } else {
    RVal = 255;
    GVal = map(pVal, 850, 1023, 255, 0);
    BVal = 0;
  }
  lightLED(RVal, GVal, BVal);
}

void lightLED(int r, int g , int b) {
  // For a set of NeoPixels the first NeoPixel is 0, second is 1, all the way up to the count of pixels minus one.
  for (int i = 0; i < NUMPIXELS; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, r, g, b); // Moderately bright green color.
    pixels.show(); // This sends the updated pixel color to the hardware.
  }
}

程序下载地址:ChangeColor

程序运行结果:转动电位器,彩色led变色。






返回首页

更多建议和问题欢迎反馈至 YFRobot论坛

购买方式:YFRobot 电子工作室