Introduction & Review

Digital Logic and Microprocessors covers basic boolean algebra and logic combined with controlling digital circuits utilizing CMOS and semiconductor technology. This course will also discuss the use of microcontrollers in developing products with constraints.

Class Materials:
Black Magic Probe v 2.1 OR STLINK V2
Optional Board:
STM32 Nucleo Dev Board - F446RE (Mouser) (Amazon)

Class Resources:
Soldering is Easy - MightyOhm
Guide to Excellent Soldering - Adafruit
What the Flux? How does Solder Work? - Hackaday


Required Class Materials
Safety Contract
Photo Release Form

This class introduced digital logic and boolean algebra utilizing game theory and a basic 7408 AND gate. We wired up a 7408 Quad 2 Input AND Gate utilizing pushbuttons as the inputs and an LED as the output.
AND Gate Lab Schematic
AND Gate Lab Breadboard
AND Gate Lab - Fritzing

Teaching Boolean Logic through Game Rule Tuning - Weng, et. al.
Boolean Algebra + Logic Symbols Chart
74xx Series Basic Logic Gates


Please submit your documentation link here: Form

A review of Boolean Algebra terms and Logic gates took us forward into discovering the opportunities of combining logic gates. We looked at 3 different combinations, built the circuits utilizing more 7 series logic ICs and developed truth tables for each circuit. We were also introduced to the 3-input AND Gate 7411 chip. Check the video below showing how to make professional diagrams in Inkscape for Logic Gates.
Logic Gate Lab 1
Logic Gate Lab 2
Logic Gate Lab 3
Inkscape - Create Logic Gate Diagrams/Schematics

Logic Gates - IC - Derek Molloy
Origins of Boolean Algebra... - Janet Barnett
Claude Shannon: Tinkerer, Prankster, and Father of Information Theory - IEEE - John Horgan


We were able to finalize the last 3 lab circuits. We looked at modeling our designs in Logisim and testing our truth tables against generated ones. Some of us took the Inkscape approach towards drawings clean SVG files for documentation.

Create a product, problem or game that utilizes 3 inputs and 4 gates minimum. You are encouraged to think about problems or systems you interact with daily. By creating conditions it is easiest to begin with a truth table.
Create a logic gate schematic, simulate it, and test the truth table
Draw the chip-based schematic and build the circuit utilizing 74XX series IC chips
Be prepared to discuss your problem/system and show off your diagrams/schematics on 2/7/18

As we begin our journey into information theory, we are going to look at Claude Shannon and use multiplexers to take multiple inputs and utilize one output. More to come!

To begin our learning of C/C++, we are going to start by setting up a simple embedded tool platform, MBED. This cloud-based platform will enable everyone to develop and test within a browser and not have to worry about developing complicated toolchains. You are welcome to code in the IDE or text editor of your choice and then test in the browser-based MBED platform. Please make a username and load our board into the environment. We are using the ST Nucleo F446RE Development Board. Follow the below video to help get your workspace setup.
MBED - Setting up a Workspace
MBED Documentation/Handbook

To begin programming we are going to work through two resources. Please look through the first lecture and examples of Effective Programming in C/C++ from MIT OpenCourseware. Under lecture notes, check out the first set of slides, entitled, "Introduction to C: Welcome to the Memory Jungle" and look at the examples listed. We are going to follow along this course, the book listed in resources, as well as some coding projects throughout the semester to bring up our programming skills!

Claude Shannon - Father of the Information Age - University of California
Embedded Software in C for Arm Cortex M - Jonathan Valvano


We spent the first portion of class looking at smaller applications of digital logic systems. The multiplexer (MUX) was dissected as an integral part of a system that can change multiple data inputs to one output.

2-1 MUX Logic Diagram
2-1 MUX Logic - LogiSIM
4-1 MUX Logic Diagram
4-1 MUX Logic - LogiSIM
4-1 MUX Logic NAND Diagram
4-1 MUX Logic NAND - LogiSIM

Please submit your documentation link here (if you have not done so): Form

8-Bit NAND Gate Computer Project - Hackaday


Presentations on our reverse systems design utilizing logic circuits occurred. We shared our circuit designs, logic diagrams, and reasoning behind solving the problem. We will finish these next class.

We built a breadboard version of an Arduino microcontroller to look at some of the basics components in a common microcontroller. Next class we will program the chip and burn a bootloader so that we can effectively use the Arduino IDE.


Binary - Plusses and Minuses - Computerphile
List of 74XX Series ICs
Arduino Stand-alone on a Breadboard - Arduino
Build an Arduino - Electroschematics


Today we are going to finish the small microcontroller build. We will attempt to install a bootloader on the Atmega328 Chip, and run a program using a serial-USB device.

