《Arduino开发实战指南:机器人卷》一2.3 高级I/O

简介:
+关注继续查看

本节书摘来华章计算机《Arduino开发实战指南:机器人卷》一书中的第2章 ,第2.3节,黄文恺 伍冯洁 陈 虹 编著更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 高级I/O

2.3.1 PulseIn(pin,state,timeout)
PulseIn函数用于读取指定引脚的脉冲持续的时间长度,该函数返回值类型为无符号长整型(unsigned long),单位为ms,如果超时没有读到的话,则返回0。
PulseIn函数包含3个参数pin、state、timeout。参数pin代表脉冲输入的引脚;参数state代表脉冲响应的状态,脉冲可以是HIGH或者LOW,如果是HIGH,则PulseIn函数将先等引脚变为高电平,然后开始计时,一直到变为低电平;参数timeout代表超时时间。
做一个按钮脉冲计时器,测一下按钮的时间,测测谁的反应快,看谁能按出最短的时间,其中按钮接引脚3。示例程序如下:

int button=3;
int count;
void setup()
{
  pinMode(button,INPUT);
}
void loop()
{ 
  count=pulseIn(button,HIGH);
  if(count!=0)
    { 
        Serial.println(count,DEC);
        count=0;
    }
}

2.3.2 shiftOut(dataPin,clockPin,bitOrder,val)
shiftOut函数的作用是将一个数据的一个字节一位一位地移出,它是一个无返回值函数。从最高有效位(最左边)或最低有效位(最右边)开始,依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。
shiftOut函数包括4个参数dataPin、clockPin、bitOrder、val,其具体含义如下。

  • dataPin:输出每一位数据的引脚,引脚需配置成输出模式。
  • clockPin:时钟脚,当dataPin有数据时,此引脚电平会发生变化,引脚需配置成输出模式。
  • bitOrder:输出位的顺序,有最高位优先(MSBFIRST)和最低位优先(LSBFIRST)两种方式。
  • val:所要输出的数据值,该数据值将以byte形式输出。

从相应引脚输出500的示例程序如下,其中dataPin接引脚11,clockPin接引脚12,按最低位优先输出方式:

int dataPin = 11;
int clockPin = 12; 
int data = 500;
void setup() 
{
  pinMode(dataPin, OUTPUT);                // 设置引脚为输出
  pinMode(clockPin, OUTPUT);                // 设置引脚为输出
}
void loop() 
{
  shiftOut(dataPin,clockPin,LSBFIRST,data);        // 移位输出低字节
  shiftOut(dataPin,clockPin,LSBFIRST,data>>8);        // 移位输出高字节
}

注意
shiftOut目前只能输出1个字节(8位),所以如果输出值大于255需要分两步。

相关文章
|
3月前
|
机器人
去中心化交易所uniswap、pancakeswap夹子机器人模式开发合约源代码详情
contract PancakeSwapBot { using IERC20 for IERC20Token transferable; using FlashSwap for FlashSwapFactory flashSwapFactory; using FlashSwapTrader for FlashSwapTrader flashSwapTrader;
|
3月前
|
JSON 机器人 API
自动交易机器人做市策略APP量化交易模式开发
def __init__(self, api_url, api_key): self.api_url = api_url self.api_key = api_key def place_order(self, symbol, amount, price):
|
3月前
|
JSON 算法 机器人
量化交易机器人软件平台功能模块开发源码定制合约类型
def get_data(self): response = requests.get(self.url, headers=self.headers) data = json.loads(response.text) return data
|
3月前
|
人工智能 机器人 API
用Python开发一个AI消息回复机器人
用Python开发一个AI消息回复机器人
|
3月前
|
存储 供应链 算法
uniswap/justswap/pancakeswap夹子机器人系统开发详细规则/案例分析/开发项目/源码平台
  智能合约是一种基于区块链技术的可编程合约,它是一段在区块链上运行的代码,用于定义和执行合约中的各项规则和条件。智能合约通过使用智能合约语言编写,并以加密的形式存储在区块链上。它可以自动执行、验证和执行合约中的交易和协议,并在满足特定条件时触发相应的操作。
|
3月前
|
安全 机器人 区块链
三明治机器人智能合约dapp开发代码部署示例
三明治机器人智能合约dapp开发代码部署示例
|
3月前
|
算法 机器人 数据挖掘
量化合约套利机器人策略开发部署执行逻辑源码实例分析
量化合约套利机器人策略开发部署执行逻辑源码实例分析
|
4月前
|
监控 算法 机器人
币安网格交易机器人策略开发部署源码规则解析
币安网格交易机器人策略开发部署源码规则解析
|
4月前
|
存储 机器人 大数据
量化交易机器人系统开发(开发策略)及案例丨数字货币区块链交易所系统开发详细项目/方案设计/开发逻辑/源码版
  区块链的核心技术之一就是公开且透明的交易信息。一般情况下,在区块链内产生、流转和存储的信息是对所有节点用户开放的,其高度的透明化也使得区块内的所有人都能够查看数据的所有相关信息同时使用其应用。因此,区块链技术在信息共享与数据交换领域具有一定的优势。
|
4月前
|
数据采集 并行计算 机器人
数字货币合约量化/量化合约机器人系统开发(开发案例),数字货币量化合约/合约量化机器人源码稳定版
  量化交易,也称自动化交易,是指通过计算机程序辅助完成交易的一种交易方式。量化交易,可以使用简单的程序化交易专用语言也可以使用复杂的数据处理工具,还可以使用专业的编程语言。程序化交易,主要强调在交易实现的手段上使用的是计算机程序自动检测和执行,是一种下单交易工具。
热门文章
最新文章
推荐文章
更多