Barato y fácil opto-aislado TTL-a-110V luz módulo de control (32 / 32 paso)

' {$STAMP BS2}
' {$PBASIC 2.5}

' Versión del controlador de árbol "Westinghouse" Navidad para el árbol de la luz-cadena 16.
' Esto es un homenaje al árbol original utilizado en el centro de i+d de Westinghouse en Churchill, PA.
' Ejecuta 2 módulos de 8 controladores de salida de 110V, 1 para 8 cuerdas superiores, 1 para 8 cuerdas inferiores
' Cada módulo impulsado por TTL 74-573 cierres octales de serie. Datos del byte más bajo de IO
' escrito/en manos de las transiciones de baja-alta-baja en bits de control desde el byte superior de IO.
' Módulo 1 (luz superior) asegurada por el control de puerto de 8 bit, módulo 2 (inferior) por puerto de 9 bits.
' Los 2 módulos según lo utilizado aquí están expandibles a 8 módulos para un total de 64 salidas controladas

' Esta versión minimiza el uso de la memoria mediante la eliminación de las variables al azar
' y también el diseño estructurado de tener un bucle principal que se llama iluminación
' rutinas como subrutinas. Ahora todas las rutinas son en el bucle principal sí mismo.
' Sí, malo para tener menos estructura pero ahorra muchos bytes. Varios de los
' rutinas anteriores también fueron reescritas para usar bucles más ya que toman
' mucho menos espacio que sólo pasando a través de listas de valores de la lámpara. Confiando
«más sobre lazos tiene la desventaja de limitar los patrones un poco, pero
' hace la programación más intrincada e interesante.

«Descargar programa - conectar cable serial COM1 a encender Junta
' botón de Play en la barra de herramientas

' Para probar las rutinas individuales pegar rutina en "xmaslites2-minimizar-testfile.bs2"
' Recuerde actualizar el archivo de prueba si cambian de definiciones de variables o subrutinas

'----------------------------------------------------------------------------

' definir y establecer las variables
ctr1 VAR Nib ' contrarrestar los índices de bucles rutina principal
Ctr2 VAR Nib
ctr3 VAR Nib

subctr1 VAR Nib ' índice de contador para bucles de subrutina
subpause VAR Word ' variable para pasar el tiempo de pausa a subrutinas
shiftcount VAR Nib ' contador para el número de turnos

lpctr1 VAR Nib ' contrarrestar longitudes para bucles de rutina principal
lpctr2 VAR Nib
delay1 VAR Word ' más o menos constantes para las pausas en las rutinas
delay2 VAR palabra

lowerlamps VAR Byte ' contiene lámpara los bits de estado para bajos 8 cuerdas
upperlamps VAR Byte ' contiene lámpara los bits de estado para superiores 8 cuerdas

holdvar1 VAR Byte ' temperatura portalámparas de valor
holdvar2 VAR Byte ' temperatura portalámparas de valor
shiftee VAR Byte ' variable temporal para que el cambio de rutinas

OUTL = % 00000000 ' establecer todas las líneas de datos bajo
OUTH = % 00000000 ' establecer todas las líneas de comando bajo
DIRS = % 1111111111111111 ' establece todos los pines de I/O en modo de salida

' Establecer los valores de las constantes que la mirada y la velocidad del árbol general
delay1 = 500 ' retardo de medio segundo
delay2 = 800
lpctr1 = 3
lpctr2 = 6

' bucle principal - en esta versión de memoria mínima, las rutinas de la lámpara no se llaman como subrutinas
HACER

' MMM AllFlash MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

PARA ctr1 = 1 a 4
OUTL = % 11111111 ' todas las luces en
GOSUB Drivemodule12
Delay2 pausa
OUTL = % 00000000 ' apagar todas las luces
GOSUB Drivemodule12
Delay2 pausa
SIGUIENTE

' NNN secuencia y relleno NNNNNNNNNNNNNNNNNNNNNNNN
' Esta rutina circula una cadena encendida alrededor, dejando
' un adicional encendido cadena cada vez hasta que se enciendan todas las cadenas.
' Se inicia con el círculo inferior de cadenas.

