Debugging Arduino Code (Find and Fix Errors)
Given Code (with errors):
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(9, HIGH); // Turn LED on
delay(1000); // Wait for 1 second
digitalWrite(9, LOW); // Turn LED off
delay(1000) // Missing semicolon
}
1. Find and Correct All Mistakes
Correct Code:
void setup() {
pinMode(9, OUTPUT);
}
void loop() {
digitalWrite(9, HIGH); // Turn LED on
delay(1000); // Wait for 1 second
digitalWrite(9, LOW); // Turn LED off
delay(1000); // Fixed semicolon
}
Three Errors Identified:
Error 1: Missing Semicolon
• Line: delay(1000)
• Problem: Missing ;
• Fix: Add ; at the end
Error 2: Syntax Issue (Compilation Error)
• Because of missing semicolon, Arduino compiler will show an error
• Fixing semicolon resolves this issue
Error 3: Logical/Expected Output Issue (Teacher Expected)
• If delay is incorrect or missing, LED will blink too fast or not visibly
• Ensuring proper delay is necessary for visible blinking
Why Each Correction is Necessary
1. Semicolon Fix (;)
In Arduino (which is based on C++), a semicolon (;) is used to terminate a statement.
Every instruction must end with a semicolon so the compiler knows where one command
finishes.
• Problem: Missing semicolon causes a syntax error
• Result: The program will not compile or upload to the Arduino board
• Reason: The compiler cannot understand where the statement ends
Conclusion: Adding a semicolon ensures the code is syntactically correct and executable.
2. Proper Syntax (Correct Structure of Code)
Syntax refers to the rules and structure of writing code (like grammar in English).
• Includes:
o Correct use of brackets { }
o Proper spelling of functions (digitalWrite, delay)
o Correct placement of statements
• Problem: Even a small syntax mistake can stop the entire program
• Result: Compilation errors or unexpected behavior
Conclusion: Following correct syntax ensures the program runs smoothly without errors
and behaves as expected.
3. Correct Use of Delay (delay(1000);)
The delay() function controls the timing of operations in Arduino.
• delay(1000) means wait for 1000 milliseconds (1 second)
• Without delay:
o LED turns ON and OFF extremely fast
o Human eye cannot detect blinking
o LED may appear:
▪ Constant ON
▪ Dim or flickering
• With delay:
o LED stays ON for 1 second
o Then OFF for 1 second
o Creates a clear blinking effect
Conclusion: Delay is essential to make the output visible, understandable, and controlled.
What Happens if delay(1000); is Removed?
If both delay(1000); lines are removed from the program, the Arduino will execute the
instructions inside the loop() function extremely fast, repeating them thousands of times per
second.
Effects on LED Behavior:
• The LED will switch ON and OFF very rapidly (in microseconds)
• This speed is too fast for the human eye to detect
• As a result, the LED may appear:
o Constantly ON (because ON state dominates visually)
o Dim (due to rapid switching reducing visible brightness)
o Flickering very fast (in some cases)
Why This Happens (Concept)
The Arduino runs in a continuous loop. Without any delay:
• There is no pause between ON and OFF states
• The processor executes commands at very high speed
• Human vision cannot perceive such fast changes
Role of delay() Function
The delay() function introduces a time gap between operations:
• delay(1000) = wait for 1 second
• This makes each state (ON/OFF) clearly visible
C. Troubleshooting a Faulty Circuit
1. The Problem
• The buzzer does not produce any sound when an object is detected
• The distance values shown on the Serial Monitor are incorrect or unstable
This indicates that the system is not working properly, even though the code is correct.
2. Observations
• Buzzer is connected to GND and digital pin 7
• Ultrasonic sensor (HC-SR04) is connected as:
o VCC → 5V
o GND → GND
o Trig → Pin 9
o Echo → Pin 10
• The program is correct, but the hardware output is wrong
This suggests the issue is likely in wiring or connections, not in the code.
3. Three Possible Mistakes
Mistake 1: Incorrect Wiring of Sensor Pins
• The Trig and Echo pins may be swapped
• This leads to:
o Wrong signal transmission
o Incorrect or zero distance readings
The sensor cannot calculate distance properly if signals are misrouted.
Mistake 2: Loose or Incorrect Connections
• Wires may be:
o Loose
o Connected to wrong rows in breadboard
• Missing VCC or GND can completely stop the circuit
Even a small loose wire can break the entire system.
Mistake 3: No Common Ground
• All components (Arduino, sensor, buzzer) must share the same GND
• Without common ground:
o Circuit becomes incomplete
o Signals cannot flow properly
This is one of the most common real-world mistakes.
4. Step-by-Step Solutions
Step 1: Check Power Supply
• Ensure proper connections:
o Sensor VCC → Arduino 5V
o Sensor GND → Arduino GND
Without power, the sensor cannot function.
Step 2: Verify Sensor Pin Connections
• Correct wiring:
o Trig → Pin 9
o Echo → Pin 10
Do not interchange these pins, as each has a specific role.
Step 3: Check Buzzer Connection
• Connect properly:
o Positive (+) → Pin 7
o Negative (–) → GND
Reversed polarity may prevent the buzzer from working.
Step 4: Secure All Connections
• Press wires firmly into breadboard
• Avoid:
o Loose wires
o Wrong rows
Stable connections ensure reliable circuit behavior.
Step 5: Test Using Serial Monitor
• Upload the code again
• Open Serial Monitor
• Check if:
o Distance values are correct
o Values change when object moves
If values are still wrong, recheck wiring carefully.
5. Corrected Circuit Diagram (Explanation for Exam Writing)
In exams, you can describe the diagram like this:
• Arduino 5V → Sensor VCC
• Arduino GND → Sensor GND and Buzzer GND
• Pin 9 → Trig (Ultrasonic Sensor)
• Pin 10 → Echo (Ultrasonic Sensor)
• Pin 7 → Buzzer (+ terminal)
This forms a complete and properly connected circuit.