英特尔Galileo开发:ArduinoIDE、Wiring语言与伺服电机API
立即解锁
发布时间: 2025-08-21 00:15:05 阅读量: 1 订阅数: 4 


英特尔Galileo开发实战指南
### 英特尔Galileo开发:Arduino IDE、Wiring语言与伺服电机API
#### 1. 项目准备与代码运行
在开始项目之前,需要进行一系列准备工作。首先,要将Python脚本传输到英特尔Galileo开发板上。可以使用FTP进行传输,确保将脚本传输到正确的路径,因为代码会搜索`/home/root/emailCounter.py`这个路径。若传输到其他路径,就需要修改代码中的路径。
接着,要保证WiFi或以太网正常工作,因为该项目需要网络连接。在运行代码之前,还需在代码开头添加相关凭证信息,示例代码如下:
```cpp
// add your credentials here
String gmailUserName=""; // email or password
String gmailPassword=""; // your password
```
当Python脚本复制到正确路径、网络连接正常且凭证信息已添加到代码中后,就可以运行代码了。运行代码时,按下`Ctrl + Shift + M`可在串口控制台查看调试信息。若操作够快,会看到“ I am ready to check now...”的消息,这表明代码已读取未读邮件数量并等待新邮件。此时,使用浏览器打开Gmail并给自己发送一封邮件,最多10秒后,连接到引脚2的LED灯应会亮起。
#### 2. 代码审查
`setup()`函数会有3秒的延迟,目的是让用户有时间启动串口控制台并捕获`Serial.print()`和`Serial.println()`打印的第一条调试信息。该函数还会调用`setAlarm()`函数来初始化定时器设置,通过`pinMode()`将引脚2设置为输出模式,因为LED必须连接到该引脚,然后使用`digitalWrite()`将LED关闭。
`setAlarm()`函数使用`setitimer()`创建一个定时器,在代码运行1秒后调用`timerHandler()`函数,之后每隔10秒调用一次。与常规的Arduino参考不同,使用POSIX函数控制时间更简便。创建的定时器类型为`ITIMER_VIRTUAL`,这意味着只有在代码运行时才会调用函数处理程序。
当`timerHandler()`被调用时,它会调用`processEmailCounter()`函数,该函数负责执行`emailCounter.py` Python脚本。脚本接收用户凭证并返回Gmail收件箱中的未读邮件数量。代码使用`popen()`函数接收响应,并将邮件数量存储在字符数组中,再使用`atoi()`将其转换为整数格式。
`timerHandler()`函数使用`current_emails_counter`和`last_emails_counter`两个变量来判断未读邮件数量是否增加。若增加,就会通过`digitalWire()`将连接到引脚2的LED设置为高电平。
该项目需要网络连接,建议使用WiFi卡或以太网电缆,并按照相关说明设置开发板。若在运行代码前已建立网络连接,可避免使用WiFi或以太网库。
#### 3. 伺服电机API:理论与实践
伺服电机在机器人和远程控制设备(如遥控飞机)中广泛应用,但实际操作与理论有所不同。理论上,伺服电机使用脉宽调制(PWM)脉冲在20毫秒(50Hz)的周期内,以1到2毫秒的脉冲宽度在0到180度之间旋转,工作电压为4.5到6VDC。
要使用新的API来操作伺服电机,需将伺服电机连接到英特尔Galileo开发板的引脚。材料清单如下:
| 数量 | 描述 |
| ---- | ---- |
| 2 | Servo Futaba S3003或等效型号 |
连接时,将VCC连接到5V,接地端连接到开发板的接地引脚,脉冲信号引脚连接到引脚9。以下是一个简单的代码示例:
```cpp
#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
// in theory 0 degrees
myservo.writeMicroseconds(0);
delay(2000);
// in theory 180 degrees
myservo.writeMicroseconds(2000);
delay(2000);
}
```
上述代码创建了一个连接到引脚9的伺服电机对象。在`loop()`函数中,先发送0微秒的脉冲(理论上为0度),延迟2秒后,发送2000微秒的脉冲(理论上为180度)。但如果使用Futaba S3003或等效型号的伺服电机,会发现电机无法转到180
0
0
复制全文
相关推荐