holdvar1 = % 00000000 ' esta variable acumula las cuerdas izquierda encendida
' final del juego - a partir de la cadena MSB MSB
' luego continuar agregando 1 MSB MSB-2, etc.. El
' Cadena MSB es cadena -H - en las etiquetas de cadena ligera
ctr3 = 8 ' este contador es disminuye como el número de pasadas necesitada
' hacer una cadena de luz en la pila acumulada disminuye
' con cada uno agregó cadena
PARA ctr1 = 1 a 8
shiftee = % 00000001 ' bit de control secuencia ligera comienza en LSB
PARA ctr2 = 1 a ctr3
lowerlamps = holdvar1 | shiftee ' ya encendido secuencias ORd con la cadena de cambia
OUTL = lowerlamps ' resultado de o se envía al módulo de control
GOSUB Drivemodule2
Delay1 de pausa
shiftee = shiftee << 1 ' cambiar la cadena de encendido al izquierda 1 lugar
SIGUIENTE
holdvar1 = lowerlamps ' recordar posiciones final cadena iluminado como cada bucle interno
' agrega una cadena más encendida en el extremo MSB
ctr3 = ctr3-1
SIGUIENTE

holdvar1 = % 00000000 ' misma rutina que el anterior, en la cuerda superior
ctr3 = 8 ' mientras las cuerdas inferiores todos permanecerán encendidas
PARA ctr1 = 1 a 8
shiftee = % 00000001
PARA ctr2 = 1 a ctr3
upperlamps = holdvar1 | shiftee
OUTL = upperlamps
GOSUB Drivemodule1
Delay1 de pausa
shiftee = shiftee << 1
SIGUIENTE
holdvar1 = upperlamps
ctr3 = ctr3-1
SIGUIENTE ' todas las lámparas de la izquierda en

' NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

' QQQQ sobre QQQQQQQQQQQQQQQQQQQQQQQQQQQ superior
' Similar a la secuencia y llenar, el anterior, excepto las luces circulan en la parte superior
' del árbol en pares de opuestos cadenas (secuencias mismo color), dejando
' un adicional encendido cadena cada vez hasta que se enciendan todas las cuerdas del par.

holdvar1 = % 00000000 ' esta variable acumula cadenas inferiores izquierda iluminadas
holdvar2 = % 00000000 ' esta variable acumula cadenas superiores izquierda iluminadas

' Nota: esta rutina aún no está terminada

' QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ

' Drenaje VVVVV alrededor VVVVVVVVVVVVVVVVVVVV
' Todas las lámparas de luz y luego apagar secuencialmente superior/bot
' una vez alrededor del árbol hasta que todas las cadenas de
' Observe que OUTL contiene el estado actual del árbol

OUTL = % 11111111 ' comenzar con todas las luces en
GOSUB Drivemodule12
Delay2 pausa

PARA ctr2 = 1 a 8
OUTL = OUTL >> 1 ' derecho cambio, cambios en ceros
GOSUB Drivemodule1 ' desactivar la cadena superior
Delay2 pausa
GOSUB Drivemodule2 ' Apague cadena inferior
Delay2 pausa
SIGUIENTE

' VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

' WWWWWW superior inferior Flash WWWWWWWWWWWWWWWWWWWW
' flash todas cuerdas arriba y abajo y hacia atrás

PARA ctr2 = 0 para lpctr2
OUTL = % 11111111
GOSUB Drivemodule1 ' todos los principales cadenas en
OUTL = % 00000000
GOSUB Drivemodule2 ' todos abajo cadenas de
PAUSA delay1 ' esperar
OUTL = % 11111111
GOSUB Drivemodule2 ' todos abajo cadenas en
OUTL = % 00000000
GOSUB Drivemodule1 ' todos rematar cuerdas
PAUSA delay1 ' esperar

SIGUIENTE
GOSUB Drivemodule12 ' termina con todas las luces

' WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

