Saturday 21 October 2017

Shift Arduino Out Binary Options


BitShift izquierda (LTLT), BitShift derecha (gtgt) Descripción De La Bitmath Tutorial en el patio hay dos operadores de desplazamiento de bits en C: el LTLT operador de desplazamiento a la izquierda y gtgt operador de desplazamiento a la derecha. Estos operadores hacen que los bits del operando de la izquierda que se desplazarán a la izquierda o hacia la derecha por el número de posiciones especificadas por el operando de la derecha. Más en matemáticas a nivel de bits se pueden encontrar aquí. Sintaxis numberofbits LTLT variable de numberofbits GTGT variables parámetros variables - (byte, int, long) numberofbits número entero lt 32 Ejemplo: Cuando se cambia un valor de x por y bits (x LTLT y), los más a la izquierda y bits de x se pierden, literalmente, se desplazó a cabo de la existencia: Si está seguro de que ninguno de los que está en un valor se está desplazando en el olvido, una forma simple de pensar en el operador de desplazamiento de izquierda es que se multiplica el operando de la izquierda por 2 elevado a la potencia operando de la derecha. Por ejemplo, para generar potencias de 2, las siguientes expresiones se pueden emplear: Cuando se cambia x derecho y bits (x gtgt y), y el bit más alto de X es un 1, el comportamiento depende del tipo de datos exacto de x . Si x es de tipo int, el bit más alto es el bit de signo, la determinación de si x es negativo o no, como hemos comentado anteriormente. En ese caso, el bit de signo se copia en bits inferiores, por razones históricas esotéricos: Este comportamiento, llamados extensión de signo, a menudo no es el comportamiento que desea. En lugar de ello, es posible que desee ceros que se arrastran de la izquierda. Resulta que las reglas de desplazamiento a la derecha son diferentes para las expresiones int sin signo, por lo que puede utilizar un encasillado para suprimir la que se está copiando desde la izquierda: Si usted tiene cuidado para evitar la extensión de signo, se puede utilizar el gtgt operador de desplazamiento a la derecha como una manera de dividir por potencias de 2. por ejemplo: correcciones, sugerencias, y nueva documentación deberán ser publicadas en el Foro. El texto de la referencia de Arduino está bajo licencia de Creative Commons 3.0 License Reconocimiento-Compartir bajo la misma. ejemplos de código de la referencia están liberados al dominio público. ShareEl 74HC164 registro de desplazamiento y la placa Arduino ampquotsome otros modelos son paralelos a cabo en serie, que hacen lo mismo, pero como entradas al arduinoampquot. ¿Qué números de parte son éstos, ya que can39t encuentro un registro de desplazamiento de 8 bits PISO en los 74XX lista de piezas mayoría de las series 74 I. C. lógica tiene una parte complementaria que son 1 o 2 dígitos diferente, echar un vistazo a la 165 y 166. Los don39t hago lo que quiero, pero no importa como I39ve ordenadas el problema. Necesito información de entrada de 15 interruptores diferentes para el Arduino, pero don39t tienen que muchas puntas de electrodo de ltemgt (algunos están en uso como salidas) lt / EMGT. I39ve usado 4 ltstronggt73LS30lt / stronggt (8 puertas NAND de entrada) para dar una salida de 4 bits binarios, por lo que sólo se use 4 pines en la Arduino. No tan bueno como pasador 1 (de serie), pero mejor que 15 pines tutorial muy fresco. ltbrgtI tenía un problema de averiguar dónde enchufar el reloj (8) ltbrgtand pin 9 (V) en el 74HC164. Finalmente llegué a tierra y 9.ltbrgtI pasador preguntaba por qué cuando me tocó el pin 9, los leds se iluminaban up. ltbrgtThen se dio cuenta de que estaba actuando como una especie de suelo, entonces me di cuenta. LOLltbrgtMy siguiente tutorial será el 7 segmentos display. ltbrgtltbrgtAlso Me preguntaba cómo puedo tener el flash matriz de 4x4 letters. ltbrgtCould usted me da una idea de que ¿Cómo puedo abrir el archivo. tmp en el IDE de Arduino. parece no funciona. ltbrgtthank you :) clic en los enlaces de arriba que se abrirá en el navegador, sólo debes copiar y pegar o cambiar el nombre del archivo tmp PDE (no tienen idea de lo que su hacer eso) Está bien. i39ll tratar. Gracias Esta es una excelente instructible Esto es, con mucho, el mejor guía para principiantes de registros de desplazamiento i39ve llegado al otro lado. Muchas Gracias por poner este por ahí. Espero que todavía responder a las preguntas de este instructable. He terminado de construir la matriz de 4x4. costuras que todo funcione bien, pero tengo problemas para iluminar el LEDs. ltbrgtltbrgtI puede tratar fácilmente un LED para iluminar individuo, pero cuando lo haga, me obtener alrededores LED para encender también (mucho más débil, entonces la luz dirigida) tiene ltbrgtltbrgtI atacado una imagen para mostrar lo que está pasando. Estoy intentando simplemente encendidos y el LED que se encuentra en la posición (1,1), pero como el mismo tiempo LED (4,4) es débilmente lit. ltbrgtltbrgthere es el trozo de código que estoy usando. ltbrgtshiftOut (datos, reloj, MSBFIRST, B10000001) ltbrgt retardo (1) ltbrgtltbrgtAny adivinar por qué Hola quería decir gracias por un gran tutorial, estoy a punto de terminar la construcción de la matriz de 4x4 y le permitirá saber cómo va. ltbrgt Grandes tutorial. ampnbsp Gracias por lo que es, it39s verdadera helpfulltbrgt Esta es una fantástica guía ltbrgt ltbrgt I39ve estado buscando algo como esto por escrito durante un tiempo. ltbrgtI ahora tienen un 4x4 totalmente funcional llevó matriz, que I39ve construido a mí mismo, y llegó a mostrar los patrones que quiero. ltbrgt ltbrgtThis es todo gracias a ti. ltbrgt ltbrgt ltbrgt Cheers, ltbrgt ltbrgt Mikey C Rad estupendo tutorial doodPopular Temas MakeUseOf Super Ofertas intento Hoy Ill que le enseñe un poco sobre Registros de cambio. Estos son una parte bastante importante de la programación de Arduino, básicamente porque amplían el número de salidas puede utilizar, a cambio de sólo 3 pines de control. También puede cambio en cadena registra en conjunto con el fin de conseguir aún más salidas. Este es un salto significativo en dificultad de tutoriales anterior sin embargo, y sugieren fuertemente que tiene una muy buena comprensión del material anterior (enlaces al final de este artículo), así como la comprensión de los conceptos básicos de la binaria ¿Qué es binario Tecnología explicó lo se binario Tecnología OKI Dado que binaria es tan absolutamente fundamental para la existencia de las computadoras, parece extraño que hayamos nunca se abordó el tema antes - por lo que hoy Id Id pensaba dar una breve visión general de lo binario. Leer más que escribí la última vez. ¿Qué es un registro de desplazamiento Un registro de desplazamiento de salida, técnicamente hablando, recibe datos en serie y le da salida en paralelo. En términos prácticos, esto significa que podemos enviar rápidamente un montón de comandos de salida al chip, dilo a activar, y las salidas se enviará a los pines correspondientes. En lugar de iteración a través de un pasador, que sólo tiene que enviar la salida necesaria a todos los pines a la vez, como un solo byte o más de información. Si se ayuda a entender, se puede pensar en un registro de desplazamiento como una serie de salidas digitales, pero puede omitir los comandos digitalWrite habituales y sólo tiene que enviar una serie de bits para convertirlos encendido o apagado. ¿Cómo funciona el registro de desplazamiento que va a utilizar el 74HC595N incluido en el kit de inicio Oomlout necesita sólo 3 pines de control. El primero es un reloj que neednt preocuparse demasiado acerca de esto como las bibliotecas de serie Arduino controlar, pero un reloj es básicamente sólo una de pulso eléctrico / apagado que marca el ritmo de la señal de datos. El pasador se utiliza para indicar el registro de desplazamiento cuando se debe convertir a sus salidas dentro y fuera de acuerdo con los bits que acabamos de decir lo envió de enganche en su lugar. Por último, el pin de datos es donde enviamos los datos en serie real con los bits para determinar el estado ON / OFF de los registros de desplazamiento salidas. Todo el proceso puede describe en 4 pasos: Establecer el pin de datos a alta o baja por primera patilla de salida en el registro de desplazamiento. Pulso el reloj para cambiar los datos en el registro. Continuar con la configuración de los datos y la pulsación del reloj hasta que haya establecido el estado requerido para todos los pines de salida. Pulso el pasador para activar la secuencia de salida. Implementación Necesita los siguientes componentes para este proyecto: 7HC595N cambio de chip registro 8 LEDs y resistencias apropiadas, o lo que quieras para dar salida a la protoboard habituales, conectores y un Arduino básica y mi versión ensamblada: He modificado el código original proporcionado por Ooolmout , pero si youd como para probar que en su lugar, se puede descargar en su totalidad aquí. Explicación del código se incluye, por lo que copiar y pegar todo el asunto desde abajo o Pastebin para leer una explicación del código. De desplazamiento de bits (OutputBytes Función) en el primer ejemplo de bucle outputBytes () utiliza el código de una secuencia de 8 bits (un byte) que posteriormente desplazamientos a la izquierda de cada iteración del bucle. Es importante señalar que si usted cambia más allá de lo posible, el bit se pierde simplemente. De desplazamiento de bits se realiza utilizando LTLT o gtgt seguido por el número de bits que desea cambiar por. Echa un vistazo a el siguiente ejemplo y asegúrese de entender qué está sucediendo: El envío de números enteros lugar (OutputIntegers Función) Si envía un número entero al registro de desplazamiento en lugar de un byte, simplemente convertir el número en una secuencia de datos binarios. En esta función (elimine el comentario en el bucle y subir para ver el efecto), tenemos un bucle for que cuenta 0-255 (el más alto número entero se puede representar con un byte), y envía en su lugar. Básicamente cuenta en binario, por lo que la secuencia puede parecer un poco al azar a menos que los LEDs están dispuestos en una línea larga. Por ejemplo, si usted lee el binario explica el artículo, usted sabe que el número 44 se representa como 00101100, por lo que los LED 3,5,6 van a encenderse en ese punto de la secuencia. Conexión en cadena de más de un registro de desplazamiento Lo destacable de Registros de cambio es que si se les da más de 8-bits de información (o por grande que su registro es), que se desplazarán los otros bits adicionales de nuevo. Esto significa que puede conectar hasta una serie de ellos juntos, empujar en una larga cadena de bits, y lo han distribuido a cada registro por separado, todas ellas sin codificación adicional de su parte. A pesar de que volveremos a que detalla el proceso o esquemas aquí, si tiene más de un registro de desplazamiento se puede tratar el proyecto desde el sitio oficial de Arduino aquí. Otros artículos de la serie: Eso es por lo que también vaya con los registros de cambio de hoy, ya que creo que hemos cubierto mucho. Como siempre, Id que animan a jugar con y ajustar el código, y no dude en hacer cualquier pregunta que pueda tener en los comentarios, o incluso compartir un enlace a su proyecto basado registro de desplazamiento increíble. 9 comentarios Escribir un comentario últimas sorteo Artículos relacionados Últimas DealsSerial a paralelo Shifting exprés con un 74HC595 Cambio fuera del chip amplificador 595 En algún momento u otro que se puede quedar sin pines en la placa Arduino y la necesidad de ampliarlo con registros de desplazamiento. Este ejemplo se basa en la 74HC595. Esta hoja de datos se refiere a la 74HC595 como un registro de desplazamiento en serie-en, serie o paralelo de salida de 8 bits con los cierres de salida 3 estados. En otras palabras, se puede utilizar para controlar 8 salidas a la vez, mientras que sólo tomando unos pines en el microcontrolador. Se pueden enlazar varios registros en conjunto para ampliar su producción aún más. (Los usuarios también pueden desear buscar otros chips de controlador con 595 o 596 en sus números de parte, hay muchos. El STP16C596 por ejemplo impulsará 16 LEDs y elimina las resistencias en serie con una función de fuentes de corriente constante.) ¿Cómo funciona todo esto es a través de algo que se llama comunicación serie síncrona, es decir, puede pulso un pasador hacia arriba y abajo de ese modo la comunicación de un byte de datos en el bit de registro a poco. Su pulso por segundo pasador, el pin de reloj, que delinea entre bits. Esto está en contraste con el uso de la comunicación en serie asíncrono de la función Serial. begin () que se basa en el emisor y el receptor para ser ajustado de forma independiente a una velocidad de datos acordada especificado. Una vez que todo el octeto se transmite al registro de los mensajes de alta o baja celebradas en cada bit quedar repartido a cada uno de los pines de salida individuales. Esta es la parte de salida en paralelo, que tiene todos los bolos hacen lo que usted quiere que hagan todos a la vez. La parte de salida de serie de este componente se debe a su pin adicional que puede pasar la información de serie recibido desde el microcontrolador de nuevo sin cambios. Esto significa que puede transmitir 16 bits en una fila (2 bytes) y el primer 8 fluirá a través del primer registro en el segundo registro y expresarse allí. Usted puede aprender a hacerlo desde el segundo ejemplo. 3 estados se refiere al hecho de que se pueden establecer los pines de salida como de alta, baja o alta impedancia. A diferencia de los estados alto y bajo, usted no puede configurar pines a su estado de alta impedancia de forma individual. Sólo se puede configurar todo el chip juntos. Esto es una cosa muy especializada que hacer - Piense en una matriz de LED que podrían necesitar ser controlados por microcontroladores completamente diferentes dependiendo de la configuración del modo específico incorporado en su proyecto. Ni ejemplo se aprovecha de esta característica y no te en general tienen que preocuparse de conseguir un chip que lo tiene. Aquí hay una tabla que explica la configuración de pines adaptados de la hoja de datos de Phillips. El primer paso consiste en ampliar la placa Arduino con un registro de desplazamiento. El Circuito 1. Si se gira sobre Realice las conexiones siguientes: GND (pin 8) a tierra, Vcc (pin 16) a 5V OE (pin 13) a tierra MR (pin 10) a 5V Esta configuración hace que todos los pines de salida activo y direccionable todo el tiempo. El único defecto de este conjunto es hasta que se termina con las luces de encender a su último estado o algo arbitraria cada vez que se enciende por primera vez el circuito antes de que el programa comienza a trabajar. Usted puede evitar esto mediante el control de los pasadores de MR y OE de la placa Arduino también, pero de esta manera va a trabajar y lo dejan con pasadores más abiertos. 2. Conectar con Arduino DS (pin 14) para Ardunio DigitalPin 11 SHCP (cable azul) (pin 11) para que Ardunio DigitalPin 12 STCP (cable amarillo) (pin 12) para Ardunio DigitalPin 8 (cable verde) A partir de ahora los que se se refiere como dataPin, el pinReloj y la latchPin respectivamente. Observe el condensador 0.1f en el latchPin, si tiene algún parpadeo cuando los pulsos de pasadores de retención se puede utilizar un condensador para igualar hacia fuera. 3. Añadir 8 LEDs. En este caso, debe conectar el cátodo (pin corto) de cada LED a una tierra común, y el ánodo (pasador largo) de cada LED a su eje de salida del registro respectivo turno. Utilizando el registro de desplazamiento para suministrar energía como esto se llama corriente de abastecimiento. Algunos registros de desplazamiento corriente de la fuente no puede, sólo pueden hacer lo que se llama corriente se hunde. Si usted tiene uno de los que significa que tendrá que cambiar la dirección de los LEDs. poniendo los ánodos directamente a la alimentación y los cátodos (pines de tierra) a las salidas de registro de desplazamiento. Debería comprobar la su hoja de datos específica si te enviaban utilizando un chip de 595 series. No se olvide de agregar una resistencia de 220 ohmios en serie para proteger los LEDs se sobrecargue. Diagrama del circuito El Código Aquí hay tres ejemplos de código. La primera es simplemente un código hola mundo que simplemente da salida a un valor de byte de 0 a 255. El segundo programa luces LED de uno a la vez. El tercer ciclo a través de una matriz. El código se basa en dos tipos de información en la hoja de datos: el diagrama de tiempos y la tabla de lógica. La tabla lógica es lo que te dice que básicamente todo lo importante sucede en una a batir. Cuando el pinReloj va de menor a mayor, el registro de desplazamiento lee el estado del pin de datos. A medida que los datos se movió en que se guarda en un registro de memoria interna. Cuando el latchPin va de menor a mayor los datos enviados se transfiere desde el registro de memoria registros de desplazamiento mencionada en los pines de salida, la iluminación de los LEDs. Ejemplo 2 En este ejemplo interminables añadir un segundo registro de desplazamiento, duplicando el número de pines de salida que tiene sin dejar de utilizar el mismo número de pines del Arduino. El Circuito 1. Añadir un segundo registro de desplazamiento. A partir del ejemplo anterior, se debería poner un segundo registro de desplazamiento en el tablero. Debe tener las mismas conduce a la alimentación ya tierra. 2. Conectar los 2 registros. Dos de estas conexiones, simplemente extienden el mismo reloj y el pestillo de la señal desde el Arduino para el segundo registro de desplazamiento (amarillo y cables verde). El cable azul va desde el pin de serie fuera (pin 9) del primer registro de desplazamiento a la entrada de datos en serie (pin 14) del segundo registro. 3. Añadir un segundo conjunto de LEDs. En este caso he añadido los verdes por lo que cuando la lectura del código es claro el byte que se va a qué conjunto de LEDs Diagrama del circuito de El Código De nuevo son tres ejemplos de código. Si usted es curioso, es posible que desee probar las muestras desde el primer ejemplo con este circuito configurado sólo para ver qué pasa. Código de ejemplo 2.1 Dual binario Contadores Sólo hay una línea adicional de código en comparación con el primer ejemplo de código del ejemplo 1. Se envía un segundo byte. Esto obliga a que el primer registro de desplazamiento, la que está directamente conectado a la placa Arduino, para pasar el primer byte enviado hasta el segundo registro, la iluminación de los LEDs verdes. El segundo byte entonces aparecer en los LEDs rojos. 2.2 Código de ejemplo 2 Byte uno por uno Al comparar este código al código similar del Ejemplo 1 se ve que un poco más ha tenido que cambiar. La función blinkAll () ha sido cambiado a los blinkAll2Bytes () para reflejar el hecho de que ahora hay 16 LED para el control. Además, en la versión 1 de los pulsings los latchPin estaban situadas dentro de las subfunciones lightShiftPinA y lightShiftPinB (). Aquí tienen que ser trasladado de nuevo en el bucle principal para dar cabida a tener que ejecutar cada subfunción dos veces en una fila, una vez que los LED verdes y una vez para los rojos. Código de ejemplo 2.3 - Dual definidos arreglos como muestra de 2.2, 2.3 muestra también se aprovecha de las nuevas blinkAll2bytes función (). 2.3s gran diferencia de la muestra 1.3 es solamente que en vez de una sola variable llamadas de datos y una única matriz llamada dataArray usted tiene que tener un Datared, un dataGREEN, dataArrayRED, dataArrayGREEN define en la delantera. Esto significa que la línea Datared dataArrayREDj dataGREEN dataArrayGREENj SHIFTOUT (pinDatos, pinReloj, datos) SHIFTOUT (pinDatos, pinReloj, dataGREEN) SHIFTOUT (pinDatos, pinReloj, Datared) Iniciado por Carlyn Maw y Tom Igoe nov 06Navigation versión actual 1.1.0 2011-03 -02: Soporte IDE 1.0. y probado en 0021 y 0022 Historia 1.0.0 2012-01-13: Primera versión. 1.1.0 2012-03-02: segundo lanzamiento. Descripción shiftOutX es una biblioteca para el control de los registros de desplazamiento. Yo he utilizado en cuatro registros de desplazamiento 74HC595 cadena margarita, pero se puede controlar hasta ocho registros. que no utiliza SPI por lo que no funciona para PWM, pero si los interruptores ON OFF son todo lo que se necesita para conducir los LED y / o relés (probablemente transistores para conducir los relés que es en realidad lo que estaba usando para) entonces esto va a trabajar . es igual que las salidas digitales en el Arduino. que se compone de funciones SHIFTOUT modificados de wiringshift. c. espero que servir a alguien. en la versión 1.1.0 se añadió SPI y punteros a las matrices de bytes se utilizan en lugar de enteros largos largos, es más rápido y PWM funciona (software implementado). Descargar, instalar y de importación y poner el directorio en shiftOutX / Documents / Arduino / bibliotecas (Mac) o Mis documentsArduinolibraries (Windows) de Arduino IDE. Se puede ver un ejemplo de archivo boceto - gt Sketchbook - gt Ejemplo - gt shiftOutX - gt shiftFourRegisters. Para crear un nuevo dibujo, seleccione desde el menú Sketch-gtImport Biblioteca-gtshiftOutX. Una vez que se importa la biblioteca, una línea include ltshiftOutX. hgt aparecerá en la parte superior de su Sketch. y también, un ltshiftPinNo. hgt incluir Creación Es necesario crear una instancia de la clase SHIFTOUT así: // shiftOutX (byte latchPin, byte pinDatos, pinReloj byte, el byte bitOrder, NofRegisters bytes) shiftOutX regGroupOne 40 8. 11. 12. MSBFIRST. 4 41 // sí se puede adjuntar más registros conectados en cadena sólo tiene que utilizar un diferent // latchPin número, porque se puede añadir otros // cuatro registros y sólo ocupan otro pin del Arduino // acaba de declarar otra instancia por ejemplo // regGroupTwo y utilizar el mismo pinDatos y pinReloj. // Se pueden utilizar dos grupos de ocho para un total de 128 Constantes Salidas Funciones Ejemplo Información sobre esta página

No comments:

Post a Comment