电子设计大赛|2020年电赛C题小车天津市一等奖代码msp430F5529加整体设计报告

【电子设计大赛|2020年电赛C题小车天津市一等奖代码msp430F5529加整体设计报告】编辑时间:2021.9.2
设计报告在我上传的资源中,粉丝免费下载链接:https://download.csdn.net/download/qq_45583898/16091911
电子设计大赛|2020年电赛C题小车天津市一等奖代码msp430F5529加整体设计报告
文章图片
资源实图如上所示
使用Energia对msp430进行编程,这个软件跟Arduino的语言是一样的,纯C语言,不过这个软件不是那么容易安装成功,多试验几个电脑。

#define STOP 0 #define FORWARD 1 #define BACKWARD 2 #define TURNLEFT 3 #define TURNRIGHT 4const int L298pin1 = P6_0; // 控制左右两个电机 const int L298pin2 = P6_1; const int L298pin3 = P6_2; const int L298pin4 = P6_3; const int ENA = P2_4; //控制PWM const int ENB = P2_5; const int sensor1 = P2_3; //四路传感器 const int sensor2 = P2_6; const int sensor3 = P1_4; const int sensor4 = P1_5; const int pinBuzzer = P1_6; void setup() { Serial.begin(9600); pinMode(L298pin1,OUTPUT); pinMode(L298pin2,OUTPUT); pinMode(L298pin3,OUTPUT); pinMode(L298pin4,OUTPUT); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode(pinBuzzer,OUTPUT); pinMode(sensor1,INPUT); pinMode(sensor2,INPUT); pinMode(sensor3,INPUT); pinMode(sensor4,INPUT); } void loop() { tracing(); } void loop2()//无源蜂鸣器 { long frequency=900; //频率, 单位Hz //用tone()函数发出频率为frequency的波形 tone(pinBuzzer, frequency ); delay(1000); //等待1000毫秒noTone(pinBuzzer); //停止发声 delay(2000); //等待2000毫秒} void motorRun(int cmd,int value)//定义函数,两个形参分别:cmd控制方向,value是速度值 { analogWrite(ENA, value); //设置PWM输出,value设置速度 analogWrite(ENB, value); switch(cmd){ case FORWARD: Serial.println("FORWARD"); //前进 digitalWrite(L298pin1,HIGH); digitalWrite(L298pin2,LOW); digitalWrite(L298pin3,HIGH); digitalWrite(L298pin4,LOW); break; case BACKWARD: Serial.println("BACKWARD"); //后退 digitalWrite(L298pin1,LOW); digitalWrite(L298pin2,HIGH); digitalWrite(L298pin3,LOW); digitalWrite(L298pin4,HIGH); break; case TURNLEFT: Serial.println("TURNLEFT"); //向左 digitalWrite(L298pin1,LOW); digitalWrite(L298pin2,LOW); digitalWrite(L298pin3,HIGH); digitalWrite(L298pin4,LOW); break; case TURNRIGHT: Serial.println("TURNRIGHT"); //向右 digitalWrite(L298pin1,HIGH); digitalWrite(L298pin2,LOW); digitalWrite(L298pin3,LOW); digitalWrite(L298pin4,LOW); break; default: Serial.println("STOP"); //停止 digitalWrite(L298pin1,LOW); digitalWrite(L298pin2,LOW); digitalWrite(L298pin3,LOW); digitalWrite(L298pin4,LOW); } }void tracing() { int data[5]; data[0] = digitalRead(sensor1); //读取四个传感器值 data[1] = digitalRead(sensor2); data[2] = digitalRead(sensor3); data[3] = digitalRead(sensor4); if(data[0] && data[1] && data[2] && data[3]) //左右都没有检测到 { motorRun(FORWARD,130); }if( !data[1]) //右边检测到黑线 { motorRun(TURNRIGHT,130); delay(230); }if( !data[2]) //左边检测到黑线 { motorRun(TURNLEFT,130); delay(230); }if( !data[0]) //左边检测到黑线 {delay(80); if(!data[3]||(!data[1]&&!data[2])) {motorRun(STOP, 0); delay(300); loop2(); delay(10000); } else{ motorRun(TURNRIGHT,130); delay(2800); } } Serial.print(data[0]); Serial.print("---"); Serial.print(data[1]); Serial.print("---"); Serial.print(data[2]); Serial.print("---"); Serial.println(data[3]); }```

    推荐阅读