' Subrutina de CCC SeqOnOff CCCCCCCCCCCCCCCCCCCCCC
' Luces de todas las cadenas, luego se apaga secuencialmente
' con aumento/disminución de pausa
' superior y bot controlado juntos

OUTL = % 00000000 ' empezar por salir todas las luces
GOSUB Drivemodule12
Delay2 pausa

PARA ctr2 = 0 para lpctr1

' enciende secuencialmente CW un top/bot de cuerdas a la vez
PARA ctr1 = 0 a 7
Ctr1 alta
GOSUB Drivemodule12
PAUSA delay2-(ctr2*(delay1-100)/2)
SIGUIENTE

' luces secuencialmente CW top/bot de cuerdas a la vez
PARA ctr1 = 0 a 7
Ctr1 baja
GOSUB Drivemodule12
PAUSA 100+(ctr2*(delay1-100)/2)
SIGUIENTE

SIGUIENTE ' termina con todas las luces

' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

' JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ de Cylon JJJ
' delantera 5 cuerdas - salto hacia atrás y adelante rápido iluminado cadena
' top cadena solamente... por ahora
' Se debe iniciar con todas las luces

upperlamps = % 00000010
subpause = 200
shiftcount = 4

PARA ctr1 = 0 para lpctr2

GOSUB ShiftLeftUpper
GOSUB ShiftRightUpper

SIGUIENTE

OUTL = % 00000000 ' apagar todas las luces
GOSUB Drivemodule12

' JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ

' HHH SeqOnOff opuestos subrutina HHHHHHHHHHHHH
' Luces de todas las cadenas, luego se apaga secuencialmente
' con aumento/disminución de pausa
' superior y bot en direcciones opuestas

' Esta rutina SeqOnOff no escrita todavía, todavía idéntico al anterior

' Para el ctr2 = 0 para lpctr1

' enciende secuencialmente una cadena CW en un momento
' Para ctr1 = 0 a 7
' Alta ctr1
' GOSUB Drivemodule12
' Pausa delay2-(ctr2*(delay1-100)/2)
' SIGUIENTE

' luces off secuencialmente una cadena de CW en un momento
' Para ctr1 = 0 a 7
' Ctr1 baja
' GOSUB Drivemodule12
' Pausa 100+(ctr2*(delay1-100)/2)
' SIGUIENTE

' Siguiente ' termina con todas las luces

' HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

' Subrutina de AAA Circulate1 AAAAAAAAAAAAAAAAAAAAAAA
3 encendido cadenas chase, aumentando la velocidad cada repetición
' circula 4 veces, repite veces lpctr2 al azar
' parte superior e inferior están en fase de

' Circulate1:

PARA ctr2 = 0 para lpctr2

OUTL = % 00000001 ' luz 1,2,3 cuerdas top & bot antes de entrar en bucle persiguiendo
GOSUB Drivemodule12
PAUSA 150-(ctr2*15)

OUTL = % 00000011
GOSUB Drivemodule12
PAUSA 150-(ctr2*15)

lowerlamps = % 00000111 ' lowerlamps variable utilizada para superior e inferior juntos
subpause = 150-(ctr2*15)
shiftcount = 9
GOSUB ShiftLeftBoth

SIGUIENTE ' termina con todas las luces

' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

' Subrutina brillante GirlsGirlsGirls suplente PPP PPPPPPPPPP
' parpadea entre cadenas adyacentes, superiores e inferiores alternando
' Espumoso se produce cuando la cadena del tiempo es corto, alrededor de 100

' GirlsGirlsGirls:

PARA ctr2 = 0 a 16
OUTL = % 01010101
GOSUB Drivemodule1
OUTL = % 10101010
GOSUB Drivemodule2
PAUSE 100

OUTL = % 10101010
GOSUB Drivemodule1
OUTL = % 01010101
GOSUB Drivemodule2
PAUSE 100

SIGUIENTE ' termina con luces en última posición

' PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP

' DDD RotatePairs subrutina DDDDDDDDDDDDDDDDDDD
' rotación pares de cadenas enfrente uno del otro

