Escolar Documentos
Profissional Documentos
Cultura Documentos
Componentes
arduino
protoboard
un led
1 resistencia de 220 oms (rojo, rojo, caf)
- al inicio
Circuito
El circuito de este proyecto slo consta de un led con su resistencia.
La diferencia en este proyecto con otros en los que hemos hecho
variar la intensidad de un led, es que ahora la informacin para
controlar el led la enviaremos desde la computadora por el cable
USB, por lo que el arduino debe permanecer conectado a la
computadora.
- al inicio
Diagrama
- al inicio
Cdigo
En este proyecto vamos a enviar la informacin al arduino usando
el monitor serial. Para hacer esto lo hacemos desde la ventana que
el monitor serial tiene para esto.
Para recibir y procesar la informacin enviada desde la
computadora, vamos a utilizar dos de las funciones de la biblioteca
Serial. Primero la funcin Serial.available(); para saber si hay
informacin disponible en el buffer de entrada. Y despues, en caso
de que esta informacin est disponible, la funcin
Serial.parseInt(); para leerla como nmeros enteros.
Con la informacin recibida, un nmero entre 0 y 9, vamos a
prender el led con el brillo correspondiente. Tendremos que usar la
funcin map() para convertir estos valores a valores usados para
las salidas analgicas con PWM, valores entre 0 y 255.
/*
*/
void loop() {
// checa si la computadora ha enviado un dato
if (Serial.available()) {
// si es asi, lo lee, debe ser un valor entre 0 y 9):
brillo = Serial.parseInt();
// mapea el valor de entrada a un valor entre 0 y 255
brillo = map(brillo, 0, 9, 0, 255);
// limitamos el valor entre 0 y 255
brillo = constrain(brillo, 0, 255);
// envia por el serial el valor convertido a un valor
entre 0 y 255
Serial.println(brillo);
// enciende el led con un valor entre 0 y 255
analogWrite(pinLed, brillo);
}
}
- al inicio
Variantes
Qu pasa si se envian caracteres distintos a un nmero entre 0 y
9? Podemos agregar un mensaje de error.
/*
*/
void setup() {
// inicializa la comunicacion serial
Serial.begin(9600);
// envia un mensaje con las instrucciones
Serial.println("Envia un numero entre 0 y 9");
// inicializa el pinLed de salida
pinMode(pinLed, OUTPUT);
}
void loop() {
// checa si la computadora ha enviado un dato
if (Serial.available()) {
// si es asi, lo lee, y lo guarda en una variable de
tipo caracter):
char dato = Serial.read();
// checamos si es un valor entre 0 y 9
if (dato >= '0' && dato <= '9' ) {
// si lo es lo convertimos a un entero entre 0 y 9
int brillo = dato - '0';
// y lo mapeamos a un valor entre 0 y 255
brillo = map(brillo, 0, 9, 0, 255);
// devuelve el valor convertido a un valor entre 0 y
255
Serial.println(brillo);
// enciende el led con un valor entre 0 y 255
analogWrite(pinLed, brillo);
} else {
Serial.println("Debes enviar un numero entre 0 y 9");
}
}
}
Traducir
This sketch uses the Serial.parseInt() function to locate values separated by a non-
alphanumeric character. Often people use a comma to indicate different pieces of information
(this format is commonly referred to as comma-separated-values or CSV), but other characters
like a space or a period will work too. The values are parsed into integers and used to
determine the color of a RGB LED. You'll use the Arduino Software (IDE) serial monitor to send
strings like "5,220,70" to the board to change the light color.
Leer ASCII Cadena
Circuit