stm32寻迹小车开关要怎么连接

stm32寻迹小车开关要怎么连接,第1张

在STM32寻迹小车中,开关通常用于控制小车的启动和停止。开关的连接需要根据具体的电路设计来确定,一般情况下,开关需要连接至STM32的GPIO引脚。

具体连接方法为:将开关的一个端口连接至STM32的GPIO引脚上,另一个端口连接至电源或地线上。这样,当开关处于闭合状态时,STM32的GPIO引脚会被拉高或拉低,从而控制小车的启动和停止。

需要注意的是,连接开关时需要注意开关的电流和电压等参数,以免对电路造成损坏。同时,也需要确保开关的质量和可靠性,以保证小车的正常运行。

中鸣机器人寻迹卡是一种用于机器人寻迹的硬件模块,使用方法如下:

1、连接硬件:将中鸣机器人寻迹卡与主控板连接,注意接口的对应关系,一般使用3针或4针接口进行连接。

2、程序设计:在机器人的程序中,调用中鸣机器人寻迹卡的相关函数,进行模块的初始化和配置。

3、硬件安装:将中鸣机器人寻迹卡安装在机器人底盘的前方,使其可以感知到前方的路面情况。

4、调试测试:对机器人进行测试和调试,观察中鸣机器人寻迹卡的工作情况,根据需要进行调整和优化。

凤凰寻迹软件是骗人的。

市面上确实有一些软件,具有这种功能,毕竟在这种科技愈发发达的时代,监控并不算是一件技术含量特别高的事情。

但是并不意味着,我们就可以完全放心使用,一般而言,这些监控软件都是违法的,一方面可能会导致我们出现违法犯罪的情况,另一方面,这些软件在很大程度上,可能都含有木马病毒程序,一旦你安装之后,就有可能窃取您的yhk信息、支付宝密码等等,给您造成损失。

首先,你没有定义P1口的输入状态, P1DIR = 0x00;其次应该先关闭看门狗,WDTCTL = WDTPW + WDTHOLD; 这个应该是个寻迹小车的程序,最好用定时器来输出PWM波来控制电机转速,直接这样写不太好。

主要我给你提供一个可以编程的控制板,看下下面的地址和视频你就知道了。

产品地址:

>

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

sbit moto1=P1^5;

sbit moto2=P1^6;

sbit moto3=P2^0;

sbit moto4=P2^1;

sbit en1=P1^7;

sbit en2=P2^2;

//循迹口 七个红外传感器///////////////

sbit left1=P1^0;//左边传感器//

sbit left2=P1^1;

sbit left3=P1^2;

sbit mid=P1^3;//黑线位置//

sbit right1=P1^4;

sbit right2=P2^3;

sbit right3=P2^4;//右边传感器////////////////

sbit hled=P0^0;

sbit bled=P0^1;

sbit lled=P0^2;

sbit rled=P0^3;

sbit bizhang=P2^5;

uchar pro_head;

uchar pro_back;

uchar i;

uchar j; //前后占空比标志

void delay(uint z)

{

uchar i;

while(z--)

{

for(i=0;i<121;i++);

}

}

/初始化定时器,中断/

void init()

{

TMOD=0x01;

TH0=(65536-100)/256;

TL0=(65536-100)%256;

EA=1;

ET0=1;

TR0=1;

en1=1;

en2=1;

}

void time0(void) interrupt 1

{

i++;

j++;

if(i<=pro_back)

{

en1=1;

}

else

{

en1=0;

}

if(i==40)

{

en1=~en1;

i=0;

}

if(j<=pro_head)

{

en2=1;

}

else

{

en2=0;

}

if(j==40)

{

en2=~en2;

j=0;

}

TH0=(65536-100)/256;

TL0=(65536-100)%256;

}

void qianjin()//直行/////////////////////

{

pro_back=15;

pro_head=5;

moto1=0;

moto2=0;

moto3=1;

moto4=0;

lled=1;

rled=1;

bled=1;

}

void turn_right1()//右转1函数//

{

pro_back=10;

pro_head=15;

moto1=0;

moto2=1;

moto3=1;

moto4=0;

}

。。。。。。。

void xunji() //循迹函数//

