summaryrefslogtreecommitdiff
path: root/user-code/thermistor/thermistor-julia.tex
blob: 75f4067a7c71cb7715d595635672c6d2a3819654 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
\section{Interfacing thermistor from Julia}
\subsection{Interfacing the thermistor}
In this section, we discuss how to carry out the experiments of the
previous section from Julia.  We will list the same two experiments,
in the same order.  The Shield has to be attached to the \arduino\ board
before doing these experiments and the \arduino\ needs to be connected to the computer
with a USB cable, as shown in \figref{arduino}.
The reader should go through the instructions given in \secref{sec:julia-start} before getting started.


\begin{enumerate}
  \item In the first experiment, we will read the thermistor values.
        The code for this experiment is given in
        \juliaref{julia:therm-read}. As explained earlier in \secref{sec:light-julia}, we begin with importing the SerialPorts
        \cite{julia-serial-ports} package and the module ArduinoTools followed by setting up the serial port.
        Then, we read the input coming from analog pin 4 using the
        following command:
        \lstinputlisting[firstline=7,lastline=7]
        {\LocTHERMjuliacode/therm-read.jl} Note that the one leg of the thermistor on
        the Shield is connected to analog pin 4 of \arduino\,
        as given in \figref{fig:therm-conn}. The read value is displayed
        by the following command:
        \lstinputlisting[firstline=8,lastline=8]
        {\LocTHERMjuliacode/therm-read.jl} where {\tt val} contains
        the thermistor values ranging from 0 to 1023. To
        encourage the user to have a good hands-on, we run these commands in
        a {\tt for} loop for 20 iterations.

        While running this experiment,
        the readers should try holding (or rubbing) the thermistor with their fingertips.
        Doing so will transfer heat from the person holding the
        thermistor, thereby raising the temperature of the thermistor.
        Accordingly, they should observe the change in values being printed on on the
        Command Prompt (on Windows) or Terminal (on Linux), as the case maybe.

  \item This experiment is an extension of the previous
        experiment. Here, we will use a Julia source file to
        turn a buzzer on using the thermistor values. This experiment
        can be considered as a simple fire alarm circuit that
        detects fires based on a sudden change in temperature and
        activates the buzzer.

        The program for this is available at
        \juliaref{julia:therm-buzzer}.  As explained earlier,
        the ADC maps the thermistor voltage readings in to values
        ranging from 0 to 1023. This means 0 for 0 volts and 1023 for 5
        volts. In this experiment we compare the ADC output value with a user-defined
        threshold, which has been set as 550 in this experiment. One may note that
        this threshold would vary according to the location and time of performing
        this experiment. Accordingly, the readers are advised to change this threshold
        in \juliaref{julia:therm-buzzer}. For testing purposes, one may note the
        normal thermistor readings generated from the execution of \juliaref{julia:therm-read}
        and set a threshold that is approximately 10 more than these readings.


        In this experiment we compare the ADC output value with 550
        and as soon as the value exceeds 550 the buzzer is turned on. The following lines of code perform this
        comparison and sending a {HIGH} signal to digital pin 3 on \arduino:
        \lstinputlisting[firstline=9,lastline=13]{\LocTHERMjuliacode/therm-buzzer.jl}
        A delay of half a second is introduced
        before the next value is read. While running this experiment,
        the readers should try holding (or rubbing) the thermistor with their fingertips.
        Doing so will transfer heat from the person holding the
        thermistor, thereby raising the temperature of the thermistor.
        Accordingly, they should observe whether the threshold of 550 is achieved
        and the buzzer is enabled.

        \paragraph{Note:} Once the thermistor value reaches 550 (the threshold), the value will remain the same
        (unless it is cooled). Therefore, the buzzer will continuously produce the sound, which might be
        a bit annoying. To get rid of this, the readers are advised to
        execute some other code on \arduino\ like \juliaref{julia:therm-read}.

\end{enumerate}

\subsection{Julia Code}
\label{sec:therm-julia-code}
\addtocontents{juliad}{\protect\addvspace{\codclr}}

\begin{juliacode}
  \jcaption{Read and display the thermistor values} {Read and display
    the thermistor values. Available at
    \LocTHERMjuliabrief{therm-read.jl}.}
  \label{julia:therm-read}
  \lstinputlisting{\LocTHERMjuliacode/therm-read.jl}
\end{juliacode}

\begin{juliacode}
  \jcaption{Turning the buzzer on using thermistor values}
  {Turning the buzzer on using the thermistor values read by
    ADC.  Available at \LocTHERMjuliabrief{therm-buzzer.jl}.}
  \label{julia:therm-buzzer}
  \lstinputlisting{\LocTHERMjuliacode/therm-buzzer.jl}
\end{juliacode}