前言
这学期开了一门《嵌入式应用系统开发》的课程,本身学软件,对硬件方面也不是特别精通,整理一下我自己学习过程中的想法和笔记分享出来仅供参考。
0 实验目的
模拟雷达 重点 1 串口数据传输和读取 2 绘图控件和绘图坐标系
1 实验前的准备
首先在阅读本教程之前,假设你是有一定C#基础的,因为我是利用C#来编程的,然后开始我们这次实验。
所要用的的工具如下:
- VS2010
- Arduino
- 51单片机
- 舵机
- 超声波测距模块
(所用到部件大致如下图:接线部分不做详细介绍)
2 连接上单片机
连接单片机后,会有未识别的设备显示=>桌面电脑图标,属性找到设备管理器,设备里找到未识别设备=>右键更新驱动=>找到arduino所在路径下drivers文件夹选中,更新驱动=>提示警告一律不管,更新,成功后关闭窗口=>打开arduino后注意首先修改工具里端口的选择
3 单片机代码部分
#include <Servo.h>
const int TrigPin = 2;
const int EchoPin = 3;
Servo myservo;
int p,cm,flag=0;
void setup()
{
Serial.begin(9600);
p=30;
myservo.attach(9); // 设置舵机控制针脚
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop(){
char op= Serial.read();
if(op=='y') {p=30,flag=1;}
else if(op=='x') flag=0;
if(flag==1){
myservo.write(p); delay(50);
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(20);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(20);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH)*0.017; //时间与距离的换算公式
if(cm>=100) cm=100;
Serial.println(cm*2);
delay(100);
p++;
}
}
4 C#代码部分
VS中建立C#窗体程序
查找端口号部分:
public void find_sp()
{
comboBox1.Items.Clear(); //下拉框清空,否则每次刷新找端口得到的内容会追加出现重复的选项
foreach (string s in SerialPort.GetPortNames()) //列出所有端口号作为下拉框的可选项添加到控件中供选择
comboBox1.Items.Add(s);
comboBox1.SelectedIndex = comboBox1.Items.Count - 1; //默认选择最后一个
}
<