' RotatePairs:
OUTL = % 00000000 ' borrar todas las luces OFF

PARA ctr2 = 0 para lpctr2
PARA ctr1 = 0 a 3
Ctr1 alta
Ctr1 alta + 4
GOSUB Drivemodule12
Delay1 de pausa
Ctr1 baja
Ctr1 baja + 4
GOSUB Drivemodule12
SIGUIENTE
SIGUIENTE ' termina con luces en última posición

' DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

' EEE CounterRotate EEEEEEEEEEEEEEEEEEEEEEEEEEE
' counterrotating pares
' CounterRotate:

PARA ctr2 = 0 para lpctr1

OUTL = % 10000000
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 01000001
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 00100010
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 00010100
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 00001000
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 00010100
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 00100010
GOSUB Drivemodule12
Delay1 de pausa
OUTL = % 01000001
GOSUB Drivemodule12
Delay1 de pausa

SIGUIENTE ' termina con luces en última posición

' EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

OUTL = % 00000000 ' apagar todas las luces
GOSUB Drivemodule12
Delay1 de pausa

' Subrutina de brillo de estrellas FFF FFFFFFFFFFFFFFFFFFFFFFF
' patrón de estrella A-F-C-H-E-B-G-D, abajo queda arriba por 1 ciclo
' Destellos debido a cortocircuito en pausa de tiempo de 100
' Antigua versión de la estrella tuvo un retraso que cambia con cada lazo
' con esta fórmula - delay1-(ctr2*(delay1-100)/lpctr1)
' Star:

PARA ctr2 = 0 para lpctr2
OUTL = % 00000001
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00100000
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00000001
GOSUB Drivemodule2
PAUSE 100
OUTL = % 00000100
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00100000
GOSUB Drivemodule2
PAUSE 100
OUTL = % 10000000
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00000100
GOSUB Drivemodule2
PAUSE 100
OUTL = % 00010000
GOSUB Drivemodule1
PAUSE 100
OUTL = % 10000000
GOSUB Drivemodule2
PAUSE 100
OUTL = % 00000010
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00010000
GOSUB Drivemodule2
PAUSE 100
OUTL = % 01000000
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00000010
GOSUB Drivemodule2
PAUSE 100
OUTL = % 00001000
GOSUB Drivemodule1
PAUSE 100
OUTL = % 01000000
GOSUB Drivemodule2
PAUSE 100
OUTL = % 00000000
GOSUB Drivemodule1
PAUSE 100
OUTL = % 00001000
GOSUB Drivemodule2
PAUSE 100
OUTL = % 00000000
GOSUB Drivemodule2
PAUSE 100

SIGUIENTE ' termina con la luz
PAUSE 1500

' FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

' Subrutina BBB Circulate2 BBBBBBBBBBBBBBBBBBBBBBBBB
3 encendido cadenas chase, aumentando la velocidad cada repetición
' circula 4 veces, lpctr1 veces
' parte superior e inferior son 90 grados fuera de fase
' recordatorio - module1 es superiores lámparas, módulo 2 es más bajas
' Circulate2:

PARA ctr2 = 0 para lpctr1

OUTL = % 00000001 ' luz 2 cuerdas top & bot antes de entrar en bucle persiguiendo
GOSUB Drivemodule1
PAUSA 150-(ctr2*15)

OUTL = % 00000011
GOSUB Drivemodule1
PAUSA 150-(ctr2*15)

OUTL = % 00000111
GOSUB Drivemodule1
OUTL = % 00000001
GOSUB Drivemodule2
PAUSA 150-(ctr2*15)

OUTL = % 00001110
GOSUB Drivemodule1
OUTL = % 00000011
GOSUB Drivemodule2
PAUSA 150-(ctr2*15)

OUTL = % 00011100
GOSUB Drivemodule1
OUTL = % 00000111
GOSUB Drivemodule2
PAUSA 150-(ctr2*15)

upperlamps = % 00011100
lowerlamps = % 00000111

PARA ctr1 = 1 a 8 ' cambio 3 encendido cuerdas aproximadamente 1 vuelta completa hasta que todos de

