Sunteți pe pagina 1din 5

Enviando datos al Arduino desde el Monitor Serial

- componentes - circuito - diagrama - cdigo - variantes - referencias - otros -

En este proyecto vamos a enviar datos al arduino desde la


computadora. Para hacer esto vamos a hacerlo desde el Monitor
Serial, usando la comunicacn serial a travs del cable USB.
En el arduino vamos a recibir esos datos y vamos a leerlos con la
funcin Serial.read() de la biblioteca Serial.
Con el dato recibido vamos a cambiar la intensidad de un led
conectado a uno de los puertos de salida usando PWM.
- al inicio

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.
/*

En este proyecto cambiamos la instensidad de un led


dependiendo de un dato enviado con el monitor serial
y recibido por el serial del Arduino

*/

const int pinLed = 9; // el pin con el led, tienen que


ser con pwm

int brillo; // una constante para guardar el valor del dato


enviado
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, 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.
/*

En este proyecto cambiamos la instensidad de un led


dependiendo de un dato enviado con el monitor serial
y recibido por el serial del Arduino

*/

const int pinLed = 9; // el pin con el led, tienen que


ser con pwm

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");
}
}
}

Podras cambiar los rangos de los valores de entrada o hacer uso


de otros datos, como letras, para cambiar el brillo al led.

Traducir

Read ASCII String

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

Este bosquejo utiliza la funcin Serial.parseInt () para localizar valores


separados por un carcter no alfanumrico. A menudo la gente usa una
coma para indicar diferentespiezas de informacin (este formato se
conoce comnmente como valores separados por comas o CSV),
pero otros personajes como un espacio o un perodo trabajarntambin. Los
valores se analizan en nmeros enteros y se utilizan para determinar el color
de un LED RGB. Vamos a usar el software de Arduino (IDE) de monitor de
puerto serie para enviar cadenas como "5,220,70" a la pizarra para cambiar
el color de la luz.

Circuit

S-ar putea să vă placă și