Arduino自带延时库,控制4个9g舵机

本文介绍了一种使用单片机通过延时函数模拟PWM信号来控制四个舵机的方法。详细展示了如何设置引脚模式、定义舵机脉冲宽度及角度转换函数,并实现了两组不同的舵机旋转动作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*控制4个舵机旋转*/

#define  gear1  10      // 舵机1
#define  gear2  11
#define  gear3  12
#define  gear4  13

int flag1 = 0;                     //舵机启动/停止标志位
int flag2 = 0;                    
void servopulse(int sp1,int val);
void servo_run(int pin,int angle );

void setup() {
    pinMode(gear1,OUTPUT);
    pinMode(gear2,OUTPUT);
    pinMode(gear3,OUTPUT);
    pinMode(gear4,OUTPUT);
}

void loop() {
  if(!flag1)                                   //执行第一组动作
  {
    servo_run(gear1,150);     // gear1旋转到0度                       
    servo_run(gear2,0);     //gear2旋转到0度                                          
    servo_run(gear3,90);     //gear3旋转到90度
    servo_run(gear4,180);    //gear4旋转到180度
    flag1 = 1;              //达到指定位置,让舵机停下 
  }                     
     
//    if(!flag2)                                //执行第二组动作
//  {
//      servo_run(gear1,180);     // gear1旋转到180度
//      servo_run(gear2,180);     //gear2旋转到180度                                          
//      servo_run(gear3,180);     //gear3旋转到180度
//      servo_run(gear4,180);    //gear4旋转到180度
//     flag2= 1;              //达到指定位置,让舵机停下 
//  }   
}

void servopulse(int addr,int val)//定义一个脉冲函数
{
    int angle2us;
    angle2us=map(val,0,180,500,2480);   //0-180度 映射到500~2480us
    digitalWrite(addr,HIGH);//将舵机接口电平至高
    delayMicroseconds(angle2us);//延时脉宽值的微秒数
    digitalWrite(addr,LOW);//将舵机接口电平至低
    delay(20-angle2us/1000);   //延迟到20ms
}
void servo_run(int pin,int angle )        //给定足够时间达到指定位置
{  
    for(int i = 0 ; i < 50; i++)          //若未达到指定位置,延长循环次数即可   给定时间为30*20ms
     servopulse(pin,angle);
}

这个很简单了,延时函数模拟PWM,会让单片机工作的没有效率··· 

 参考这个更好些:https://blog.youkuaiyun.com/qq_41736190/article/details/81907936

<think>好的,用户想查找Arduino自带的例程和示例代码。首先,我需要回忆一下Arduino IDE的结构。根据引用3,用户提到通过“文件 - 示例 - Basics - Blink”可以找到示例代码,这说明示例代码是分类存放的。Arduino IDE内置了许多,每个下都有对应的示例,比如基础示例、传感器示例等。 用户可能不太清楚如何找到这些示例,或者可能想了解有哪些分类。我需要分步骤说明如何访问这些示例,可能包括菜单导航、的分类,比如基础、数字、模拟、通信等。同时,需要提到不同版本的IDE可能会有不同的示例,但大体结构类似。 另外,引用2提到用户可能自己编写,但这里的问题是关于自带的例程,所以重点应放在IDE内置的示例上。可能需要举例说明几个常见的示例,比如Blink、AnalogRead等,以及如何根据不同的查找,比如Servo下的示例。 用户还可能想知道如何验证示例是否正确运行,比如连接板子后上传代码,所以需要简要提到操作步骤。需要确保回答结构清晰,步骤明确,方便用户按照指引找到示例代码。</think>在Arduino IDE中访问自带例程的路径和方式如下: ### 一、访问自带示例的步骤 1. **菜单导航** - 点击顶部菜单栏的"文件" → 选择"示例" → 展开分类列表 - 支持两种分类方式: * 按功能分类:Basics/Digital/Analog/Communication等 * 按分类:显示已安装对应的示例(需先安装) 2. **核心分类说明** - **Basics**:包含$Blink$、$BareMinimum$等基础程序 - **Digital**:数字信号处理示例,如$Button$按键检测 - **Analog**:模拟信号处理示例,如$AnalogReadSerial$串口绘图 - **Communication**:包含$ASCIITable$、$Dimmer$等通信协议示例 3. **扩展示例**(以常见为例) - **Servo**:舵机控制程序 - **LiquidCrystal**:LCD显示屏驱动 - **Stepper**:步进电机控制 ### 二、示例代码运行验证 ```cpp // 以Blink示例代码为例(引用[3]): void setup() { pinMode(LED_BUILTIN, OUTPUT); // 初始化LED引脚 } void loop() { digitalWrite(LED_BUILTIN, HIGH); // LED亮 delay(1000); // 延时1秒 digitalWrite(LED_BUILTIN, LOW); // LED灭 delay(1000); // 延时1秒 } ``` 通过选择主板型号→点击上传按钮,可观察板载LED实现秒级闪烁[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值