📋 Component Inventory Summary
| Component | Quantity | Primary Specifications | Common Applications |
|---|---|---|---|
| Standard LEDs | 10 | Vf: 2.0V, If: 15mA | Indicators, displays, visual feedback |
| RGB LED | 1 | 3-color (R/G/B), Common cathode/anode | Color mixing, status indication |
| Rotary Encoder | 1 | Quadrature output, 20 PPR typical | Volume control, position tracking |
| Photoresistor (LDR) | 1 | Dark: 1MΩ, Bright: 1kΩ | Light sensing, auto-brightness |
| OLED Display | 1 | 128×64, I2C, SSD1306 | Data display, user interface |
| 7-Segment Display | 1 | 7 segments + DP, CC/CA | Numeric display, counters |
| Passive Buzzer | 1 | Frequency-controlled, 100Hz-10kHz | Alarms, tones, music |
| DIP Switch | 1 | 4 or 8 position, SPST | Configuration, binary input |
| 4×4 Keypad | 1 | 16 keys, matrix scanning | Data entry, PIN codes |
| 100kΩ Resistors | 10 | 1/4W, 5% tolerance | Pull-ups, voltage dividers |
| 10kΩ Resistors | 10 | 1/4W, 5% tolerance | Pull-ups, general purpose |
| 1kΩ Resistors | 10 | 1/4W, 5% tolerance | LED limiting, general purpose |
| 220Ω Resistors | 10 | 1/4W, 5% tolerance | LED current limiting |
⚡ Critical Design Formulas
LED Current Limiting
R = (Vsupply - Vf) / If
Example: 5V supply, 2V LED, 15mA target
R = (5 - 2) / 0.015 = 200Ω → Use 220Ω
Voltage Divider
Vout = Vin × (R2 / (R1 + R2))
Example: Photoresistor circuit
R1 = LDR (variable), R2 = 10kΩ fixed
Power Dissipation
P = I² × R = V² / R
Safety: Keep P < 50% of resistor rating
1/4W resistor → Max 125mW recommended
RC Time Constant
τ = R × C
Example: 10kΩ, 0.1µF
τ = 1ms, settling ≈ 5τ = 5ms
Frequency to Period
T = 1 / f
Example: 440Hz (A4 note)
T = 1/440 = 2.27ms period
Sound Wavelength
λ = v / f
Example: 1kHz tone in air
λ = 343 / 1000 = 0.343m = 34.3cm
🔌 Arduino Uno Pin Reference
| Pin Type | Pin Numbers | Specifications | Special Functions |
|---|---|---|---|
| Digital I/O | 0-13 (14 pins) | 5V logic, 40mA max per pin | Serial (0,1), Interrupts (2,3) |
| PWM Output | 3, 5, 6, 9, 10, 11 | 8-bit (0-255), ~490Hz / ~980Hz | analogWrite() function |
| Analog Input | A0-A5 (6 pins) | 10-bit ADC (0-1023), 0-5V range | Can be used as digital I/O |
| I2C | A4 (SDA), A5 (SCL) | 100kHz / 400kHz | Wire library, multiple devices |
| SPI | 10(SS), 11(MOSI), 12(MISO), 13(SCK) | Up to 4MHz | High-speed peripherals |
| Power | 5V, 3.3V, GND, Vin | 5V: 500mA, 3.3V: 50mA | Multiple GND pins available |
⚠️ CRITICAL LIMITS:
- Maximum current per I/O pin: 40mA
- Maximum total current all pins: 200mA
- Absolute maximum voltage on any pin: -0.5V to 5.5V
- Exceeding these limits can permanently damage the Arduino!
🎯 Best Practices & Design Guidelines
✓ Circuit Design Best Practices
- Always use current-limiting resistors with LEDs - Never connect LEDs directly to power
- Debounce all switches - 10-50ms delay or hardware RC filter
- Use pull-up/pull-down resistors - Prevent floating inputs (use INPUT_PULLUP when possible)
- Power management - Calculate total current draw, stay under limits
- Wire management - Keep wires organized, use color coding (Red=5V, Black=GND)
- Decoupling capacitors - 0.1µF near each IC for noise reduction
- Ground loops - Use star grounding, single ground reference point
- Test incrementally - Build and test one section at a time
💡 Programming Best Practices
- Use const for pin definitions - Makes code more readable and maintainable
- Avoid delay() in complex programs - Use millis() for non-blocking timing
- Comment your code - Explain what each section does
- Use libraries - Don't reinvent the wheel (Keypad, Adafruit, etc.)
- Serial debugging - Print values to understand program flow
- Initialize variables - Always give variables starting values
- Bounds checking - Validate all input data
- Function modularization - Break complex tasks into smaller functions
⚠️ Common Mistakes to Avoid
- Forgetting resistors - LEDs without resistors will burn out
- Reversed polarity - Always check LED, diode, capacitor orientation
- Floating pins - Unconnected inputs can give random readings
- Exceeding pin current - Use transistors/MOSFETs for high-current loads
- Integer overflow - Be careful with large numbers and calculations
- Blocking code - Long delay() calls prevent responsiveness
- Memory overflow - Arduino Uno has only 2KB RAM
- Wrong pin modes - Must set pinMode() before using pins
📚 Quick Reference: Resistor Color Codes
| Color | Digit | Multiplier | Tolerance |
|---|---|---|---|
| Black | 0 | ×1 | - |
| Brown | 1 | ×10 | ±1% |
| Red | 2 | ×100 | ±2% |
| Orange | 3 | ×1K | - |
| Yellow | 4 | ×10K | - |
| Green | 5 | ×100K | ±0.5% |
| Blue | 6 | ×1M | ±0.25% |
| Violet | 7 | ×10M | ±0.1% |
| Gray | 8 | ×100M | ±0.05% |
| White | 9 | ×1G | - |
| Gold | - | ×0.1 | ±5% |
| Silver | - | ×0.01 | ±10% |
Example: Yellow-Violet-Red-Gold = 47 × 100 ± 5% = 4.7kΩ ± 5%
🛠️ Troubleshooting Guide
| Problem | Possible Cause | Solution |
|---|---|---|
| LED doesn't light | Wrong polarity, no current limit, open circuit | Check orientation, add resistor, verify connections |
| LED too dim | Resistor too large, low supply voltage | Use smaller resistor (min 150Ω for 5V), check power |
| Erratic sensor readings | Floating input, noise, bad connection | Add pull-up/down, decoupling cap, check wiring |
| Display not working | Wrong I2C address, power issue, library error | Run I2C scanner, check Vcc/GND, reinstall library |
| Keypad not responding | Wrong pin mapping, no pull-ups, matrix short | Verify pin array, enable INPUT_PULLUP, test keys individually |
| Arduino resets randomly | Power supply insufficient, brown-out | Use adequate power supply (500mA+), add bulk capacitor |
| Program won't upload | Wrong board/port, USB cable, bootloader issue | Select correct board, try different cable, check connections |
| Serial monitor gibberish | Wrong baud rate | Match Serial.begin() rate with monitor setting |
📖 Essential Libraries
| Library | Purpose | Installation |
|---|---|---|
| Keypad | Matrix keypad scanning | Library Manager: "Keypad" |
| Adafruit_SSD1306 | OLED display driver | Library Manager: "Adafruit SSD1306" |
| Adafruit_GFX | Graphics primitives | Library Manager: "Adafruit GFX" |
| Wire | I2C communication | Built-in (no installation needed) |
| SPI | SPI communication | Built-in (no installation needed) |
📊 Component Datasheets & Resources
Where to find datasheets:
- Manufacturer websites - Most reliable source
- Datasheet Archive - alldatasheet.com
- Component distributors - DigiKey, Mouser, SparkFun
- Arduino forums - arduino.cc/forum
- GitHub repositories - Code examples and libraries
- Absolute maximum ratings
- Operating voltage and current
- Pin configurations and functions
- Timing diagrams
- Example circuits