Lesson Template

Advanced I/O

Explore debouncing, pull-ups, and stable input design.

Progress

0% completed

Lesson Overview

This lesson introduces the core ideas behind Advanced I/O.

  • INPUT_PULLUP
  • Debouncing
  • Reliable signals

Example Code

pinMode(buttonPin, INPUT_PULLUP);
int pressed = digitalRead(buttonPin) == LOW;

Lessons in This Section

Lesson 96: Using noTone() Advanced I/O

Learn how noTone() stops active tone() output cleanly and when to use controlled sound shutdown in advanced I/O behavior.

Open Lesson

Lesson 97: Using tone() Advanced I/O

Learn how tone() starts square-wave buzzer output with frequency and duration control in advanced I/O workflows.

Open Lesson

Lesson 98: Using pulseIn()

Learn how pulseIn() measures signal pulse width with timeout control for distance sensors and digital timing analysis.

Open Lesson

Lesson 99: Using pulseInLong()

Learn how pulseInLong() handles longer pulse timing with timeout safeguards and compare it with pulseIn().

Open Lesson

Lesson 100: Using shiftIn()

Learn how shiftIn() reads serial bit streams from shift registers with selectable bit order and stable clocking.

Open Lesson

Lesson 101: Using shiftOut()

Learn how shiftOut() sends serial bit streams to shift registers with controlled latch/clock timing and bit order.

Open Lesson