Rath-HAL - SPI 读取 AS5047P 磁编码器

Rath-HAL - SPI 读取 AS5047P 磁编码器,第1张

首先引入 AS5600.h 这个库,里面定义了 AS5600 的寄存器地址。

所有连接到 I2C 总线的设备都是开漏输出,因此 I2C 总线需要上拉电阻将总线电压拉到高电平。AS5600 模块上自带上拉电阻,因此 Tequila Nano 与该模块的连接不需要再外置上拉电阻。

在 I2C 初始化部分,我们设置 I2C0_init.clock_speed = 100000,将 I2C 通讯速率设置为 I2C 标准速度 100kHz,但 AS5600 最高支持 1MHz 的高通讯速度。

需要注意的是,在 I2C0_init.address = 0x0U 这里,我们设置的是 Tequila Nano 的 I2C 地址。因为 Tequila Nano 作为 Master 端来驱动 I2C,因此我们不会用到主设备地址,设为 0 即可。

在程序 loop 中,我们通过读取 AS5600 的 AS5600_ANGLE_L_ADDR 和 AS5600_ANGLE_H_ADDR 来获取角度,并将两个 8 位数值组合成一个 uint16_t 获得 raw_angle。之后,我们通过将 ((double)raw_angle / 4096.) * M_2PI 这个公式将 raw_angle 转化为弧度制数值。

关于方向,面对 AS5600 芯片上面的顺时针旋转为正方向。

AS脚本文件是文本文件,你可以使用任意的文本编辑工具编辑它并将它保存在任意位置。要用AS来控制Flash元素,那么就得将AS代码按照一定的规则跟Flash关联起来,一般而言,将AS代码跟Flash关联起来的方法有四种。第一,将AS代码写Flash的帧上,这是最直观,最容易上手的方式。但是,除了实验之外,我们不建议你这么做;第二,将AS代码写到外部脚本文件中,然后用#include关键字插入到帧上。这种方法比第一种方法要进步一些,可以将设计和代码分开保存到不同地方。然而,本质上它跟第一种方法没有太大区别,这也是专业AS程序设计人员不太喜欢的方式;第三,将外部AS类脚本关联到Flash元件上,这种方法适合那些需要在Flash创造环境中绘制复杂图像的情况;第四,将AS代码书写到外部类脚本中,然后用文档类讲他们引入到Flash中。这是AS3的推荐代码书写方式,如果你有心成为一名位于牛A程序员和牛C程序员之间的AS程序员,那么请多多实践这种方式。下面的内容是这后三种脚本引入方式的例子。

使用#include关键字导入:

(1) 创建一个HelloWorld.txt,用记事本编辑打开它,在上面书写代码: trace("Hello World!")

(2) 将刚才创建的HelloWorld.txt的扩展名改成.as

(3) 启动Flash,新建一个Flash 文件(ActionScript3.0),并将其与HelloWorld.as保存到相同目录

(4) 选中Flash文件的第一帧,然后按下F9,打开脚本窗口,在里面输入:include "HelloWorld.as"

(5) 同时按下Ctrl+Enter键,测试你的影片

【注意】

1) 如果as脚本文件跟Flash 文件(.fla文件)不在同一路径下,那么必须为include语句指定绝对路径。例如,上例中的HelloWorld.as的存放路径为F:/AS/AS3/lib/HelloWorld.as

那么,那么include语句就应该写成 include "F://AS//AS3//lib//HelloWorld.as"

这时要特别注意,必须为文件路径中的每一个斜杠("/")前再添加一个"/",这是因为在编程语言中,斜杠要用转义字符来表示,两个斜杠("//")才能表示一个真实的"/"

2) 如果是AS2环境,include关键字前面必须加上符号"#",且语句最后一定不能有分号。

将外部类文件关联到Flash元件上:

(1) 新建一个ActionScript文件,保存为HelloWorld.as

(2) 将下面的代码复制粘贴到HelloWorld.as文件中

[plain] view plain copy

package

{

import flash.display.MovieClip

public class HelloWorld extends MovieClip

{

public function HelloWorld()

{

trace("HelloWorld")

}

public function say(arg:String)

{

trace(arg)

}

}

}

(3) 启动Flash,新建一个Flash 文件(ActionScript3.0),并将其与HelloWorld.as保存到相同目录

(4) 在Flash环境中按下Ctrl+F8,新建一个元件,元件类型为影片剪辑

(5) 选中库中刚刚新建的那个影片剪辑,右键点击,在d出菜单上选择"属性"

(6) 元件属性设置面板中勾选"链接-为ActionScript导出"

(7) 在"类"文本框中输入"HelloWorld"(注意,不要双引号啊)

(8) 将设置好属性的元件拖到舞台上,创建一个实例

(9) 同时按下Ctrl+Enter键,测试你的影片

【注意】

1) 外部AS脚本文件的保存名字必须跟类名相同

2) 如果外部脚本在包中,必须以如下格式填写ActionScript导出类名:packageName.className

2) 如果要在帧上调用上例中元件所关联的类中的"say"方法,只需要选中舞台上的元件实例,在实例属性面板中为它起名为"t_mc",然后在主时间轴的帧上添加:t_mc.say("Welcome to home for as")

将外部AS类设置为文档类

(1) 新建一个ActionScript文件,保存为HelloWorld.as

(2) 将下面的代码复制粘贴到HelloWorld.as文件中

[plain] view plain copy

package

{

import flash.display.Sprite

public class HelloWorld extends Sprite

{

public function HelloWorld()

{

trace("HelloWorld")

}

public function say(arg:String)

{

trace(arg)

}

}

}

(3) 启动Flash,新建一个Flash 文件(ActionScript3.0),并将其与HelloWorld.as保存到相同目录

(4) 在舞台的空白处单击鼠标,然后在“属性面板->文档类”文本框里填入HelloWorld

(5) 同时按下Ctrl+Enter键,测试你的影片

(6) 要调用HelloWorld类中的say方法,只需要将函数调用语句添加到它自己的构造函数中就可以了

【注意】

1) 如果外部脚本在包中,必须以如下格式填写文档类名:packageName.className

2) 文档类引入脚本的方式只适用于Flash CS3以上版本的IDE环境


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11948678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存