Funciones para manipular otras cosas en Arduino.
Genera una onda cuadrada de la frecuencia especificada (y un ciclo de trabajo del 50%) en un pin. Se puede especificar una duración, de lo contrario, la ola continúa hasta que se llame a noTone(). El pin se puede conectar a un zumbador piezoeléctrico u otro altavoz para reproducir tonos. Solo se puede generar un tono a la vez. Si ya se está reproduciendo un tono en un pin diferente, la llamada a tono() no tendrá efecto. Si el tono se reproduce en el mismo pin, la llamada establecerá su frecuencia.
El uso de la función tone() interfiere con las salida PWM de los pines 3 y 11. No es posible generar todos inferiores a 31 Hz.
tone(pin, frecuencia); tone(pin, frecuencia, duración);
La frecuencia sera un unsigned int y la duración unsigned long. Si desea reproducir diferentes tonos en varios pines, debe llamar a la función noTone() a un pin antes de llamar a un nuevo tone() en el siguiente pin.
Detiene la generación de una onda cuadrada activada por la función tone(). No tiene efecto si no se genera ningún tono.
noTone(pin);
Si desea reproducir diferentes tonos en varios pines, debe llamar a la función noTone() a un pin antes de llamar a un nuevo tone() en el siguiente pin.
Lee un pulso (HIGH o LOW) en un pin y devuelve la duración del pulso en microsegundos o 0 si no se inicia ningún pulso dentro de un tiempo de espera especificado. La función pulseIn() espera que el pin pase a HIGH, inicia el cronometraje, luego espera que el pin pase a LOW y detiene el cronometraje. Devuelve la longitud del pulso en microsegundos o 0 si el pulso no se completa dentro del tiempo de espera determinado con "espera".
pulseIn(pin, valor); pulseIn(pin, valor, espera);
Valor es el tipo de pulso a identificar: HIGH o LOW. Espera es el numero de us que espera el pulso. El predeterminado es 1 segundo.
Funciona bien con pulsos desde 10 us a 3 min de duración.
insigned long duracion: void setup(){ pinMode(7, INPUT); } void loop(){ duracion = pulseIn(7, HIGH); }
Desplaza en un byte de datos un bit cada vez. Comienza a partir del bit más significativo (más a la izquierda) o menos significativo (más a la derecha). Para cada bit, el pin de reloj pasa a nivel alto, el siguiente bit se lee de la línea de datos y a continuación el pin de reloj pasa a nivel bajo. Retorna el byte leido.
byte x = shiftIn(dataPin, clockPin, bitOrder);
En dataPin pondrás el puerto a leer, el clockPin es el pin que comandara el cambio (reloj) y bitOrder puede ser MSBFIRST (Primero el bit más significativo) o LSBFIRST (Primero el bit menos significativo).
Si vamos a interactuar con un dispositivo que está sincronizado por flancos de subida (rising)), necesitamos asegurarnos de que el pin de reloj está en estado LOW antes de la primera llamada a shiftIn() con una llamada a digitalWrite(pinReloj, LOW).
Esta es una aplicación por software; Arduino también proporciona un bus SPI que es la complementación por hardware, más rápida, pero sólo funciona en pines específicos.
Desplaza en un byte de datos un bit a cada vez. Comienza a partir del bit más significativo (más a la izquierda) o menos significativo (más a la derecha). Cada bit se escribe a su vez en un pin de datos, después de lo cual un pulso de reloj se activa (pasa a nivel alto, y a continuación, a nivel bajo) para indicar que el bit está disponible.
byte x = shiftOut(dataPin, clockPin, bitOrder, valor);
si estamos conectados con un dispositivo que está sincronizado por flancos de subida (rising), necesitamos asegurarnos de que el pin de reloj está a nivel bajo antes de llamar a la función shiftOut(), por ejemplo, con una llamada a digitalWrite(pinReloj, LOW).
Los dataPin y clockPin deben estar ya configurados como salida con pinMode(). La función shiftOut() escribe en la salida 1 byte (8 bits) por lo que requiere una operación de dos pasos para valores de salida mayores que 255.
int latchPin = 8; int clockPin = 12; int dataPin = 11; void setup() { pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); } void loop() { for (int j=0; j<256; j++) { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, j); //devuelve el latch pin a nivel alto indicando que ya no necesita escuchar la información digitalWrite(latchPin, HIGH); delay(1000); } }
Devuelve el número de bytes de una variable o el número de bytes ocupados por una matriz. Acepta cualquier tipo: byte, int, float.
sizeof(variable);
Esta función es útil para trabajar con matrices o datos tipo string donde es conveniente ser capaz de cambiar el tamaño de la matriz sin romper otras partes del programa.
char matriz[]="Esto es una matriz"; void setup(){ Serial.begin(9600); } void loop(){ if (int n=0; n<sizeof(matriz)-1; i++{ Serial.print(i); Serial.print(" = "); Serial.println(matriz[i]); } delay(5000); }
Tenga en cuenta que una cadena bien formada termina con el símbolo NULL, que tiene un valor ASCII 0.