
Explore embedded systems fundamentals, Arduino basics, and C programming through hands-on modules and a burglar alarm case study, outlining objectives, curriculum, and outcomes for this course.
Explore the Arduino and C programming journey through practical projects, answering FAQs on prerequisites, who can join, hardware requirements like Arduino Uno and Tinkercad, and assessment structure.
Learn the basics of C programming in an embedded context, from the development environment to the hello world program, compilation, headers, makefiles, and printf usage.
Explore variables and data types in C programming, including declarations, naming rules, common types like int, long, float, double, and memory usage via sizeof in embedded projects.
Explore branch and loop statements in C for embedded programming, including if else and switch case, for and while loops, infinite loops, and break and continue.
Explore arithmetic operators in C, including modulus, and learn about unary and binary forms with postfix and prefix variants, plus assignment, relational, logical, and bitwise operators.
Deliver an intermediate C programming discussion in an embedded environment through ten exercises. Practice scanf-based input, loops, conditionals, bitwise operations, and basics like ASCII table and patterns.
Explore arrays and strings in C programming for embedded environments, learning how to declare, initialize, access, and understand memory representation, null termination, and strlen.
Explore typedef to create user defined data types, perform typecast to convert types, and apply data type and storage class modifiers in C for embedded projects.
Explore enums, structures, unions, and bit fields in C for embedded Arduino projects, learning how to declare, define, and use complex data types in memory-constrained environments.
Explore functions as the building blocks of C programs, learn function prototypes, local and global variables, and function scope, including file scope and extern usage, with a sum example.
Explore pointers in C for embedded environments, learn to declare and dereference pointers, navigate pointers with arrays, structures, and functions, and master concepts like null pointers, memcpy, and function pointers.
Learn preprocessor directives, command line arguments, and file I/O in C for embedded development. Explore include and define, argc/argv, and file operations like f open, f write, and f read.
Explore intermediate C programming in an embedded context with Arduino, through ten hands-on exercises on arrays, pointers, strings, structures, and file I/O.
Explore the Arduino IDE development environment, the structure of an Arduino sketch with setup and loop, and how to compile, upload, and use libraries for LED blink projects.
Explore Tinkercad as a free web app for simulating Arduino circuits, creating accounts, and practicing led blink projects with Arduino and gpio concepts.
Explore GPIO pin programming on the Arduino Uno, using pinMode, digitalWrite, and digitalRead with the ATmega328p hardware and Tinkercad simulations.
Interface a push button and matrix keypad with an Arduino board using GPIO programming, pull-down resistors, and keypad scanning to detect keys and drive outputs.
Learn to wire and interface an eight by eight LED matrix with an Arduino Uno, and display patterns using column scanning and GPIO control.
Learn to interface a 16x2 lcd display with Arduino, using four-bit mode, hd44780 driver, and the liquid crystal library, with a tinkercad pinout wiring demonstration.
Learn to read and generate analog signals on Arduino with analog read and analog write, including pwm and adc, for applications like led brightness and motor speed control.
Learn uart communication for Arduino and C programming through practical serial experiments, covering asynchronous transfer, bitstream framing, serial wiring, and the Arduino serial library.
Explore i2c communication on arduino, wiring sda and scl with pull-ups, and data transfer using start, stop, and acknowledge signals; demonstrate with two arduino boards in tinkercad, using wire library.
Explore timers in Arduino and C programming by mastering tight loops, delay and delay microseconds, and non-blocking timing with millis and micros to schedule actions efficiently.
Explore external interrupts in Arduino, including edge and level triggering, interrupt latency, and how to use attachInterrupt with volatile ISR and practical Tinkercad demonstrations.
Learn to interface a buzzer with Arduino using the tone library, master SPI communication between Arduino boards, and apply utility functions for data processing in a hands-on session.
Explore processor internals, system clock, and GPIO register level programming to gain tighter speed control in Arduino projects. Examine on-chip memory, ATmega328P peripherals, and practical register-level exercises using Tinkercad.
Explore register level programming in Arduino by examining ADC, UART, timers, and EEPROM and flash on Atmega328p, with hands-on demonstrations using Tinkercad and bare-metal concepts.
Master bare metal programming on real hardware by using an Arduino as USB to TTL and ISP programmer to burn bootloaders and bring up a bare minimum circuit with Atmega328p.
Explore how to measure distance with an ultrasonic sensor and Arduino Uno, using Tinkercad, a schematic, flowchart, and firmware to display distance on a 16x2 LCD.
Learn to implement text scrolling on a 16x2 LCD with Arduino, using UART communication, and develop the schematic, flowchart, and firmware for project 2 in Tinkercad.
Master servo motor control with Arduino in a tinkercad project, covering theory, schematics, flowcharts, and firmware using the servo library. Drive three servos via a potentiometer with ADC and PWM.
Develop a password-based digital door lock using an Arduino with a 4x4 keypad, LCD, servo, LEDs, and buzzer, including the schematic, flowchart, and firmware in Tinkercad.
Explore how Arduino and C programming fit into embedded systems, with hands-on modules, gcc and makefile exercises, Arduino APIs, interrupts, timers, and project-based firmware in Tinkercad.
Every day the world is becoming more and more digital, connected and automated. But what makes this transformation possible? In many cases, it is a technology that is often overlooked; the embedded systems. From the CCTV security systems to the ATMs we use regularly to access cash, embedded systems can be found everywhere in our society. Embedded systems play a part in nearly every aspect of modern life. They impact the way we spend our leisure time, the way we commute, and the way we do business. In today’s evolving world, technology is not only becoming more and more advanced, but also more and more common in our everyday lives.This is the era of internet of things or connected devices aka IoT.
So how is this possible?
Embedded systems use microprocessors or micro-controllers to do the computations. That's how its done. Today virtually all commercially produced electronic devices use processors or micro-controllers.
So,
How do you design an embedded system?.
What are the tools used?
How do you program a micro-controller?
How do you communicate with a micro-controller?
How does the micro-controller interpret real world signals ?
Where do you place Arduino programming in the realm of embedded design?
This course covers all these topics. This course is a blend of both theory and practicals. This is a step-by-step course on Arduino & C programming with information suitable for beginners and gradually progressing to intermediate level.
In the realm of Embedded Systems Programming, the vast array of micro-controllers available, its features and the various tool sets required can be overwhelming for a beginner. It might be difficult for a beginner to assemble a board from scratch even for switching on or blinking a LED. This is where Arduino programming is useful. Arduino programming is a bit easier if you want to start really simple. It is an easy tool for fast prototyping, aimed at students without a background in electronics and programming.
This course is designed to teach you the basics of Arduino programming using 'C' language. You will not only learn the syntax and structure of the 'C' language but also understand how to use it to create interactive projects with Arduino.
The quintessential elements related to what's necessary in an embedded environment as well as the common components of developing a project in 'C' will be discussed.
You will learn to use different components of Arduino for different functionalities, write code for them and create circuits using them.
The course is designed at a beginners level. However the course upscale your theoretical and practical understanding on Arduino hardware, register level programming & bare metal programming. As you progress through the course you will learn to use software tools like Arduino IDE & Tinkercad.
By the end of this course, you will have a solid foundation in Arduino programming and be able to create your own projects.