Diferencia entre revisiones de «F()»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «== Descripción == La macro '''F()''' permite guardar la cadena a mostrar en monitor serie con Serial.print() o Serial.println() en la memoria FLASH en lugar de la RA...»)
 
(Referencias)
 
(No se muestran 13 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
== Descripción ==
 
== Descripción ==
La macro '''F()''' permite guardar la cadena a mostrar en monitor serie con Serial.print() o Serial.println() en la memoria [[FLASH]] en lugar de la [[RAM]].
+
La macro '''F()''' permite guardar la cadena a mostrar en monitor serie con [[Serial.print()]] o [[Serial.println()]] en la memoria [[flash]] en lugar de la [[SRAM]].
  
{{Nota: Si en el boceto tienes un montón de cosas que mostrar en el monitor serie, puedes llenar fácilmente la memoria [[RAM]], por eso es aconsejable usar esta macro para guardar esos textos en la memoria [[FLASH]]}}
+
{{Nota|Si en el [[boceto]] tienes un montón de cosas que mostrar en el monitor serie, puedes llenar fácilmente la memoria [[SRAM]], por eso es aconsejable usar esta macro para guardar esos textos en la memoria [[flash]].}}
 +
 
 +
{{Nota|Cualquier clase que "herede" de Print o [[Stream]] (ej.: [[Serial]]), tendrá acceso a las funciones '''print'''; las cuales siempre serán compatibles con esta macrofunción.}}
 +
 
 +
{{Nota|Es posible crear una función o método personalizado que acepte esta macro, el tipo de dato es '''const __FlashStringHelper*''' (puntero); sin embargo cabe recordar que la memoria [[flash]] es de sólo lectura para efectos de ejecución, las modificaciones sólo son posibles si los datos se copian a [[SRAM]] de antemano (mediante variables o vectores/matrices).}}
  
 
== Sintaxis ==
 
== Sintaxis ==
Línea 8: Línea 12:
 
Serial.print(F("texto a mostrar"));
 
Serial.print(F("texto a mostrar"));
 
</pre>
 
</pre>
 +
 +
== Comentarios ==
 +
Nada.
 +
 +
== Advertencias ==
 +
* '''F()''' al ser una macrofunción, solo se ejecuta en tiempo de compilación. Esto quiere decir que de parámetros se aceptan únicamente literales (entrecomillados) y cadenas de caracteres declarados como '''[[const]] [[char]]*'''; nada de vectores/matrices [[string]], ni siquiera objetos [[String]]. En resumen, '''solamente texto invariable se acepta'''.
  
 
== Ejemplos ==
 
== Ejemplos ==
<pre>
+
<syntaxhighlight lang="c++">
Serial.print(F("Escribe algo en el monitor serie que se almacena en FLASH"))
+
Serial.println(F("Escribe algo en el monitor serie que se almacena en FLASH"));
</pre>
+
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
 +
<categorytree mode=all>Serial</categorytree>
  
== Referencias ==
+
== Referencias externas ==
 +
* [https://programarfacil.com/blog/arduino-blog/conversion-de-numeros-a-cadenas-en-arduino/ Converison de numeros a cadenas] - Luis del Valle
  
[[Category:Estructura]]
+
[[Category:Funciones]]
 +
[[Category:Serial]]

Revisión actual del 17:12 18 jul 2019

Descripción

La macro F() permite guardar la cadena a mostrar en monitor serie con Serial.print() o Serial.println() en la memoria flash en lugar de la SRAM.

Nota: Si en el boceto tienes un montón de cosas que mostrar en el monitor serie, puedes llenar fácilmente la memoria SRAM, por eso es aconsejable usar esta macro para guardar esos textos en la memoria flash.


Nota: Cualquier clase que "herede" de Print o Stream (ej.: Serial), tendrá acceso a las funciones print; las cuales siempre serán compatibles con esta macrofunción.


Nota: Es posible crear una función o método personalizado que acepte esta macro, el tipo de dato es const __FlashStringHelper* (puntero); sin embargo cabe recordar que la memoria flash es de sólo lectura para efectos de ejecución, las modificaciones sólo son posibles si los datos se copian a SRAM de antemano (mediante variables o vectores/matrices).


Sintaxis

Serial.print(F("texto a mostrar"));

Comentarios

Nada.

Advertencias

  • F() al ser una macrofunción, solo se ejecuta en tiempo de compilación. Esto quiere decir que de parámetros se aceptan únicamente literales (entrecomillados) y cadenas de caracteres declarados como const char*; nada de vectores/matrices string, ni siquiera objetos String. En resumen, solamente texto invariable se acepta.

Ejemplos

Serial.println(F("Escribe algo en el monitor serie que se almacena en FLASH"));

Vea también


Referencias externas