upperlamps = upperlamps << 1
lowerlamps = lowerlamps << 1
OUTL = upperlamps
GOSUB Drivemodule1
OUTL = lowerlamps
GOSUB Drivemodule2
PAUSA 150-(ctr2*15)

SIGUIENTE

SIGUIENTE ' termina con todas las luces

' BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

' GGG GirlsGirlsGirls suplente subrutina GGGGGGGGGGGGGGGG
' parpadea entre cadenas adyacentes, superiores e inferiores alternando

' GirlsGirlsGirls:

PARA ctr2 = 0 para lpctr2
OUTL = % 01010101
GOSUB Drivemodule1
OUTL = % 10101010
GOSUB Drivemodule2
Delay1 de pausa

OUTL = % 10101010
GOSUB Drivemodule1
OUTL = % 01010101
GOSUB Drivemodule2
Delay1 de pausa

SIGUIENTE ' termina con luces en última posición

' GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

OUTL = % 00000000 ' apagar todas las luces
GOSUB Drivemodule12
Delay1 de pausa

' MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

' Subrutina de ChasePair III IIIIIIIIIIIIIIIIIIII
' Un par separado por 1 CCW rotación en blanco

' ChasePair:

PARA ctr2 = 0 para lpctr2

lowerlamps = % 10100000
shiftcount = 6
subpause = delay2-(ctr2*(delay1-100)/lpctr1)
GOSUB ShiftRightBoth ' use subrutina al patrón de cambio a la derecha

OUTL = % 10000010 ' hacer manualmente esta posición luz
GOSUB Drivemodule12 ' porque cambio rellena con ceros
PAUSA delay2-(ctr2*(delay1-100)/lpctr1)

lowerlamps = % 01000001
shiftcount = 1
GOSUB ShiftRightBoth

SIGUIENTE ' termina con luces en última posición

' IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

' Subrutina de FlashQtrs KKK KKKKKKKKKKKKKKKKKKKKK
' parpadea trimestres del árbol: rojo-verde y blanco-azul

' FlashQtrs:

PARA ctr2 = 0 para lpctr2

OUTL = % 00110011
GOSUB Drivemodule12
Delay2 pausa

OUTL = % 11001100
GOSUB Drivemodule12
Delay2 pausa

SIGUIENTE ' termina con luces en última posición

' KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

' Subrutina LLL GirlsGirlsGirls LLLLLLLLLLLLLLL
' parpadea entre cadenas adyacentes

' GirlsGirlsGirls:

PARA ctr2 = 0 para lpctr2
OUTL = % 01010101
GOSUB Drivemodule12
Delay1 de pausa

OUTL = % 10101010
GOSUB Drivemodule12
Delay1 de pausa

SIGUIENTE ' termina con luces en última posición

' LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

LOOP ' parte inferior del bucle principal

'---Subrutinas---

' La subrutina Drivemodule escribe el byte de datos que aparecen en los puertos 0-7
' al módulo de la dirección o direcciones de llaman hacia fuera en el nombre de la subrutina.
' Para el 74LS573 cierres esto significa conducir las líneas de control seleccionado
' de bajo a alto entonces conducir todas las líneas de control a la baja otra vez.
' Los bits de control será todo bajos al entrar y salir de esta rutina.
' Puerto 8 controla el módulo 1, módulo de control de puertos 9 2, etc, así que este estilo
' módulo de direccionamiento puede ampliarse a 64 cuerdas individuales de luz.
' control byte módulo 1 - % 00000001
' control byte módulo 2 - % 00000010
' control de bytes para los módulos 1 y 2 - % 00000011

' Módulo 1 controla las cadenas luz 8 superiores, módulo 2 los inferiores
' Tenga en cuenta que se pueden abordar varios módulos al mismo tiempo, aunque
' cada módulo recibirá los bits de control de la luz misma de puertos 0-7 de esa manera.

