// Called once at startup
void setup() {
// Initialize pins, serial, etc.
pinMode(13, OUTPUT);
Serial.begin(9600);
}
// Called repeatedly
void loop() {
// Main program logic
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
} arduino-cli compile --fqbn arduino:avr:uno sketch | Compile sketch |
arduino-cli upload -p /dev/ttyUSB0 --fqbn arduino:avr:uno sketch | Upload to board |
arduino-cli board list | List connected boards |
arduino-cli lib install "Servo" | Install library |
arduino-cli monitor -p /dev/ttyUSB0 | Serial monitor |
// Set pin mode
pinMode(pin, INPUT); // High impedance input
pinMode(pin, OUTPUT); // Output
pinMode(pin, INPUT_PULLUP); // Input with internal pull-up
// Write digital output
digitalWrite(pin, HIGH); // Set pin high (5V/3.3V)
digitalWrite(pin, LOW); // Set pin low (0V)
// Read digital input
int value = digitalRead(pin); // Returns HIGH or LOW const int buttonPin = 2;
const int ledPin = 13;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
} // Read analog input (0-1023 for 10-bit ADC)
int value = analogRead(A0);
// Convert to voltage (for 5V reference)
float voltage = value * (5.0 / 1023.0);
// PWM output (0-255)
analogWrite(pin, 127); // 50% duty cycle
// Change PWM frequency (advanced)
// TCCR0B = TCCR0B & 0b11111000 | 0x01; const int potPin = A0;
const int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int potValue = analogRead(potPin);
int brightness = map(potValue, 0, 1023, 0, 255);
analogWrite(ledPin, brightness);
delay(10);
} void setup() {
Serial.begin(9600); // Start serial at 9600 baud
}
void loop() {
// Print data
Serial.print("Value: ");
Serial.println(42); // With newline
Serial.printf("x=%d\n", x); // Formatted (ESP32)
// Read data
if (Serial.available() > 0) {
char c = Serial.read(); // Read one byte
String s = Serial.readString(); // Read string
int n = Serial.parseInt(); // Read integer
}
} delay(1000); // Wait 1000 milliseconds
delayMicroseconds(100); // Wait 100 microseconds
unsigned long ms = millis(); // Milliseconds since start
unsigned long us = micros(); // Microseconds since start
// Non-blocking delay pattern
unsigned long previousMillis = 0;
const long interval = 1000;
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
// Do something every interval
}
} #include <Servo.h>
Servo myServo;
void setup() {
myServo.attach(9); // Attach to pin 9
}
void loop() {
myServo.write(90); // Move to 90 degrees
delay(1000);
myServo.write(0); // Move to 0 degrees
delay(1000);
} #include <Wire.h>
void setup() {
Wire.begin(); // Join as master
}
void loop() {
// Write to device
Wire.beginTransmission(0x50); // Address
Wire.write(0x00); // Register
Wire.write(0xFF); // Data
Wire.endTransmission();
// Read from device
Wire.requestFrom(0x50, 1); // Request 1 byte
if (Wire.available()) {
byte data = Wire.read();
}
} #include <SPI.h>
const int CS = 10;
void setup() {
SPI.begin();
pinMode(CS, OUTPUT);
digitalWrite(CS, HIGH);
}
void loop() {
digitalWrite(CS, LOW); // Select device
SPI.transfer(0x01); // Send byte
byte result = SPI.transfer(0); // Receive byte
digitalWrite(CS, HIGH); // Deselect
} volatile int counter = 0; // Use volatile!
void setup() {
pinMode(2, INPUT_PULLUP);
attachInterrupt(
digitalPinToInterrupt(2),
handleInterrupt,
FALLING // RISING, FALLING, CHANGE, LOW
);
}
void handleInterrupt() {
counter++; // Keep ISR short!
}
void loop() {
noInterrupts(); // Disable interrupts
int c = counter;
interrupts(); // Re-enable
Serial.println(c);
}