| |
|||||
| 2020-2021 ICS3U-E: AVR FOUNDATIONS | |||||
|---|---|---|---|---|---|
Session 9. (Wrap up: ISP Presentations and Mathematics Enrichment) |
|||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
77 Jun 1 |
Algebra Primer Proof by Mathematical Induction |
Calculus Primer Recursion: Pascal's Triangle, Binomial Theorem Towards Better Code 11b |
|||
76 May 31 |
Recall: Composition of Functions as in `h(x) = f \circ g(x)` |
Software Enrichment Global vs Local Variables Recursion: Factorial, Perms, Combs Towards Better Code 11a |
Consider the recursive definition of the Natural numbers, `\mathbb{N}`, `t_1=1, t_{n}=t_{n-1} +1` |
||
![]() |
LC, HM, JC | MIA (AP Microeconomics): JD |
OA, LC*, XC*, JC*, JD*, SGV JG*, DL*, HM*, JO, TS*, FS |
||
![]() |
TS, SGV, DL, FS | MIA (AP Biology): ? |
2.20b,c | ||
![]() |
JD, JG, AS | MIA (AP English): XC, JC, DL, SGV |
2.20b,c | ||
![]() |
XC, JO, OA | MIA (AP Chemistry): ? |
2.6 Mechanical JD*, SGV, JG, DL** HM*, JO*, TS*, FS*, AS |
||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
71 May 7 |
Charlieplexed Matrix![]() Audio-Responsive Equalizer |
Software Optimization Register-Level Input Towards Better Code 9 followup demonstration Hardware Optimization Charlieplexing on the RSGC ACES' SMT Charliestick Towards Better Code 12 |
![]() ![]() |
Charlieplexed Array (ACES' SMT CharlieStick) |
|
70 May 6 |
![]() |
Register-Level Digital IO Towards Better Code 9 followup demonstrations Reusable Code Towards Better Code 10 Custom Library 1: Header Files (.h) |
|
![]() |
|
69 May 5 |
Asynchronous Wednesday - Work on this weekend's submission or your Long ISP post emails to the Forum if you have any concerns |
||||
68 May 4 |
Second look at the ATmega328p's GPIO Ports #include iom328p.h |
Software Optimization Register-Level Digital IO Towards Better Code 9 |
Bits 'n Bytes |
||
67 May 3 |
Avoid Mystery constants: #define or assign names to constants |
Recursion: Fibonacci and Pascal Towards Better Code 11 |
![]() |
2.6 | |
| Weekend Break | |||||
66 Apr 30 |
Memory Issues Bounds Checking and Memory Allocation Towards Better Code 7 Data Smoothing Towards Better Code 8 |
2.6 Today's Sketch Sequence: DoWhileMenu.ino Permutations.ino CallByReference.ino ArrayMemoryIssues.ino |
|||
65 Apr 29 |
De Morgan's Laws![]() |
C-Style string data type and Formatted Output Towards Better Code 5 Pointer Access Operators (& and *) Towards Better Code 6 |
Parameter passing: |
2.6 | |
64 Apr 28 |
Asynchronous Wednesday - Work on next weekend's Submission (2.6) post emails to the Forum if you have any concerns |
||||
63 Apr 27 |
![]() |
Menus Towards Better Code 3 Data Memory Options Towards Better Code 4 |
Consider Arduino C's F() macro |
![]() |
|
62 Apr 26 |
TIOBE Languages by Popularity |
Back to where we started Towards Better Code 1 Better Decision-Making Towards Better Code 2 |
![]() |
2.6 | |
| SESSION BREAK | |||||
Session 7. (March) Motor Control Concepts: DC Hobby Motors, Servos, Steppers |
|||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
61c Apr 1 |
RSGC ACES' Gem: (Queen's Eng. '22) CNC Machine User's Guide |
RSGC ACES' Gem: (ACES '20) Mini CNC Plotter |
![]() |
Line-Following Bot |
|
61b Apr 1 |
Stepper Gem: ![]() (Mac. Eng. '21) Laser Projector |
can be problematic! MOT-28BYJ-48 Datasheet RSGC ACES' Library-free Stepper Motor Example... |
![]() |
![]() |
|
Servo Gem: ![]() (Queen's Eng. '22) Binary Hand Counter |
Motor Type 3: Precision Positioning... Stepper Motors (pp 57-58) MOT-28BYJ48 with ULN2003 Darlington Driver with ULN2003 Driver Drive Options: Wave, Full, and Half-Step Here's a Half-Step Sequence Animation... ![]() |
![]() |
Datasheet: ULN2003 Darlington Array ![]() |
||
60 Mar 31 |
Polish... ...but Inspiring :) Servo Motor Works (build your own?) Servo Connections Servo Controller |
Motor Type 2: Servo Motors A brief introduction to AVR Timers... Timer1 Registers and Clock Prescalers |
|
![]() |
|
59 Mar 30 |
DC Motors 3... 5V MCU Control Logic over 9V Motor Power Supply DC Motors 4... SN754410 Quadruple Half-H (Motor) Driver |
![]() |
![]() Let's code... DCMotorControl.ino |
||
58 Mar 29 |
It's been awhile... See supporting links from Lesson 53 below ACES' Frame Player: DC Motors 1 (Introduction, Speed, Torque) The H-Bridge ACES' Frame Player: DC Motors 2 (Direction) |
for EMF Collapse... Flyback Diode (aka. Snubber, Shunt) ![]() |
Animation... Mechanical Relay ![]() |
||
57 Mar 25 |
![]() |
ISP Presentations DL, CM, JO, AS |
2.10 c 2.10 c: Medium ISP JC, JD, SGV, JG, DL, CM, HM, JO, TS, FS, AS |
||
56 Mar 24 |
![]() |
ISP Presentations HM, TS, FS |
Joseph V's DC Motor Mount Design Files EncoderV3.stl, MotorV2.stl, Motor2V2.stl (L. Cassano's 3D Print) ![]() |
||
55 Mar 23 |
![]() |
ISP Presentations OA, LC, XC, JG |
Motor Gem: |
2019-2020 ICS3U ACES... SA, PB, JB, JDe, HD AG, JL*, MM*, RM, SR LR-C, OS, JS, CT, WT MVD, JV |
|
54 Mar 22 |
![]() |
ISP Presentations JC, JD, SGV |
![]() |
ACES' Speed-Related Demos... with a PhotoInterrupter (0:24) with a PhotoInterrupter (0:52) L293D or SN754410 (both in your kit) |
|
53
Mar 18 |
LOW-side vs HIGH-side Switching
Falstad: Darlington Pair |
Power Supply Considerations N-Channel Switching Options BJTs (<1A) (3904, 2N4401, BC337) vs Darlington Array (<5A?) (TIP120) vs MOSFETs (>5A?) (IRF520) The H-Bridge ACES' Frame Player: DC Motors 2 (Direction...) |
Motor Control
with a Darlington Array: TIP120 (TO-220) ULN2003 (DIP-8) ![]() |
Falstad Simulation... Darlington Pair Logic Levels This is one of the first circuits to combine different voltage levels (5V Control Logic and 3.3V Drive Supply). It is a good time to introduce yourself to some fundamental principles and vocabulary associated with these topics. |
|
52 Mar 17 |
Understanding Gears GearGenerator.com |
Antikythera Mechanism
ACES' Frame Player: Magnetic Fields Introduction to DC Hobby Motors ACES' Frame Player: DC Motors 1 (Introduction, Speed, Torque,...) Good Value... |
Sparkfun's ROB-11696 Hobby-Gear ![]() Brushed vs Brushless? ![]() |
![]() 2.10 b,c, 2.20 a, 2.6 |
|
| Session 6. (February) Wireless Communication (Infrared, Radio Frequency, R2R DAC, 555 Unpacked) | |||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
51 Feb 26 |
Project Time: 2.5 or ISP | Optional Project Infrared: 555 Unpacked: |
|||
50 Feb 25 |
Project Time: 2.5 or ISP | 2.5 | |||
49 Feb 24 |
Project Time: 2.5 or ISP | 2.5 | |||
![]() |
|||||
48 Feb 23 |
Nordic Semiconductor
14Core: nrf24 Projects |
Communication Protocols (Serial, SPI, I2C, RF, IR, BT) nRF: Radio Frequency nRF24L01 Transceiver: Getting Started, Arduino Guide AVR Foundations Workbook: pp. 85-88 RF24 Library (tmrh20) Class Documentation |
ACES' nRF24L01+ BoB... ![]() |
![]() ![]() |
|
![]() |
|||||
47 Feb 22 |
Datasheet... 4610X-R2R-103LF ![]() |
Familiar Resistor Network Designs Theory Class (seeds and roots:)... Digital to Analog Conversion (DAC) Great blog and exceptional supporting video: Other useful video explanations... |
![]() |
Thevenin and Superposition ![]() |
|
End of IR. RF next week... |
|||||
46 Feb 19 |
IRremote (V2.5) Library Documentation Note: Active Development! Find IR Codes |
Communication Protocols (Serial, SPI, I2C, IR, RF, BT) ACES' Frame Player: Infrared (Digital) IR Data Communication → → → |
Fola's SMT RC ISP...
Your 3mm Emitter: LTE-3206 |
![]() |
|
|
|||||
NASA's Perseverance: Mars Landing today! |
|||||
45 Feb 18 |
![]() |
Communication Protocols (Serial, SPI, I2C, IR, RF, BT) ACES' Frame Player: Infrared ← ← ← (Analog) Proximity Sensing (Digital) IR Data Communication → → → |
![]() ![]() (A MUST read) SB's: IR Control Theory |
![]() |
|
44 Feb 17 |
2. SHORT (4-30 cm) Distance Sensor: Sharp IR GP2Y0A41SK0F ![]() |
Communication Protocols (Serial, SPI, I2C, IR, RF, BT) ACES' Frame Player: Infrared |
Sharp IR GP1A58HRJ00F Photointerruptor
|
3. NEAR (<15 mm) Proximity: (Reflective Optical Sensor) TCRT5000L RSGC ACES' Linus Line-Following Robot |
|
43 Feb 16 |
![]() |
Communication Protocols (Serial, SPI, I2C, IR, RF, BT) Emitter:(Clear) Phototransistor: (Black) 1a. Interrupt Application (Analog) ![]() |
Phototransistor vs Photoresistor (LDR) ACES' Frame Player: Infrared Measuring a motor's angular velocity (RPM) using a wheel encoder? ![]() |
![]() |
|
FAMILY DAY WEEKEND (February 12-15) |
|||||
| Chinese New Year: February 12. Year of the Ox (Aux?)... | |||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
42c |
![]() Online Tone Generator |
Terrific Tutorial: MSGEQ7 by Skoba RSGC ACES MSGEQ7 Audio Equalizer Prototype Custom LCD Character Function: createChar() |
|
(1:55) |
|
| Low Pass Filters: |
The Briefest? Introduction to ... Passive Low and High Filtering Passive Low-Pass Filter Design Tool |
![]() |
![]() |
||
42a Jan 29 |
![]() |
A 7-Band Audio Spectrum Analyzer The MSGEQ7 (Mr. D's favourite(?) 8-pin IC) The Definitive MSGEQ7 Blog... MSGEQ7 by J. Skoba ( LCD Wiring Refresher ) ![]() |
pp. 109-110![]() ![]() |
|
|
41 Jan 28 |
Mic/Amp with AGC ![]() |
AVR Foundations Workbook... pp. 109-110 |
Audio Input with Adafruit's ... Electret Mic/Amp ![]() |
![]() |
|
|
No Teaching By Order of Management :)
EAGLE PCB / ISP Q&A SESSION (Optional Attendance) |
|||||
40 Jan 26 |
595 as SPI Device? |
Communication Protocols (Serial, SPI, I2C, RF, IR, BT) AVR Foundations Workbook: pp. 82-83 |
![]() MBv3SPIBus.ino |
Arduino C Toolchain... pins_arduino.h |
|
SESSION 5.2: SPI and an Introduction to Audio |
|||||
39 Jan 25 |
![]() |
EAGLE Loose Ends: Silk-screen Borders, Mitered Corners Milling Layer (46) and Reference Layer (49) Board Houses JLCPCBs, DirtyPCBs |
![]() |
2.10a
![]() |
|
| 38 Jan 22 |
ACES_Generic.cam |
Generating the Gerber (Manufacturing) Files Check & Rules Error (ERC) Design (.dru, DRC), |
Trace Width & Ampacity![]() |
2.10a |
|
|
Schematic: Replace (6mm for 12mm PB) Layers (Dimension, Holes, tOrigins, tSilk, 200bmp) Tools (Line, Miter, Hole, Mirror, Ratsnest, Show, AutoRouter, Text) |
ACES_THT.dru |
2.10a |
||
|
No Teaching By Order of Management :)
|
|||||
|
Convenient EAGLE Libraries (.lbr): RSGC ACES Common Parts: THT, SMT, General |
![]() |
2.10a![]() |
||
|
Holiday Challenge Results: SquareWave to Sine Wave Introduction to EAGLE PCB Design Application Orientation Projects, Preferences, Schematic, and Board |
![]() |
2.4.2 Perma-Proto 328P DL, CM, TS, FS, AS |
||
SESSION 5.1: EAGLE PCB DESIGN |
|||||
DECEMBER BREAK |
|||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
![]() ![]() |
USART Progamming of the Breadboard ATmega328P with support for Serial Monitor/Serial Plotter Mint Tin LEDs: Photo, |
![]() BlinkwithSerialOUT |
2.4.1
Breadboard ATmega328P JD, SGV, JG, DL* CM, HM, JO, TS FS, AS ![]() |
||
![]() |
MCU
Embedded Systems Martyn Currey: ATmega328p on a Breadboard Rheingold: Deep Crystal Discussion 2020/2021 Breadboard ATmega328P Mint Tin ATmega328P |
![]() |
![]() |
||
|
|
![]() |
![]() Flashing AVR MCUs with the Burning the Bootloader Voltage Regulation with the LM7805 (p. 34) |
Recall J. Goodwin's XTAL Oscillator ![]() as |
![]() Would an ATtiny do? |
|
| BREADBOARD ATMEGA328P Project | |||||
|
Behind the curtain... Wire-Level RTC Exercises (cont'd) 3. DS1307 RTC Timekeeping Registers Remember ... Great code is Modular: Arduino C Functions |
sprintf, Format Codes |
C++ Operator Precedence (p. 140) |
||
| DS1307 as UNO Appliance Behind the curtain... Wire-Level RTC Exercises (cont'd) 4. DS1307 Square Wave Exploration Video Support: |
DS1307 Block Diag...![]() |
SQW Control Reg...![]() |
|||
![]() |
Review Homework ... Behind the curtain ... Wire-Level RTC Exercises 2. TC74 Tiny Serial Temperature Sensor |
|
Mr. D's Soldering Tip ... |
||
![]() Capacitor Visualizer Soldering |
PJRC: Stoffregen's DS1307RTC Library Discussion
Two utility functions: uint8_t dec2BCD(uint8_t dec) uint8_t BCD2dec(uint8_t bcd) StructsandConversions.ino |
tmElements_t
Please have BoBs soldered... ← AVRISPProgrammer and DS1307 RTC→ |
DS1307 Registers![]()
C++ Operator Precedence (p. 140) |
||
![]() |
|||||
![]() ![]() |
Wire-Level RTC Exercises (cont'd)
|
DS1307RTC Excerpt... ![]() |
|
||
![]() |
Communication Protocols (Serial, SPI, I2C, RF, IR, BT) Behind the curtain... Wire-Level RTC Exercises 1. How I2C Communication Works Breadboard an I2C Bus with the DS1307RTC |
![]() |
![]() 2.4.? ![]() |
||
| PARENT-TEACHER INTERVIEWS - SESSION BREAK | |||||
Session 3. Code Modularity, Libraries and Serial Rx/Tx Communication I (7 Classes)
|
|||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | SUPPLEMENTAL | PROJECT | |
![]() |
In-Circuit Serial Programming (p. 95)
Sparkfun's AVR Pocket Programmer First Look at Interrupts Recall the ATmega328p's Pinout (p. ii) TimerOne::Interrupts Stoffregen's TimerOne Library Documentation Recall First look at the ATmega328p's GPIO Ports Recall #include iom328p.h (hardware) TimerOne::Interrupts Revisited (Improved?) |
ISP Idea? ![]() |
OA, LC, XC**, JC, JD SGV, JG, DL**, CM HM, JO, TS, FS, AS 2.3 |
||
![]() GPS, NMEA Decoder |
LCD Appliance![]() EAGLE Board View 5V Power Pins |
2.3![]() |
|||
24 Nov 16 |
AVR Foundations ![]() |
Communication Protocols (Serial, SPI, I2C, RF, IR, BT) Serial Communicaton (UART) Part 1. AUTONOMOUS ARDUINO Wiring |
Industrial Joystick (Possible ISP Idea?) |
![]() |
|
| NOVEMBER BREAK | |||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | PROJECT | SUPPLEMENTAL | |
|
LCD Technology: How it Works Your 16x2 Character Liquid Crystal Display RSGC ACES' LCD Examples: Digikey's LCD Inventory Sampler |
![]() |
Tip: The F() Macro |
||
![]() |
Day 1 Exercises (continued) C: null-terminated array of char, as in, char name [] = "RSGC ACES"; or, |
Strings: Examples & Exercises |
Core Libraries Classes: Static (Serial) vs Instantiated (String) |
||
21 Nov 10 |
![]() |
Day 1 Exercises |
Endianness | Day 2 Function Concepts: Overloading Parameter Passing: Call By Value vs Call By Reference |
|
![]() |
Review of PoVWord Exemplar Day 1 Function Concepts: Stubs, Scope, Predicates, Call by Value vs Call by Reference Overloading ( as in Serial.print() ) |
Functions: Examples, Exercises Session 3 Loot... ![]() |
![]() |
||
| SESSION BREAK | |||||
Session 2. Extending the Arduino's Output Pins and Persistence of Vision (PoV) (9 Classes)
|
|||||
| CLASS | REFERENCE | CONTENT & CONCEPTS | PROJECT | SUPPLEMENTAL | |
![]() |
'Tis the season... Ghosting and Masking Introduction to EEPROM #include Arduino.h (software) #include iom328p.h (hardware) MatrixMadeEZ Kit Components |
![]() ![]() |
OA, LC, XC**, JC, JD*, SGV, JG*, DL**, CM*, HM, JO, TS*, FS, AS ![]() |
||
|
![]() |
![]() |
|||
Dual 7-Segment POV ![]() |
Arduino Time Functions:
millis(), micros() Persistence of Vision (PoV) Dual CC 14-Segment Alphanumeric Display KWA-541CPGB Datasheet LPT-3748G Datasheet (2019/2020) |
![]() |
? |
||
![]() |
First Look at (Arduino) C's... Preprocessor Directives Grade 10 Counting Circuit Revisited: Dual 7-Segments: 5011AS Datasheet |
![]() ![]() |
![]() |
||
![]() |
![]() |
1D
Scrolling Technique![]() |
|||
| Solder Up Your Morland Bargraph V3 This Weekend And Have Ready for Service on Monday | |||||
| The THT Morland Bargraph V3 Morland Bargraph V4 |
![]() |
![]() |
|||
![]() |
Appendix E. C Operators and Precedence (p. 140) Extending the MCU's (Output) pins... Introducing the 74HC595 Shift Register Different Datasheets: SN74HC595 Binary Display Counting Circuit (4-bit, 8-bit, 10-bit) |
![]() |
![]() |
||
EC: 4020, 4060![]() Your kit contains... 32kHz XTal, 15MΩ Res |
Software: Iteration (aka Repetition, Looping) Logical (Bitwse) & Operator (p. 42) Inspired by J. Goodwin: |
![]() |
|||
|
(No-charge) Supplements: Resistor Networks Morland PCB 50' Red Hookup Wire ABRA-Nano |
Review of
Traffic Light
Appendix E. C Operators and Precedence (p. 140) Conditional Decisions (Branching) |
Online TA Support
10-LED Blue Bargraph
|
SIP Resistor Network |
||
| Session Break | |||||
Session 1. Arduino Fundamentals (10 Classes) |
|||||
| CLASS | REFERENCE | HARDWARE | SOFTWARE | SUPPLEMENTAL | |
|
Hand in your DER Right Now! Please have your Hardware Debounce PCB soldered up for the start of class, please. First Look at... ACES' RGBLED Scripting Language V1 ? |
![]() |
2.1 OA, LC, XC*, JC, JD, SGV*, JG, DL*, CM, HM*, JO, TS, FS, AS |
||
9 Sep 24 |
Curriculum Night for (Day 1) Parents @ 7 |
Bit Shifting Example: analogRead() to analogWrite() Boeing's Big Mistake? What happens in hardware, stays in hardware :) Wiring an RC Debounce circuit |
We need to smooth out the state transition... |
![]() |
|
8 Sep 23 |
![]() |
The (Mechanical) Digital Input? Controlling Bounce |
Button or Switch contacts can lead to false readings...:( |
||
7 Sep 22 |
![]() pp. 16-17 |
Base Conversion Algorithm using Binary Decomposition The Analog Input? Successive Approximation Cooperative Code Session: VoltageDivider.ino |
![]() ![]() |
||
6 Sep 21 |
![]() pp. 14-15 LED Power Performance |
A possible late start due to Prefect Speeches?
The Analog Output? Pulse Width Modulation (PWM) Cooperative Code Session: BreathingLED.ino |
![]() |
![]() ![]() |
|
5 Sep 18 |
pp. 3, 6, 8 What happens if... you have an LED in pins 0 and 1 while uploading ? |
Writing GREAT Code: ![]() Standard Integer Data Types First Look at... |
Learn HTML: W3Schools Copy as HTML |
2.1![]() |
|
4 Sep 17 |
![]() |
Back to the Toolchain for a moment...
Arduino C's Sketch Host: main.cpp Writing BETTER Code: Constants and Data Types Cooperative Code Session: 5mmRGBLED.ino (let's improve yesterday's code) |
File>Preferences: verbose compilation & upload Tools > Auto Format |
Language Reference Digital Output pinMode(pin,mode) and diigitalWrite(pin,value) |
|
3 Sep 16 |
![]() |
Comparison of (External) Resistance: 0 Ω vs 220 Ω Arduino Toolchain Cooperative Code Session: 5mmRGBLED.ino (let's write some INFERIOR code together for starters :) |
![]() |
![]() |
|
2 Sep 15 |
![]() |
Overview of the Arduino Hardware The ATmega328p Datasheet Custom Configuration of your Arduino Software IDE Source files: .ino BareMinimum.ino Hard Drive Scavenger Hunt! Example: Blink.ino |
![]() |
||
1 Sep 14 |
p. 0![]() |
AVR Foundations' Cover Video... S. Atkinson's: Power, Programming Ports |
![]() ![]() |
||
0 Sep 9 |
![]() |
![]() |
|||