Stand-alome AVR Programmer - Adadfruit Using Arduino as ISP - Adafruit Adaboot Bootloader - HEX Files


Today you should work with your board and complete soldering the components on the protoboard. Before you finish soldering, make sure to test your board using an Arduino as In-Serial-Programmer (ISP).
Complete soldered, working Atmega328 MCU.
Test uploading the standard "Blink" sketch through the Arduino IDE.
Write a program using 3 LEDs and build a stoplight. Make sure to include: 3 LEDs as Outputs, Inputs (PB, switch, potentiometer...)
Create a logic diagram for your program
Develop a schematic for the entire system

Make sure you spend time working through the next section of the MIT Courseware Effective Programming in C and C++. Use this time to go through the second set of examples, "Subtleties of C". If you need help with some of these please let me know. If you are looking to do some practice problems you can work through some of these excercies from w3resource

C Practice Excercises - w3 Resources
ArduinoISP -
Programming AVRDUDE and avrgcc - Pololu
Installing Arduino Bootloader - Sparkfun


This is the last class towards preparing your Atmega328 board. You should have a completed stop sign design next class that can be implemented. We will look at examples of code and look at ways in which people built their circuits. Look at the previous post for any information on what you should be documenting, including your schematic.Shoutout to Michael for helping me in programming the boards. We have developed a good solution and he found out that we were reprogramming the boards twice by leaving the intial Atmega328 in the programming board. We can now program using the Arduino IDE and another Arduino or we can use the USBTinyISP with avrdude and the .hex file produced from the Arduino IDE.

Traffic Controller - MakeUseOf


You should be ready for next class to show off your working Atmega328 board with stop light design. Remember to include an ultrasonic distance sensor as your analog input to change your system. Manipulate the sensor values to attain an accurate distance reading. You can always use the Serial Monitor to see what your sensor is doing. You must include schematic, design, program, and logic diagram into your documentation!

Next class we will work on setting up the STM32 Nucleo F446RE Board. If you have one, bring it in. I have a few extras to share with the class for the semester. Please make sure that you have followed the previous post on setting up the MBED environment. This is important to getting started. If you do not have an account, please make one ASAP.

Ping Library - Arduino
Parallax Ping Sensor - tronixstuff
Serial Communication - Arduino


We spent the majority of the class finalizing our atmega328 boards and programming them with our stoplight functions. Make sure that you have added a sensor input to adjust the program to read a value and change the output of your light sequence. Once you have succeeded you are to move your program to the STM32 Nucleo Board through the MBED platform. We went over the introduction to MBED during this period and how to use the digital inputs and outputs and uploading the firmware to the board. Use the simple blink sketch on the MBED platform to test your board.

The second portion of the class was devoted on designing your final project for class utilizing the STM32 board as the target. You will include multiple I/O and create a solution to a simple problem. Think about your problem and begin researching solutions.


The class was primarily focused on writing our first firmware that interfaced with an input and output. We looked at the TMP36 and the LM34 temperature sensors as an external sensor and then created a sequence of 3 lights to indicate levels of temperature. This example is meant to look further into the MBED ecosystem and adapt current examples to your projects. We spent the latter portion of class looking into a final project using the STM32 board and some of the advantages in the embedded world. Make sure to bring your ideas to next class.

Temperature Sensor/Lights - Fritzing
Temperature Sensor/Lights - Breadboard
Temperature Sensor/Lights - C++


We looked further into programming our STM32 Arm controllers with a motor, input, and some LEDs. We are looking at some cotrol loops with embedded systems and building a basis for simple C++ programs.

Motor Control - Fritzing
Motor Control - Breadboard


This class allowed for some time in working with our projects and microcontroller practice. We discussed peripheral interfaces and built a foundation for communicating with multiple devices.

DC Motor Control - MBED
Digital Inputs/Outputs - MBED
I2C Peripherals - Sparkfun
SPI Peripherals - Sparkfun


We spent the majority of the class determining needs for our projects and developing schematics. I reviewed the Saleae Logic Analyzer for troubleshooting.

Saleae Logic Analyzers


This was the final class to work on your projects.
Your project should include:
Soldered, protoboard with circuit
Schematic Design
Bill of Materials
Complete loop that includes - human input, 2 digital outputs, readout/indicator, safety function, feedback loop...
Successful Firmware Program

Your Presentation will include:
Demo of the working prototype
Simulated environment
Future additions?
Issues along the way?

Don't forget to include a tutorial on how to build your project including all of the above submitted with your documentation. The documentation will be due at the end of class. Class will begin at 7:00 PM and presentations will start at exactly 7:15 PM. Presentations will be 10 minutes length. See you then.