' Nota de futuro desarrollo - el actual estilo de programación utilizando diferentes
' subrutinas para cada combinación de módulos utiliza mucho menos espacio que
' define una variable de control y llamar a una rutina única, pero este estilo
' puede obtener cutre para 3 o más módulos y combinaciones de las mismas.

Drivemodule1:
OUTH = % 00000001
OUTH = % 00000000
VOLVER

Drivemodule2:
OUTH = % 00000010
OUTH = % 00000000
VOLVER

Drivemodule12:
OUTH = % 00000011
OUTH = % 00000000
VOLVER

' La toma de las subrutinas de ShftX8X en un byte de los valores de la lámpara, muestra entonces
' cambia de puesto, haciendo este veces < shiftcount >.
' Las primera cuatro subrutinas manija izquierda y derecha cambio de lámparas superiores e inferiores.
' Los dos últimos desplazamiento 8 bits superiores e inferiores, utilizando la variable lowerlamps.
' Pase en variables Subctr1, shiftcount, subpause y más bajo - o upperlamps;
' cambia el valor de OUTL e inferior o upperlamps.

' Nota: las dos - shiftlower-rutinas no han sido utilizadas aún
' Como con el módulo de conducción de rutina, aún ocupa menos memoria que
' rutinas individuales para las operaciones de cada cambio posible en lugar de utilizar
' más universal unas rutinas Whne allí es una variable de control diseñada
' para el módulo de conducción de rutina, entonces usando esa rutina eliminará
' la necesidad de duplicar cambiando las rutinas.

ShiftLeftUpper:
PARA subctr1 = 1 para shiftcount
OUTL = upperlamps
GOSUB Drivemodule1
Subpause de pausa
upperlamps = upperlamps << 1
SIGUIENTE
VOLVER

' ShiftLeftLower:
' Para subctr1 = 1 para shiftcount
' OUTL = lowerlamps
' GOSUB Drivemodule2
' Subpause de pausa
' lowerlamps = lowerlamps << 1
' SIGUIENTE
' VOLVER

ShiftRightUpper:
PARA subctr1 = 1 para shiftcount
OUTL = upperlamps
GOSUB Drivemodule1
Subpause de pausa
upperlamps = upperlamps >> 1
SIGUIENTE
VOLVER

' ShiftRightLower:
' Para subctr1 = 1 para shiftcount
' OUTL = lowerlamps
' GOSUB Drivemodule2
' Subpause de pausa
' lowerlamps = lowerlamps >> 1
' SIGUIENTE
' VOLVER

ShiftLeftBoth:
PARA subctr1 = 1 para shiftcount
OUTL = lowerlamps
GOSUB Drivemodule12
Subpause de pausa
lowerlamps = lowerlamps << 1
SIGUIENTE
VOLVER

ShiftRightBoth:
PARA subctr1 = 1 para shiftcount
OUTL = lowerlamps
GOSUB Drivemodule12
Subpause de pausa
lowerlamps = lowerlamps >> 1
SIGUIENTE
VOLVER

Artículos Relacionados

Controlador de puerto paralelo 3 ejes CNC, motores PAP unipolares, Opto-aislado

Controlador de puerto paralelo 3 ejes CNC, motores PAP unipolares, Opto-aislado

Controla a 3 motores paso a paso unipolares, para uso con máquinas CNC. Controlador simple con cierre automático de la bobina, para asegurar una operación eficiente.  Opto-aislada para la protección de los soportes de P.C. más paraleloPuerto basado s
Accesorio para mi rifle barato y fácil!

Accesorio para mi rifle barato y fácil!

Paso 1: cosas! Solo necesitas un bolígrafo fricción, conducto de cinta, mi "barato y fácil rifle! Y las balas del airsoft.Paso 2: Hacer los tontos! Solo sacar la goma de borrar y la tinta de la pluma, poner en las balas en la parte posterior de la pi
Reblocking un sombrero de fieltro de Vintage - barato y fácil

Reblocking un sombrero de fieltro de Vintage - barato y fácil

