Curso de C++ y Arduino
Curso de C++ y Arduino
Tinkercad
Contenido:
1. Introducción a Arduino:
• ¿Qué es Arduino?
Arduino es una plataforma de hardware y software de código
abierto que permite crear proyectos electrónicos interactivos.
• Principales componentes de Arduino UNO:
• Pines digitales y analógicos.
• GND y 5V (alimentación).
• Puerto USB.
• ¿Por qué usar Arduino en Tinkercad?
• Es gratuito, fácil de usar y no requiere hardware físico.
2. Primeros pasos en Tinkercad:
• Crear una cuenta y acceder al simulador.
• Crear un nuevo circuito.
• Añadir componentes (Arduino UNO, LED, resistencias, botones).
3. Fundamentos básicos de C++ aplicados a Arduino:
• Variables: Cómo declarar variables para almacenar datos como
estados o valores de sensores.
• Funciones principales de Arduino:
• setup(): Se ejecuta una sola vez al iniciar.
• loop(): Se ejecuta en bucle continuamente.
• Funciones de entrada/salida:
Página 1 de 6
• pinMode(): Configura un pin como entrada o salida.
• digitalWrite(): Envía un valor HIGH o LOW a un pin.
• digitalRead(): Lee el estado de un pin digital.
void setup() {
pinMode(ledPin, OUTPUT); // Configurar el pin del LED como salida
pinMode(buttonPin, INPUT); // Configurar el pin del botón como entrada
}
void loop() {
buttonState = digitalRead(buttonPin); // Leer el estado del botón
if (buttonState == HIGH) { // Si el botón está presionado
digitalWrite(ledPin, HIGH); // Encender el LED
} else {
digitalWrite(ledPin, LOW); // Apagar el LED
}
}
Actividad:
Contenido:
Página 2 de 6
1. Estructuras de control básicas:
• if y else: Para tomar decisiones basadas en condiciones.
• for: Para repetir un bloque de código un número específico de
veces.
• while: Para repetir un bloque de código mientras se cumpla una
condición.
2. Circuito práctico: Secuencia de LEDs.
• Conecta 4 LEDs a los pines 2, 3, 4 y 5 del Arduino.
• Añade resistencias de 220Ω para proteger los LEDs.
3. Código explicado:
• Usar un bucle for para encender y apagar los LEDs en secuencia.
void setup() {
for (int i = 0; i < 4; i++) { // Configurar cada pin como salida
pinMode(leds[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 4; i++) { // Encender LEDs en secuencia
digitalWrite(leds[i], HIGH);
delay(500); // Esperar 500 ms
digitalWrite(leds[i], LOW);
delay(500); // Apagar el LED
}
}
Actividad:
Contenido:
1. Sensores básicos:
• Potenciómetro: Se utiliza para variar una señal analógica.
Página 3 de 6
• LDR (Sensor de luz): Cambia su resistencia según la cantidad de
luz.
2. Circuito práctico: Controlar el brillo de un LED con un potenciómetro.
• Conecta un potenciómetro al pin A0.
• Conecta un LED al pin 9 (PWM).
3. Código explicado:
• Leer el valor del potenciómetro y ajustar el brillo del LED.
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
int potValue = analogRead(potPin); // Leer el valor del potenciómetro (0-1023)
int brightness = map(potValue, 0, 1023, 0, 255); // Convertir a rango 0-255
analogWrite(ledPin, brightness); // Ajustar el brillo del LED
}
Actividad:
1. Simula el circuito y ajusta el potenciómetro para cambiar el brillo del LED.
2. Sustituye el potenciómetro por un sensor de luz (LDR) y observa cómo el
LED responde a los cambios de iluminación.
Contenido:
1. Concepto de arrays:
• Un array es una colección de elementos del mismo tipo.
• Ideal para manejar varios LEDs, botones o sensores de forma
eficiente.
2. Circuito práctico: Efecto Knight Rider (LEDs en movimiento).
• Conecta 6 LEDs a los pines digitales consecutivos (2 a 7).
3. Código explicado:
Página 4 de 6
• Usar un array para almacenar los pines de los LEDs y controlar su
encendido secuencial.
void setup() {
for (int i = 0; i < ledCount; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
digitalWrite(leds[currentLED], HIGH); // Encender el LED actual
delay(200);
digitalWrite(leds[currentLED], LOW); // Apagar el LED actual
Actividad:
Proyecto:
Crear un semáforo interactivo con botón para cambiar entre estados.
1. Circuito:
• LEDs rojo, amarillo y verde.
• Un botón para alternar entre estados.
2. Código:
• Crear una máquina de estados simple para manejar el semáforo.
Página 5 de 6
int redPin = 2, yellowPin = 3, greenPin = 4;
int buttonPin = 5;
int buttonState = 0;
int lastButtonState = 0;
int state = 0;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
lastButtonState = buttonState;
switch (state) {
case 0: // Rojo
digitalWrite(redPin, HIGH);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, LOW);
break;
case 1: // Amarillo
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, HIGH);
digitalWrite(greenPin, LOW);
break;
case 2: // Verde
digitalWrite(redPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, HIGH);
break;
}
}
Página 6 de 6