你的位置:首页 >> 产品展示 >> 薄膜压力传感器 >> 医疗设备  医疗设备
优化的Arduino代码
来源:柔性薄膜传感器_热电堆传感器厂家_热释电红外传感器_热电堆传感器应用电路_台湾热电堆传感器原厂_热电堆传感器应用_热电堆 电路_热释电红外传感器工作原理及结构说明_热释电传感器_红外传感器_可定制_厂家直销_气体传感器 | 发布时间:2020/1/28 10:19:42 | 浏览次数:

第6部分:优化的Arduino代码

实现前一节中讨论的优化,我们将编写一个修改的ARDIIO草图,并尝试以最大速度扫描矩阵阵列。

 

注意,我们牺牲了一些可移植性(由于直接的端口操作),代码现在特定于Arduino Uno和具有兼容端口/头映射的板。我们还消除了输出间隔和换行符,因此我们必须创建一个新的接收应用程序(在第8部分中)来理解发送的数据。

 

性能改进结果显示在下一页。

 

下载代码:fastmarixarray.zip

代码:

/**********************************************************************************************************

 

*项目:FastMatrixArray.ino

 

*签署人:Chris Wittmier@Sensitronics LLC

 

*上次修订日期:2014年4月22日

 

*说明:演示Sensitronics的16x10元件电阻直通模式矩阵。扫描

 

*电子设备包括2个HCT595移位寄存器和2个4051多路复用器,它们连接到Arduino Uno。

 

*这个草图是Uno特定的,并且优化了速度。

 

**********************************************************************************************************/

 

 

 

/**********************************************************************************************************

 

*宏/引脚定义

 

**********************************************************************************************************/

 

#定义波特率115200

 

#定义行计数10

 

#定义列计数16

 

 

#定义PIN_ADC_输入A0

 

#定义管脚移位寄存器数据2

 

#定义引脚移位寄存器时钟3

 

#define PIN_MUX_CHANNEL_04//CHANNEL PIN 0、1、2等必须连接到连续的Arduino PIN

 

#定义PIN_MUX_CHANNEL_15

 

#定义PIN_MUX_信道

 

#define PIN_MUX_INHIBIT_0 7//INHIBIT=active low enable。所有mux IC启用必须连接到连续的Arduino管脚

 

#定义PIN_MUX_INHIBIT_18

 

 

#define SET_SR_DATA_HIGH()端口d |=b0000100

 

#define SET_SR_DATA_LOW()端口d&=~b0000100

 

#define SET_SR_CLK_HIGH()端口d |=b0001000

 

#define SET_SR_CLK_LOW()端口d&=~b0001000

 

 

#定义每个MUX 8行

 

#定义MUX_计数2

 

#定义通道PINS peru MUX 3

 

 

#定义数据包结束字节0xFF

 

#定义MAX_SEND_VALUE 254//reserve 255(0xFF)以标记数据包结束

 

#定义压缩极限254

 

#define MIN_SEND_VALUE 1//低于此阈值的值将被视为零并发送

 

 

#ifndef cbi公司

 

#定义cbi(sfr,位)(sfr字节(sfr)&=~~ BV(位)

 

#恩迪夫

 

#ifndef附属履行机构

 

#定义sbi(sfr,位)(sfr字节(sfr)=BV(位)

 

#恩迪夫

 

 

/**********************************************************************************************************

 

*全球性的

 

**********************************************************************************************************/

 

int current_enabled_mux=mux_COUNT-1;//init to number of last mux so enabled mux increments to first mux on first scan。

 

int compressed_zero_count=0;

 

 

 

/**********************************************************************************************************

 

*设置()

 

**********************************************************************************************************/

 

无效设置()

 

{

 

串行开始(波特率);

 

pinMode(PIN_ADC_输入,输入);

 

pinMode(PIN_移位寄存器数据,输出);

 

pinMode(PIN_移位寄存器时钟,输出);

 

pinMode(PIN_MUX_CHANNEL_0,输出);

 

pinMode(PIN_MUX_CHANNEL_1,输出);

 

pinMode(PIN_MUX_CHANNEL_2,输出);

 

pinMode(PIN_MUX_INHIBIT_0,输出);

 

pinMode(PIN_MUX_INHIBIT_1,输出);

 

 

sbi(ADCSRA,ADPS2);//ADC预分频器设置为CLK/16

 

cbi(ADCSRA,ADPS1);

 

cbi(ADCSRA,ADPS0);

 

}

 

 

 

/**********************************************************************************************************

 

*循环()

 

**********************************************************************************************************/

 

无效循环()

 

{

 

压缩计数=0;

 

对于(int i=0;i<行计数;i++)

 

{

 

刚毛(i);

 

shiftColumn(真);

 

对于(int j=0;j<列计数;j++)

 

{

 

int raw_reading=模拟读取(PIN_ADC_输入);

 

字节发送读取=(字节)(低字节(原始读取>>2));

 

shiftColumn(错误);

 

发送压缩(发送读取);

 

}

 

}

 

如果(压缩的计数大于0)

 

{

 

串行写入((字节)0);

 

串行写入(字节)压缩计数;

 

}

 

串行写入(字节)数据包结束字节;

 

}

 

 

 

/**********************************************************************************************************

 

*setRow()-允许单个mux IC和通道读取指定的矩阵行。digitalWrite()尚未

 

*在这个函数中被替换,因为mux的变化相对较少。

 

*********************************************************************************

 
TAG:压电薄膜,薄膜传感器,压电传感器的应用,压电传感器,压电薄膜传感器原理,压电,压电式传感器,驻极体麦克风,压电式,压电式传感器的应用,传感器应用,压电式传感器应用,力学试验机,压力分布量测系统,磁力传感器,磁电式传感器,力学传感器,F-SCAN,T-SCAN,I-SCAN,K-SCAN
打印本页 || 关闭窗口
 上一篇:Tekscan系统8位模数转换器
 下一篇:一个简单的可视化工具
点击这里给我发消息
点击这里给我发消息
点击这里给我发消息
点击这里给我发消息