me encanta sombreros vintage - especialmente los de los 20s a 40s. Hace poco me interesé en hacer sombrero o sombreros. Y me fui a comprar algunos para hacer un sombrero de piel. Pero los comercios no venden y vende en línea para más de lo que estoy
Barato y fácil de hacer teclados Steampunk

Barato y fácil de hacer teclados Steampunk

después de mirar algunos de los teclados retros fancy en sitio de Datamancer y el buen tutorial sobre el Steampunk taller, quería hacer uno yo mismo. Por desgracia, carecen de las herramientas y el espacio y dinero para poner y cortar latón, y no soy
Biogas en casa barato y fácil

Biogas en casa barato y fácil

Hola, soy chitlange de Sahas, envejecimiento de 14, de la India. Aquí es mi casero, barato y fácil construir mini planta de biogás. Quemaduras por aprox. 20-30 minutos en un mechero de Bunsen. puede agregar cualquier cosa de la basura de la cocina (c
Arandela de Pvc barato y fácil mano perro

Arandela de Pvc barato y fácil mano perro

¡ Hola chicos! Gracias de tanto por hacerme corredor para arriba en el concurso de PVC! Probé varias formas hasta que encontré la manera más eficiente y barata para lavar a mi perro. Este pesa alrededor de 3,5 libras y es muy fácil de maniobrar. ¡ Es
Gel de baño barato y fácil de

Gel de baño barato y fácil de

Hola chicos!Hice este Gel de baño de primavera irlandesa para mi esposo esta semana y le encanta.Todo lo que necesitaba era un bar o ' Irish Spring, un rallador, un pan y agua. Además de un recipiente para poner el gel en después de él fue hecho de c
Cargador de velocidad baratos airsoft fácil

Cargador de velocidad baratos airsoft fácil

no chupan cuando su fijados abajo, carga tu arma un bb en un momento. bueno, con esto todo lo que tienes que hacer es la línea de la punta y puul hacia fuera del ring y tiene diapositiva de bb en.Este es mi primer instructible así despedir.Paso 1: ma
Airsoft barato y fácil arma 2.0

Airsoft barato y fácil arma 2.0

por lo que estaba trasteando con mi rifle barato y fácil y tuve una gran idea. Tiene un mango! Después he añadido la manija, fue mucho más fácil de "manejar": 3. Incluso no necesita hacer un nuevo arma para tener el mango!Paso 1: fuentes de Todo
Cómo hacer un probador de continuidad barato y fácil!

Cómo hacer un probador de continuidad barato y fácil!

Cada multímetro tiene un probador de continuidad. Pero qué haces cuando no tienes un polímetro o si está roto y que desea probar la continuidad de un circuito. Así es que Hazte un probador de continuidad. En este instructable aprenderá a hacerte un p
Barato y fácil intercomunicación

Barato y fácil intercomunicación

en este instructable, les enseñaré como hacer un intercomunicador barato y fácil, con dos (o más) walkie talkies.Paso 1: Se necesita dos o más walkie talkies establece en el mismo canal y algún tipo de caso para mantenerlo en (yo usé un par de modems
Que barato y fácil simular sangre!

Que barato y fácil simular sangre!

Te mostramos cómo hacer barato y fácil simular sangre! Con ingredientes que se pueden encontraron en todo el mundo!Lanzar una rápida receta para pasta de sangre y tienes una solución fácil de la película gore que hace!
Auricular FPV barato y fácil con tu Smartphone Android

Auricular FPV barato y fácil con tu Smartphone Android

Bienvenidos a mi primer Instructable.En este Instructable vamos a construir un auricular de FPV.El objetivo fue hacer un barato y fácil de construir FPV audífonos para menores de 20$ (teléfono no incluido) mediante el uso de su smartphone como pantal
Baratos y fácil herramienta de garaje suspensiones

Baratos y fácil herramienta de garaje suspensiones

he tenido montones de herramientas mango mentira por todas partes en mi garaje.  Vi una foto de esta idea, y era tan fácil que pensé que sería compartirlo aquí.Básicamente consiste en cortar 2 x 4 madera en tiras de 18" y atornillado a la estructura