CE 351 Spring 2023
Lab 4 Various Things
Name: Mason
Brady
Email:
mrbrady1@fortlewis.edu
Various things
Introduction:
Interfacing various displays with various sensors.
Materials:
This lab uses a thermistor,
humidity sensor, and temperature module to measure variables as well as
an arduino uno and a bunch of wires. The lab also requires a 4-digit
seven-segment display and a liquid crystal display.
Methods: The LCD was first
wired per the given schematic and the example code was modified to
modulus the seconds since run by 6 to prevent a 6 from appearing on the
screen. This removes the need for an if statement and should run
slightly faster. The code block can be seen in Figure 1.

Figure 1. Code to display hello world and count to 5 before resetting to 0.
A video of the functioning ciruit can be seen Youtube Video Here.
I was forced to upload all of my videos as youtube shorts. I didn't
realize this would cause an embedding issue until I started writing
this. I'll figure out the embedding for next submission.
The circuit was then programmed to scroll by offsetting the cursor each iteration as seen here.
The thermistor was then connected and programmed to display the temperature on the LCD as seen in Figure 2.

Figure 2. Thermistor readout to LCD.
A
DHT11 temperature and humidity sensor was then wired into the circuit
to replace the thermistor and can be seen in the test video here.
The
IR sensor then was wired to the circuit to read the signals from the
remote. The signals had to be tested to fill in the switch cases to map
the buttons to the right outputs. My remote was pretty broken
outputting 0xFFFFFFF for almost all buttons and would often happen on
the few buttons that did work. I eventually got a few buttons working
which can be seen here.
Next
the ATMEGA328P was used without the arduino PCB shield that is typical.
I also had issues getting the programming to work with it often giving
desync errors. The demo blink can be seen in the video here.
When
programming the controller for the interupt it started to not allow me
to program it through the rtx pins causing me to try plugging the chip
back into the uno casing. This turned out to be a mistake that lead to
the 16th pin to snap off. I tried to solder it but the chip refused to
work after this. I am going to try and demo it in the morning and
upload a video here.
The code for the interupt can be seen below in Figure 4.


Figure 4. Interupt Code.
This
code is pretty simple combining the interupt with the humidity and 7
Segment Display code. Basically it collects data and resets the seven
segment display number constantly and then only update the seven
segment display once the interupt is called. I wanted to put the whole
data collection in the interupt using global volatile variables but the
DHT11 sampling failed too frequently for this method to be viable.
Instead the failed connections can be dismissed because it is being
called 3-4 times per interupt and as such only updates on a succesful
call. Finally, my messy wiring for the circuit can be seen below in
Figure 5.
I was having issues with the wires not making propper connections a lot of the time and messing with the circuit.
Figure 5. Super messy SSD and Humidity wiring.