新购置一套《百变之星创意拼装套件专业版》
按照手册对一些零部件做了测试:
发现问题如下,希望得到答复:
1.在《百变之星创意拼装套件电控用户手册中》第17页:按键与LED的实验
程序本身没有什么问题,可是实验结果却是,按下按钮,灯灭,松开按钮,灯亮。与手册中描述的结果正好相反。正常的逻辑也应该是按下按钮,灯亮才对。
程序如下:
int buttonPin = A0; // 定义按键为 pin A0
int ledPin = 13; // 定义 LED 为 pin 13
int buttonState = 0; //定义并初始化按键状态
void setup()
{
pinMode(ledPin, OUTPUT); // 设置数字端口 13 为输出模式
pinMode(buttonPin, INPUT); // 设置数字端口 14 为输入模式
}
void loop()
{
buttonState = digitalRead(buttonPin); //读取 Pin 14 的状态
if(buttonState == HIGH) //判断是否为高
{
digitalWrite(ledPin, HIGH); //如果是高,设置 L 灯亮
}
else
{
digitalWrite(ledPin, LOW); //如果是低,设置 LED 灯灭
}
}
2.舵机旋转角度不到位,有卡滞的感觉。舵机是否存在质量问题。
现象:按照程序,舵机应该旋转180°后换向,实际上没能转到位,比较明显。目测至少在少转了5°以上。
为了看得更清楚一点,我在转向的程序语句前加了delay(3000);让舵机旋转停止后延迟3s再转向。发现顺时针旋转停止后,有“兹兹”的声音,发出声音约1s,似乎是被卡滞住。这应该是导致舵机旋转不到位的原因。
顺时针转动正常,也无异音。
几个舵机都有这样的情况。
(另:有一个舵机不转干脆不转,但能听到电流声)
程序如下:
#include <Servo.h> // 声明调用 Servo.h 库
Servo myservo; // 创建一个舵机对象
int pos = 0; // 变量 pos 用来存储舵机位置
void setup()
{
myservo.attach(10); // 将引脚 10 上的舵机与声明的舵机对象连接起来
}
void loop()
{
for(pos = 0; pos< 180; pos += 1) // 舵机从 0°转到 180°,每次增加 1°
{
myservo.write(pos); // 给舵机写入角度
delay(15); // 延时 15ms 让舵机转到指定位置
}
delay (3000);
for(pos = 180; pos>=1; pos-=1) // 舵机从 180°回到 0°,每次减小 1°
{
myservo.write(pos); // 写角度到舵机
delay(15); // 延时 15ms 让舵机转到指定位置
}
delay (3000);
}
|