` Kittenbot机器人的主控板是一款Arduino板卡,主控芯片是Atmel Mega328。因此,学会如何控制GPIO口,是驱动小车运动的前提。
1 digitalWrite()---数字输出pinMode()函数pinMode()函数用于将特定引脚配置为输入或输出。 可以使用INPUT_PULLUP模式使能内部上拉电阻。 此外,INPUT模式显式禁止内部上拉。 pinMode()函数语法
- Void setup () {
- pinMode (pin , mode);
- }
复制代码
pin - 您希望设置模式的引脚的编号 mode - INPUT,OUTPUT或INPUT_PULLUP
digitalWrite()函数digitalWrite()功能用于向数字引脚写入HIGH或LOW值。 如果该引脚已配置为具有 pinMode()的OUTPUT,其电压将被设置为相应的值:5V(或3.3V板上的3.3V)对于HIGH,0V(接地)对于LOW。 如果引脚配置为INPUT,则digitalWrite()将使能(HIGH)或禁止(LOW)输入引脚上的内部上拉。 建议将 pinMode()设置为INPUT_PULLUP,以启用 内部上拉电阻。 如果不将pinMode()设置为OUTPUT,并将LED连接到引脚,则在调用digitalWrite(HIGH)时,LED可能会变暗。 没有明确设置pinMode(),digitalWrite()将使能内部上拉电阻,它像一个大电流限制电阻。 digitalWrite()函数语法
- Void loop() {
- digitalWrite (pin ,value);
- }
复制代码
pin - 您希望设置模式的引脚的编号 value - HIGH或LOW。 下面,我们通过代码来实现主控板上LED的闪烁控制。 打开主控板原理图 ro***ot_mainboard.pdf ,找到 BLINK LED,可以看到该发光二极管的正极通过1 KΩ的限流电阻连接到5V电源上,负极直接连接到主控板的D13 IO口上。所以,我们只需要将Arduino的D13 IO口设置为输出模式,设置D13输出低电平,则LED被点亮;设置D13输出高电平,则LED被熄灭。
代码如下:
- #define LED 13
- void setup() {
- pinMode(LED, OUTPUT);
- }
- void loop() {
- digitalWrite(LED, 1);
- delay(500);
- digitalWrite(LED, 0);
- delay(500);
- }
复制代码
以上代码实现了,LED周期性点亮和熄灭,半周期为500 ms。
2 analogWrite()---PWM波analogWrite函数通过PWM的方式在引脚上输出一个模拟量,较多的应用在LED亮度控制、电机转速控制等方面。 PWM (Pulse Width Modulation,脉冲宽度调制)方式是通过对一系列脉冲的宽度进行调制,来等效地获得所需要的波形或电压。脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 代码如下,通过PWM的占空比,控制LED的亮度。
- #define led 13
- void setup(){
- pinMode(led, OUTPUT);
- analogWrite(led, 127);
- }
- void loop(){
- }
复制代码
上述代码中,仍然控制D13引脚连接的LED,通过analogWrite(led, 127)调节占空比为50%左右。同理analogWrite(led, 0)调节占空比为0,analogWrite(led, 255)调节占空比为100%。
`
|