{

uchar flag;

if((left1==0)&&(left2==0)&&(left3==1)&&(mid==1)&&(right1==0)&&(right2==0)&&(right3==0))

{

flag=1;

}

else if((left1==0)&&(left2==0)&&(left3==1)&&(mid==0)&&(right1==0)&&(right2==0)&&(right3==0))

{

flag=2;

}

else if((left1==0)&&(left2==1)&&(left3==1)&&(mid==0)&&(right1==0)&&(right2==0)&&(right3==0))

{

flag=3;

}

、。。。。。。。。。。。。。

switch (flag)

{

case 0:qianjin();headled();

break;

case 1:turn_left1();leftled();

break;

case 2:turn_left2();leftled();

、。。。。。。。。。。。。。。。 break; default:backled();

break;

}

}

void main()

{

init();

delay(600);

jiance();

delay(300);

while(1)

{

if(bizhang==1)

{

xunji();

}

else

bz();

}

}、、、、、、、、、中间省略了,自己根据需要写吧

自己看注释改一下就行 函数都写好了了 没用的删掉就可以了

#include<reg52h>

#include<mathh>

#define uchar unsigned char

#define uint unsigned int

#define L_M 1

#define R_M 2

uchar temp2,temp1,t,m1,m2,redline;

sbit tr=P2^4; //超声波

sbit ec=P2^5; //

sbit en=P2^7; //液晶的EN

sbit rs=P2^6; //液晶RS选择端

//液晶数据口 P0口

sbit Rin_1=P2^0; //寻迹管脚输入

sbit Rin_2=P2^1;

sbit Lin_2=P2^2;

sbit Lin_1=P2^3;

sbit L_EN=P1^0; //左侧电机使能

sbit L_1=P1^1; //左侧电机控制 1

sbit L_2=P1^2; //左侧电机控制 2

sbit R_1=P1^3; //右侧电机控制 1

sbit R_2=P1^4; //右侧电机控制 2

sbit R_EN=P1^5; //右侧电机使能

void delay(uint z) //延时程序1

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void delay1s(uchar t) //1s延时函数

{

uchar a,h,i,j,k;

for(a=t;a>0;a--)

{

for(h=5;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}

}

void v_cotrol(uchar number,uchar speed)

{

if(speed<100)

{

if(number==1)

m1=abs(speed);

if(number==2)

m2=abs(speed);

}

}

void turnleft()

{

L_1=1; // left fan zhuan //

L_2=0;

R_1=1; // right fanzhuan

R_2=0;

}

void turnright()

{

L_1=0; // left zheng zhuan

L_2=1;

R_1=0; // right fanzhuan

R_2=1;

}

void gostright()

{

L_1=0; // left zheng zhuan

L_2=1;

R_1=1; // right zhengzhuan

R_2=0;

}

void goback()

{

L_1=1; // left zheng zhuan

L_2=0;

R_1=0; // right zhengzhuan

R_2=1;

}

void stop()

{

L_1=1; // stop

L_2=1;

R_1=1; // stop

R_2=1;

}

void timer0_int()

{

TMOD=0X01;

TH0=-100/256;

TL0=-100%256;

EA=1;

ET0=1;

TR0=1;

}

state_int()

{

Rin_1=1;

Rin_1=1;

Lin_1=1;

Lin_1=1;

t=0;

m1=50;

m2=50;

stop();

}

void main()

{

timer0_int();

state_int();

while(1)

{

//避障程序

if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))

gostright();

if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))

turnleft();

if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))

turnright();

if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))

goback();

if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))

gostright();

if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))

turnleft();

if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))

turnright();

if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))

goback();

}

while(1);

}

timer0() interrupt 1

{

TH0=-100/256;

TL0=-100%256;

if(t==0)

{

temp1=m1;

temp2=m2;

}

if(t==temp1)

L_EN=0;

if(t==temp2)

R_EN=0;

t++;

if(t==50)

{

t=0;

L_EN=1;

R_EN=1;

}

}

以上就是关于stm32寻迹小车开关要怎么连接全部的内容,包括:stm32寻迹小车开关要怎么连接、中鸣机器人寻迹卡使用、凤凰寻迹微信监控软件是真是假等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10109180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存