arduino开关控制舵机往复运动_PWM控制舵机,看了都觉得简单易懂(干货)

1.硬件原理

我们通过按键控制舵机的旋转,每按一次按键,舵机旋转的度数增加20度,旋转的同时,点亮LED,用于指示舵机的工作状态。

舵机的基础知识和工作原理上篇文章已介绍过了。这里直接介绍整个控制系统硬件原理。使用的舵机型号是SG90,能够转动的角度是0-180度,驱动电压是3.5-6V,这个舵机的齿轮是塑料的,工作扭矩是1.6KG/CM。

45ae56630d3fbfee91e509932706fdc4.png

舵机

舵机有3根线,电源线连接到Arduino板子的5V接口,信号线连接到IO9,按键接口连接到IO7,并接10k电阻上拉,上拉电阻不能省,否则按键接口电平不稳定,导致舵机不受控制,LED连接IO13。舵机的驱动用PWM信号,是一个周期为20ms,脉宽范围在0.5-2.5ms之间的信号,硬件原理图如下图。

be785b563abbe2c63318e47c30b7c52b.png

原理图

2.程序解读

算法描述࿱

  • 16
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Ubuntu上使用Python控制Arduino中的舵机往复运动,需要进行以下步骤: 1. 连接Arduino板和舵机:将舵机的信号线连接到Arduino板的数字引脚上,记住引脚的编号。 2. 在Ubuntu上安装pyserial模块:pyserial是Python的一个串口通信库,可以用来与Arduino通信。可以使用以下命令在Ubuntu上安装: ``` $ sudo apt-get install python3-serial ``` 3. 在Arduino IDE中编写程序:编写一个简单Arduino程序,通过串口接收来自Python的指令,并控制舵机往复运动。例如: ``` #include <Servo.h> Servo myservo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); // initialize serial communication myservo.attach(9); // attaches the servo on pin 9 to the servo object } void loop() { if (Serial.available() > 0) { // if data is available int angle = Serial.read(); // read the incoming byte pos = map(angle, 0, 180, 0, 180); // map the angle to servo position myservo.write(pos); // set servo position delay(1000); // wait for 1 second myservo.write(180-pos); // set servo position to the opposite angle delay(1000); // wait for 1 second } } ``` 4. 在Python中编写控制程序:编写一个Python程序,通过串口向Arduino发送指令,控制舵机往复运动。例如: ``` import serial import time ser = serial.Serial('/dev/ttyACM0', 9600) # open serial port time.sleep(2) # wait for Arduino to reset while True: ser.write('90'.encode()) # send angle to Arduino ``` 将上述Python程序保存为一个文件,例如control_servo.py,然后在终端中运行以下命令即可控制舵机往复运动: ``` $ python3 control_servo.py ``` 在程序中每次向Arduino发送90度的指令,Arduino程序会将舵机旋转到90度位置,然后等待1秒钟,再将舵机旋转到90度位置的对面位置,等待1秒钟,然后重复这个过程。这样就可以实现舵机的往复运动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值