
Encender y apagar led usando processing
- AGR
- Software , Electrónica
- 19 Jan, 2025
Encender y Apagar Luz LED Usando Processing
Índice
- ¿Qué es Processing?
- Temas importantes del proyecto
- Especificación detallada de las conexiones
- Especificaciones del proyecto
- Preguntas relacionadas con el tema
1. ¿Qué es Processing?
Processing es un lenguaje de programación y entorno de desarrollo basado en Java, diseñado para facilitar la creación de proyectos visuales y educativos. Es ampliamente utilizado para introducir a los estudiantes en la programación, la interacción gráfica y el diseño interactivo. Su simplicidad y potencia lo hacen ideal para proyectos que combinen software y hardware, como en este caso, el control de un LED.
2. Temas importantes del proyecto
- Serial Communication: Comunicación entre Processing y un microcontrolador (como Arduino) a través de un puerto serial.
- Control de hardware: Encender y apagar un LED mediante señales enviadas desde Processing.
- Interacción gráfica: Crear una interfaz visual donde el usuario pueda interactuar con un elemento gráfico, como un rectángulo.
- Entradas y salidas digitales: Uso de pines digitales en el microcontrolador para controlar el LED.
3. Especificación detallada de las conexiones
-
Componentes necesarios:
- Microcontrolador (Arduino).
- LED.
- Resistencia de 220 ohms.
- Cables de conexión.
- Computadora con Processing y Arduino IDE instalados.
-
Conexión del LED:
- Conecta el cátodo (pierna corta) del LED al pin GND del Arduino.
- Conecta el ánodo (pierna larga) del LED a un extremo de la resistencia.
- Conecta el otro extremo de la resistencia al pin digital 13 del Arduino.
-
Conexión al computador:
- Conecta el Arduino a la computadora mediante un cable USB.
4. Especificaciones del proyecto
- Objetivo principal: Encender y apagar un LED mediante la interacción del mouse con un rectángulo en una ventana de Processing.
- Funcionamiento:
- Al colocar el cursor sobre el rectángulo en la ventana de Processing, se envía un carácter
'H'
al Arduino, encendiendo el LED. - Cuando el cursor está fuera del rectángulo, se envía un carácter
'L'
, apagando el LED.
- Al colocar el cursor sobre el rectángulo en la ventana de Processing, se envía un carácter
- Código Arduino:
- El microcontrolador interpreta los caracteres enviados (
'H'
y'L'
) y ajusta el estado del LED.
- El microcontrolador interpreta los caracteres enviados (
- Código Processing:
- La aplicación gráfica detecta la posición del mouse y envía los caracteres correspondientes al Arduino mediante comunicación serial.
5. Preguntas relacionadas con el tema
- ¿Qué es Processing y para qué se utiliza?
- ¿Qué es un puerto serial y cómo se usa en este proyecto?
- ¿Qué sucede cuando enviamos el carácter
'H'
desde Processing al Arduino? - ¿Qué tipo de componente electrónico es un LED?
- ¿Qué función cumple la resistencia en la conexión del LED?
- ¿Cómo detecta Processing si el mouse está sobre el rectángulo?
- ¿Qué ocurre si eliminamos la línea
delay(100)
en el código de Arduino? - ¿Qué debemos configurar en Processing para establecer la comunicación con el puerto correcto?
- ¿Qué importancia tiene el método
pinMode
en el código de Arduino? - ¿Por qué es útil combinar Processing y Arduino en proyectos educativos?
Descargar Archivo
ejecutableCodigo
Processing
```java
import processing.serial.*;
Serial port; // Objeto de la clase Serial
String[] ports; // Lista de puertos disponibles
int selectedPortIndex = -1; // Índice del puerto seleccionado
void setup() {
size(400, 200);
noStroke();
frameRate(10);
// Obtener la lista de puertos serie disponibles
ports = Serial.list();
if (ports.length == 0) {
println("No se encontraron puertos COM disponibles.");
exit();
}
// Mostrar los puertos disponibles en la consola
println("Puertos disponibles:");
for (int i = 0; i < ports.length; i++) {
println(i + ": " + ports[i]);
}
}
void draw() {
background(255);
// Si no se ha seleccionado un puerto, mostrar los puertos disponibles
if (selectedPortIndex == -1) {
fill(0);
textSize(16);
text("Selecciona un puerto COM haciendo clic en el número:", 10, 20);
for (int i = 0; i < ports.length; i++) {
text(i + ": " + ports[i], 10, 50 + i * 20);
}
} else {
// Si se seleccionó un puerto, mostrar el programa principal
if (mouseOverRect()) {
fill(204); // Cambiar color si el mouse está sobre el rectángulo
port.write('H'); // Enviar 'H'
} else {
fill(0); // Cambiar color si no
port.write('L'); // Enviar 'L'
}
rect(50, 50, 100, 100); // Dibujar el rectángulo
}
}
void mousePressed() {
// Si no se ha seleccionado un puerto, comprobar si se hace clic en algún puerto listado
if (selectedPortIndex == -1) {
for (int i = 0; i < ports.length; i++) {
if (mouseX > 10 && mouseX < width && mouseY > 40 + i * 20 && mouseY < 60 + i * 20) {
selectedPortIndex = i; // Guardar el índice del puerto seleccionado
println("Puerto seleccionado: " + ports[selectedPortIndex]);
// Intentar abrir el puerto
try {
port = new Serial(this, ports[selectedPortIndex], 9600);
} catch (Exception e) {
println("Error al abrir el puerto: " + ports[selectedPortIndex]);
selectedPortIndex = -1;
}
}
}
}
}
boolean mouseOverRect() {
return ((mouseX >= 50) && (mouseX <= 150) && (mouseY >= 50) && (mouseY <= 150));
}
Arduino
// Read data from the serial and turn ON or OFF a light depending on the value
char val; // Data received from the serial port
int ledPin = 13; // Set the pin to digital I/O 4
void setup() {
pinMode(ledPin, OUTPUT); // Set pin as OUTPUT
Serial.begin(9600); // Start serial communication at 9600 bps
}
void loop() {
if (Serial.available()) { // If data is available to read,
val = Serial.read(); // read it and store it in val
}
if (val == 'H') { // If H was received
digitalWrite(ledPin, HIGH); // turn the LED on
} else {
digitalWrite(ledPin, LOW); // Otherwise turn it OFF
}
delay(100); // Wait 100 milliseconds for next reading
}