코스웨어/15년 스마트컨트롤러
20150908-3번-권오민 - 센서(서미스터) & ARM(Timer & Ultra Sonic)
알 수 없는 사용자
2015. 9. 8. 22:45
◉써미스터
●현재 온도를 출력해주는 프로그램
- 정해진 답은 없습니다~.
- 회로 구현

- 핵심 코드

- Source Coding
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace Temp { public partial class Form1 : Form { string cTemp; int iCnt; string sBuffer;
public Form1() { InitializeComponent(); btn_Close.Enabled = false; txt_Temp.Text = "00.0°C"; }
private void btn_Open_Click(object sender, EventArgs e) { port_1.Open(); btn_Open.Enabled = false; btn_Close.Enabled = true; }
private void btn_Close_Click(object sender, EventArgs e) { port_1.Close(); btn_Open.Enabled = true; btn_Close.Enabled = false; }
private void port_1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { sBuffer = port_1.ReadLine(); this.Invoke(new EventHandler(OutputTemp)); }
private void OutputTemp(object sender, EventArgs e) { int cCheck = 0; string sCheck; try { for (iCnt = 1; iCnt < 13; ++iCnt) { cCheck ^= sBuffer[iCnt]; }
sCheck = cCheck.ToString("x");
if ((sCheck[0] == sBuffer[14]) | (sCheck[1] == sBuffer[15])) { txt_Temp.Text = sBuffer[7].ToString() + sBuffer[8].ToString() + sBuffer[9].ToString() + sBuffer[10].ToString() + "°C"; } } catch { MessageBox.Show("Put your error message here.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } }
|
●결과
- C# 디버그 결과(체크썸 확인)
- C# 결과
◉Timer
●Timer로 LED 점멸하기
- 1초 간격으로 LED가 점멸한다.
- 회로구현

- Source Coding
- main.c

- Makefile

●결과
-
◉Ultra Sonic
●특징
- 초음파는 AIC와 Timer를 사용하면 안 된다.
- 소리의 속도
- 1초에 340m
- 0.0000294117647058824초에 1cm를 간다.
- 계산식

- 소리는 갔다가 와야 알 수 있으므로 2배를 한다.
- 소리가 1cm 전진 할 때 마다 인터럽트가 발생한다.
- 호출된 인터럽트 횟수를 알면 거리를 계산할 수 있다.
- 128분주비를 선택했다.
- 오차가 가장 작아야한다.
