Apunte de Arduino Hecho Por Ronald Parte 8
Apunte de Arduino Hecho Por Ronald Parte 8
8. Strings
Character Analysis: Use the operators to recognise the type of character we are dealing with.
String Addition Operator: Add strings together in a variety of ways.
String Append Operator: Use the += operator and the concat() method to append things to
Strings.
String Case Changes: Change the case of a string.
String Characters: Get/set the value of a specific character in a string.
String Comparison Operators: Compare strings alphabetically.
String Constructors: Initialize string objects.
String Index Of: Look for the first/last instance of a character in a string.
String Length & String Length Trim: Get and trim the length of a string.
String Replace: Replace individual characters in a string.
String Start With Ends With: Check which characters/substrings a given string starts or ends
with.
String Substring: Look for "phrases" within a given string.
String To Int: Allows you to convert a String to an integer number.
En este ejemplo se utilizan los operadores que nos permiten reconocer el tipo de carácter que
usamos. Es útil para comprobar si un carácter es ASCII, o es mayúscula, o numérico, o se trata de una
marca de puntuación y así sucesivamente. Las opciones disponibles abarcan una variedad de
situaciones y esto se demuestra en el siguiente esquema. Cada carácter enviado a la placa a través
del monitor serial, del software de Arduino (IDE), es analizada por el boceto que devuelve toda la
información que pudo encontrar. Un solo carácter puede disparar más de una condición y por lo
tanto se puede obtener varias respuestas para una sola entrada.
isAlphaNumeric()
es alfanumérico
isAlpha()
es alfabética
isAscii()
es ASCII
isWhitespace()
es un espacio en blanco
isControl()
es un carácter de control
isDigit()
es un dígito numérico
isGraph()
es un carácter imprimible que no es un espacio en blanco
isLowerCase()
es minúscula
isPrintable()
es imprimible
isPunct()
es puntuación
isSpace()
es un carácter de espacio
isUpperCase()
es mayúscula
isHexadecimalDigit()
es un hexadecimal digital válido (Por ej. 0 - 9, a - F, or A - F)
Hardware Required
Arduino or Genuino Board
No hay ningún circuito para este ejemplo, aunque la placa debe estar conectada a nuestro ordenador
a través del USB y la ventana del monitor serial del software de Arduino, debe estar abierta.
void setup() {
// abrimos las comunicaciones seriales y esperar a que el puerto se abra:
Serial.begin(9600);
while (!Serial) {
; // esperamos para que le puerto serial esté conectado.
}
void loop() {
// obtenemos cualquier bytes entrante:
if (Serial.available() > 0) {
int thisChar = Serial.read();
}
if (isDigit(thisChar)) {
Serial.println("it's a numeric digit");
}
if (isGraph(thisChar)) {
Serial.println("it's a printable character that's not whitespace");
}
if (isLowerCase(thisChar)) {
Serial.println("it's lower case");
}
if (isPrintable(thisChar)) {
Serial.println("it's printable");
}
if (isPunct(thisChar)) {
Serial.println("it's punctuation");
}
if (isSpace(thisChar)) {
Serial.println("it's a space character");
}
if (isUpperCase(thisChar)) {
Serial.println("it's upper case");
}
if (isHexadecimalDigit(thisChar)) {
Serial.println("it's a valid hexadecimaldigit (i.e. 0 - 9, a - F, or A - F)");
}
Para controlar un LED individual, ajustamos su columna en LOW y su fila en HIGH. Para controlar
múltiples LEDs en una fila, ajustamos la fila en HIGH, y luego ponemos las columnas en LOW para
encenderlos, si quisiéramos apagarlos, ajustaríamos las columnas a HIGH.
Aunque existen matrices de LED pre-hechos, también podemos hacer nuestra propia matriz de
64 LEDs , utilizando el esquema que se muestra arriba.
No importa qué pines del microcontrolador se conectan a las filas y columnas, porque pueden ser
asignar mediante software. Pero es conveniente conectar los pines en una forma ordenada, para
hacer más fácil el cableado. Un diseño típico se muestra a continuación.
Hardware Required
Arduino or Genuino Board
LED bar graph display or 10 LEDs
Potentiometer
10 220 ohm resistors
hook-up wires
breadboard
Circuito
Schematic
Código
void setup() {
// inicializamos los pines de E/S como salidas e
// iteramos sobre los pines:
for (int thisPin = 0; thisPin < 8; thisPin++) {
pinMode(col[thisPin], OUTPUT);
pinMode(row[thisPin], OUTPUT);
// tomamos los pines de la columna (ej. los cátodos) y lo ponemos en ALTO
// para asegurarnos que los LEDs estén todos apagados:
digitalWrite(col[thisPin], HIGH);
}
void loop() {
// leemos las entradas:
readSensors();
// dibujamos la pantalla:
refreshScreen();
}
void readSensors() {
// configuramos que el nuevo valor de x e y (posición del pixel) sea igual a LOW
// para que el LED se encienda en la próxima actualización de la pantalla:
pixels[x][y] = LOW;
void refreshScreen() {
// iteramos sobre las filas (ánodos):
for (int thisRow = 0; thisRow < 8; thisRow++) {
Al igual que puede concatenar cadenas (Strings) con otros objetos de datos
utilizando StringAdditionOperator , también se puede utilizar el operador += y la forma concat() para
añadir cosas a la cadena (strings). El operador += y la forma concat() trabajan de la misma manera, es
sólo una cuestión de estilo que uno prefiera. Los dos ejemplos a continuación ilustran ambos casos, y
resultado es la misma cadena:
or
String stringTwo = "A long integer: ";
// usando concat() para agregar un variable larga con string:
stringTwo.concat(123456789);
Hardware Required
Arduino or Genuino Board
Circuit
No hay ningún circuito para este ejemplo, aunque la placa debe estar conectada a nuestro ordenador
a través del USB y la ventana del monitor serial del software de Arduino, debe estar abierta.
Código
String stringOne, stringTwo;
void setup() {
// Abrimos el puerto serial y esperamos a que se abra:
Serial.begin(9600);
while (!Serial) {
; // esperamos hasta que el Puerto serial esté conectado.
}
void loop() {
Serial.println(stringOne); // imprimimos "Sensor "
stringOne += 123456789; // agrega una constante entera larga (constant long integer) al string:
Serial.println(stringOne); // imprime "A long integer: 123456789"
La función case en String permite cambiar el caso de un String. Funciona tal cual sus nombres lo
indican. toUpperCase()cambia toda la cadena de caracteres en mayúsculas y toLowerCase()cambia
toda la cadena de caracteres en minúscula. Sólo los caracteres de la “A” a “Z”, o de a “a” la “z” se ven
afectados.
Hardware Required
Arduino or Genuino Board
Circuit
No hay ningún circuito para este ejemplo, aunque la placa debe estar conectada a nuestro ordenador
a través del USB y la ventana del monitor serial del software de Arduino, debe estar abierta.
Código
void setup() {
// Abrimos el puerto serial y esperamos a que se abra:
Serial.begin(9600);
while (!Serial) {
; // esperamos hasta que el Puerto serial esté conectado.
}
void loop() {
// toUpperCase() cambia todas las letras a mayúsculas:
String stringOne = "<html><head><body>";
Serial.println(stringOne);
stringOne.toUpperCase();
Serial.println(stringOne);
Aquí hay un ejemplo que comprueba si la primera letra de la segunda palabra es 'B':
String reportString = "Franklin, Benjamin";
int spacePosition = reportString.indexOf(' ');
if (reportString.charAt(spacePosition + 1) == 'B') {
Serial.println("You might have found the Benjamins.")
}
Circuit
No hay ningún circuito para este ejemplo, aunque la placa debe estar conectada a nuestro ordenador
a través del USB y la ventana del monitor serial del software de Arduino, debe estar abierta.
Código
void setup() {
// Abrimos el puerto serial y esperamos a que se abra:
Serial.begin(9600);
while (!Serial) {
; // esperamos hasta que el Puerto serial esté conectado.
}
void loop() {
// hacemos un string para reportar la lectura del sensor:
String reportString = "SensorReading: 456";
Serial.println(reportString);
String message = "Most significant digit of the sensor reading is: ";
Serial.println(message + mostSignificantDigit);
S e n s o r R e a d i n g : 4 5 6
Carácter 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16