AVR course at Brno University of Technology
MIT License
The repository contains AVR lab exercises for bachelor course Digital Electronics 2 at Brno University of Technology, Czechia. The course focuses on digital circuits, microprocessor technology, embedded systems and uses the C and ASM languages for programming 8-bit Arduino microcontrollers in PlatformIO and Visual Studio Code IDE.
PlatformIO is a cross-platform build system that can be used to develop software platforms for Arduino, ESP32, PIC32, and AVR. PlatformIO can be used with VS Code to provide a powerful set of tools to assist you in development [1], [2].
Download and install Visual Studio Code source code editor.
Run Visual Studio Code, open up the extensions viewer in menu View > Extensions Ctrl+shift+X, and then typing PlatformIO
into the search bar. Press Install button on the result PlatformIO IDE
.
It may take a few minutes depending on your connection speed. Do not close any window and do not open other folders until the installing process is completed. After that, restart the Visual Studio Code.
Install Arduino framework: Click on the PlatformIO icon in the left-hand margin, then in menu PIO Home > Platforms > Embedded. Type AVR
as a platform's filter and select Atmel AVR. Click on the Install button.
Create a new project: Click on the PlatformIO icon in the left-hand margin, then in menu PIO Home > Open > New Project. Type blink
as project name, select Arduino Uno
board, keep Arduino
framework, and select location to your working folder. Click on the Finish button.
Code the application: Copy/paste blink example code from this repository to your BLINK > src > main.cpp
file.
Rename source file main.cpp
to main.c
, ie change the extension to .c
.
Compile and upload the code: The handy shortcuts for building and uploading the code is available on the blue footer taskbar. Hover over the icon to get its functionality. First, compile (Build) the project and then Upload it to Arduino Uno board. You can Clean up generated files as well.
Command Palette: All available commands in VS Code are also accessible by F1
or Ctrl+Shift+P
shortcut and followed by a command. Most useful commands in this course are:
PlatformIO: Build
PlatformIO: Upload
PlatformIO: Clean
PlatformIO: Upload and Monitor
PlatformIO: PlatfomrIO Home
Other common shortcuts in VS Code are:
Shortcut | Usage |
---|---|
F1 or Ctrl+Shift+P
|
Command Palette. Access to all of the VS Code functionality |
Ctrl+K+O |
Open folder |
Ctrl+K F |
Close folder |
Ctrl+Tab |
Switch between open files |
Ctrl+O |
Open a file |
Ctrl+Shift+S |
Save all open files |
Ctrl+Shift+V |
Open Markdown preview |
Ctrl+K V |
Open Markdown preview to the side |
Ctrl+B |
Toggle Sidebar visibility |
The following hardware and software components are mainly used in the lab.
Component | Link(s) |
---|---|
ATmega328P microcontroler | data sheet, instruction set |
Arduino Uno board | schematic |
LCD and keypad shield | schematic |
Multi-function shield | schematic |
DHT12 | I2C humidity and temperature sensor: data sheet |
MPU6050 | I2C gyroscope and accelerometer: data sheet |
DS3231 | I2C real time clock: data sheet |
AT24C32 | I2C EEPROM memory module: data sheet |
HC-SR04 | Ultrasonic sensor: datasheet |
Joystick PS2 | Analog joystick PS2 |
Rotary encoder | tutorial |
Touch sensor | TTP223 touch sensor module: tutorial |
IR module | HW-201 IR obstacle avoidance module: tutorial |
GPS module | GPS module NEO-6M GYNEO6MV2 |
Bluetooth modules | HC-05 |
Servos | Micro servo SG90 |
Soil moisture sensor | tutorial |
Relays | Modules with 1, 2, and 4 relays |
Displays | HD44780-based, Nokia displays, 4-digit LED display TM1637, 8x8 LED display MAX7219 |
OLED display | I2C OLED display 128x64, driver SH1106 |
Keypad | 4x4 keypad: tutorial |
Basic components | Pasive and active components: push buttons, resistors, 10kohm potenciometers, (multicolor) LEDs, LED bargraphs, N-MOSFET transistors 2N7000, [light dependent resistor LDR, photoresistor](Light Dependent Resistor LDR, Photoresistor), IR LED 940 nm, IR receiver |
Current sensor | Current sensor 5A ACS712 |
ESP8266 Wi-Fi module | AT commands |
Logic analyzer | 24MHz 8-channel logic analyzer: software |
Osciloscope DSOX3034T | Oscilloscope Keysight Technologies DSOX3034T (350 MHz, 4 analog channels), including 16 logic timing channels DSOXT3MSO and serial protocol triggering and decode options D3000BDLA |
Multimeter | Multimetrix DMM230 |
Visual Studio Code | web page |
PlatformIO | web page |
GCC Compilers for AVR | web page |
SimulIDE | Real time electronic circuit simulator. With PIC, AVR and Arduino simulation: web page |
Git | git |
Version | Result (yyyy-mm-dd) | Note |
---|---|---|
Linux Mint 21.2 (Victoria) | OK (2024-01-20) | Laptop |
Windows 10 | OK (2022-09-08) | Lab SC 6.61 |
Linux Mint 20.3 (Una) | OK (2022-02-23) | Laptop |
Windows 10 | OK (2021-11-25) | Office |
# FYI: How to check OS version in Linux
cat /etc/os-release
# Or by Neofetch
neofetch
Peter Fleury, AVR-GCC libraries
Barr Group, Embedded C Coding Standard
4Geeks. How to use Gitpod