본문 바로가기
코스웨어/15년 스마트컨트롤러

20150908-3번-권오민 - 센서(서미스터) & ARM(Timer & Ultra Sonic)

by 알 수 없는 사용자 2015. 9. 8.
728x90
반응형

센서

써미스터

현재 온도를 출력해주는 프로그램

- 정해진 답은 없습니다~.

- 회로 구현



- 핵심 코드



- 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# 결과



 

ARM


timer.c

timer.h

ultra.c

ultra.h

main.c

Timer

TimerLED 점멸하기

- 1초 간격으로 LED가 점멸한다.

- 회로구현



- Source Coding

- main.c



- Makefile



결과

-

 

Ultra Sonic

특징

- 초음파는 AICTimer를 사용하면 안 된다.

- 소리의 속도

    - 1초에 340m

    - 0.0000294117647058824초에 1cm를 간다.

    - 계산식



- 소리는 갔다가 와야 알 수 있으므로 2배를 한다.

- 소리가 1cm 전진 할 때 마다 인터럽트가 발생한다.

    - 호출된 인터럽트 횟수를 알면 거리를 계산할 수 있다.

        - 128분주비를 선택했다.

            - 오차가 가장 작아야한다.


728x90