触须测试程序

/***********************************************************
功能:触须测试程序
说明:左触须接P1_4,右触须接P2_3)
时间:2012.12.10
作者:荆轩道
************************************************************/
#include<BoeBot.h>
#include<uart.h>

int P1_4state(void)//获取P1_4的状态
{
 return (P1&0x10)?1:0; //三木运算符
}
int P2_3state(void)//获取P2_3的状态
{
 return (P2&0x08)?1:0;
}

int main(void)

 uart_Init(); 
 printf("WHISKER STARTES\n");
 while(1)
 {
  printf("右边胡须的状态:%d  ",P1_4state());
  printf("左边胡须的状态:%d\n",P2_3state());
  delay_nms(150);
 }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个机器人的控制程序,需要使用传感器来检测障碍物并控制机器人的移动。下面是一个简单的程序示例,可以实现以上三个情况: ``` #include <Servo.h> Servo leftServo; Servo rightServo; int leftPin = A0; // 左边触须的引脚 int rightPin = A1; // 右边触须的引脚 int leftValue; // 左边触须的数值 int rightValue; // 右边触须的数值 void setup() { leftServo.attach(9); rightServo.attach(10); pinMode(leftPin, INPUT); pinMode(rightPin, INPUT); leftServo.write(90); rightServo.write(90); } void loop() { leftValue = analogRead(leftPin); rightValue = analogRead(rightPin); if (leftValue > 800 && rightValue > 800) { // 若两边触须都碰触到障碍物 backward(); delay(1000); turnLeft(120); forward(); } else if (leftValue > 800) { // 若仅有左边触须碰触障碍物 backward(); delay(1000); turnRight(60); forward(); } else if (rightValue > 800) { // 若仅有右边触须碰触障碍物 backward(); delay(1000); turnLeft(60); forward(); } else { // 若没有碰触到障碍物,则继续直线前进 forward(); } } void forward() { leftServo.write(120); rightServo.write(60); } void backward() { leftServo.write(60); rightServo.write(120); } void turnLeft(int degree) { leftServo.write(90 + degree); rightServo.write(60); } void turnRight(int degree) { leftServo.write(120); rightServo.write(90 - degree); } ``` 这段程序中使用了两个舵机来控制机器人的左右轮子,通过改变舵机的角度来控制机器人的转向。同时,使用了两个触须传感器来检测障碍物,若有碰触则执行相应的操作。在 `forward()` 函数中,舵机分别被设置为前进状态,而在 `backward()` 函数中,舵机被设置为倒退状态。 `turnLeft()` 和 `turnRight()` 函数用于实现向左或向右转的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值