Diferencia entre revisiones de «Serial.print()»
(→Ejemplo 5) |
(→Parametros) |
||
Línea 9: | Línea 9: | ||
</pre> | </pre> | ||
− | == | + | == Parámetros == |
;Variable: variable a evaluar. Esta variable puede ser de cualquier tipo. | ;Variable: variable a evaluar. Esta variable puede ser de cualquier tipo. | ||
− | ;formato: por defecto es DEC, pero puedes también usar HEX, OCT o BIN. | + | ;formato: por defecto es DEC, pero puedes también usar [[DEC / BIN / HEX / OCT|HEX, OCT o BIN]]. |
;digitos: si la variable es tipo [[float]] o [[double]] se puede especificar el numero de decimales. | ;digitos: si la variable es tipo [[float]] o [[double]] se puede especificar el numero de decimales. | ||
Revisión del 01:33 7 jul 2019
Contenido
Descripción
Vuelca o envía un dato (variable, número o cadena), al puerto serie; lo hace mediante la representación textual de su valor. Dicho comando puede tomar diferentes formas, dependiendo de los parámetros que usemos para definir el formato de volcado de los datos.
Sintaxis
Serial.print("texto a mostrar"); Serial.print(variable [,formato]); Serial.print(variable [,decimales]);
Parámetros
- Variable
- variable a evaluar. Esta variable puede ser de cualquier tipo.
- formato
- por defecto es DEC, pero puedes también usar HEX, OCT o BIN.
- digitos
- si la variable es tipo float o double se puede especificar el numero de decimales.
Retorna
size_t (long):print() devuelve el número de bytes escritos, aunque leer ese número es opcional.
Advertencias
- Es posible que print() muestre varios valores al mismo tiempo pero estos deben ser concatenados en una variable String previamente. Ver ejemplo 2.
Comentarios
Los literales de caracteres y cadenas también pueden representar caracteres especiales que son difíciles o imposibles de expresar de otra manera en el código fuente de un programa, como "nueva linea" (\n) o "tab" (\t). Estos caracteres especiales son todos precedidos por un carácter de barra diagonal inversa (\).
Código | Descripción | ASCII | DEC |
---|---|---|---|
\n | nueva línea | LF | 10 |
\r | retorno de carro | CR | 13 |
\t | tabulacion horizontal | HT | 9 |
\v | tabulacion vertical | VT | 11 |
\b | retroceso | BS | 8 |
\f | salto de página | FF | 12 |
\a | alerta (pitido) | BELL | 7 |
\' | comilla simple | ' | 39 |
\" | comillas dobles | " | 34 |
\? | signo de interrogación | ? | 63 |
\\ | barra invertida | \ | 47 |
Ejemplo 1
Observa que no hay diferencia entre usar Serial.write() y print() para un char.
char c = 'A'; //Serial lo mismo que c = 65
Serial.write(c); //A
Serial.print(c); //A
Serial.print(c, DEC); //65
Serial.print(c, HEX); //41
Serial.print(c, OCT); //101
Serial.print(c, BIN); //1000001
Ejemplo 2
Observa la diferencia sustancial entre usar Serial.write() y print() para un byte.
byte c = 'A'; //Seria lo mismo con c = 65
Serial.write(c); //A
Serial.print(c); //65 ***ojo al piojo***
Serial.print(c, DEC); //65
Serial.print(c, HEX); //41
Serial.print(c, OCT); //101
Serial.print(c, BIN); //1000001
Ejemplo 3
En este ejemplo demostramos que a una cadena se le puede concatenar un numero sin problemas.
Serial.print("Sensor: " + analogReda(A0)); //No muestra nada
int sensor = analogRead(A0);
sensor = "Sensor: "+ sensor;
Serial.print(sensor); //Solo sale valor de analogRead(A0)
String sensor = "Sensor: ";
sensor = sensor + analogRead(A0); //También puedes usar sensor.concat(analogRead(A0));
Serial.print(sensor); //Ok
Ejemplo 4
Aquí un ejemplo mas completo para dejar clara la diferencia entre Serial.write(), Serial.print() y Serial.println()
void setup() {
Serial.begin(9600);
Serial.println("*** Estamos listo ***");
}
void loop() {
if (Serial.available()){
byte ent = Serial.read();
Serial.print("El caracter enviado fue: ");
Serial.write(ent);
Serial.print(" y su codigo ASCCI es: ");
Serial.print(ent);
Serial.print(" en HEXADECIMAL es: ");
Serial.print(ent, HEX);
}
}
Ejemplo 5
Puede pasar cadenas almacenadas en memoria flash a Serial.print() envolviéndolas con el macro F().
Serial.print(F("Apuntes de Arduino"));
Tip: Esto es muy útil cuando se tiene que enviar gran cantidad de texto que de otro modo usaría mucha SRAM.
Ejemplo 6
Si tienes un float o un double puedes especificar el numero de decimales.
Serial.println(PI, 2); //3.14
Serial.println(PI, 6); //3.141593
Ejemplo 7
Podemos usar la Asignación condicional dentro de print()
void setup(){
Serial.begin(9600);
for (byte n=2; n<14; n++){
pinMode(n, INPUT);
}
}
void loop(){
for (byte n=2; n<14; n++){
Serial.print(n);
Serial.print(" = ");
Serial.println(digitalRead(n)?"Prendido":"Apagado");
}
Serial.println("---------");
delay(1000);
}
Vea también