Bon marché & facile opto-isolée TTL-pour-110V léger module de commande (32 / 32 étapes)

"{$STAMP BS2}
"{$PBASIC 2,5}

« Version du pilote pour l’arbre de lumière-chaîne 16 arbre Noël « Westinghouse ».
"Il s’agit d’un hommage à l’arbre original utilisé au centre Westinghouse R & D à Churchill, en Pennsylvanie.
' Exécute 2 modules de 8 contrôleurs de prise 110V, 1 pour 8 cordes aiguës, 1 pour 8 cordes
« Chaque module grâce aux loquets octal de 74-573 série TTL. Les données de l’octet inférieur de IO est
' écrit/tenue par des transitions de haut-niveau des basses sur les bits de contrôle de l’octet haut de IO.
« Module 1 (feux supérieure) enclenché par le contrôle du port 8 bit, module 2 (en bas) par port 9 bits.
« Les 2 modules utilisée ici sont extensibles jusqu'à 8 modules pour total de 64 prises programmables

"Cette version réduit l’utilisation de la mémoire en supprimant les variables aléatoires
« et aussi la conception structurée d’avoir une boucle principale qui appelle l’éclairage
« routines comme sous-routines. Maintenant toutes les routines sont dans la boucle principale elle-même.
« Oui, mal pour avoir moins structure mais sauve nombre d’octets. Plusieurs de la
« routines antérieures ont été également réécrites en fonction des boucles plus puisqu’ils reprennent
"beaucoup moins d’espace que juste marcher par le biais de listes de valeurs de la lampe. En s’appuyant
« plus sur boucles a l’inconvénient de contraindre les modèles un peu, mais
' rend la programmation plus complexe et intéressant.

« Télécharger programme - connecter le câble série de COM1 de Conseil sous tension
"Appuyez sur le bouton" jouer "sur la barre d’outils

"Pour tester les routines individuelles collez routine dans « xmaslites2-réduit-testfile.bs2 »
"N’oubliez pas de mettre à jour le fichier de test si définitions variables ou des sous-routines changent

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

"définir et affecter des variables
CTR1 VAR Nib ' contrer les indices pour les lignes de courants principaux
Ctr2 VAR Nib
CTR3 VAR Nib

subctr1 VAR Nib ' index de compteur pour les boucles de la sous-routine
subpause mot VAR ' variable pour passer le temps de pause de sous-routines
shiftcount VAR Nib ' compteur pour le nombre de déplacements

lpctr1 VAR Nib ' contrer les longueurs pour les boucles de courant principales
lpctr2 VAR Nib
delay1 VAR mot ' plus ou moins constantes des pauses dans les routines
delay2 VAR Word

lowerlamps VAR Byte ' détient lampe bits d’État pour 8 cordes
upperlamps VAR Byte ' détient lampe bits d’État pour les 8 cordes

holdvar1 VAR Byte ' temp douille de valeur
holdvar2 VAR Byte ' temp douille de valeur
Shiftee VAR Byte ' variable temp à riper les routines

OUTL = % 00000000 ' réglé toutes les lignes de données bas
OUTH = % 00000000 ' réglé toutes les lignes de commande en bas
DIRS = % 1111111111111111 ' réglé toutes les broches e/s sur le mode de sortie

« Définir des valeurs pour les constantes qui définissent les Global look et la vitesse de l’arbre
delay1 = 500 ' demi-seconde retard
delay2 = 800
lpctr1 = 3
lpctr2 = 6

' boucle principale - dans cette version de mémoire minimale, les routines de lampe ne sont pas appelés comme sous-routines
FAIRE

« MMM AllFlash MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

POUR ctr1 = 1 à 4
OUTL = % 11111111 ' toutes les lumières sur
GOSUB Drivemodule12
PAUSE delay2
OUTL = % 00000000 ' tous les feux éteints
GOSUB Drivemodule12
PAUSE delay2
PROCHAINE

« NNNNNNNNNNNNNNNNNNNNNNNN NNN séquence et remplissage
' Cette routine circule une chaîne allumée autour, en laissant derrière lui
"un autre allumé chaîne chaque fois jusqu'à ce que toutes les chaînes sont allumés.
' Commence par le cercle du bas de chaînes.

holdvar1 = % 00000000 ' cette variable s’accumule les cordes gauche allumé
"la fin de la MSB de l’ensemble - en commençant par la chaîne MSB
"puis continuer en ajoutant le MSB-1, MSB-2, etc.. Le
' Chaîne de MSB est chaîne -H - sur les étiquettes de guirlande lumineuse
CTR3 = 8 ' ce compteur est décrémenté comme le nombre de passes nécessaires
"pour pousser une chaîne éclairée sur les baisses de tas accumulés
« chacun additionnée de chaîne
POUR ctr1 = 1 à 8
Shiftee = % 00000001 "bit de contrôle de guirlande lumineuse commence à LSB
POUR ctr2 = 1 TO ctr3
lowerlamps = holdvar1 | Shiftee ' déjà allumé chaînes ORd avec la chaîne de déplacement
OUTL = lowerlamps ' résultat d’ou est envoyé au module de commande
GOSUB Drivemodule2
Delay1 PAUSE
Shiftee = shiftee << 1 ' passer la chaîne allumée à la 1 place gauche
PROCHAINE
holdvar1 = lowerlamps ' n’oubliez pas de postes de dernière chaîne allumées chaque boucle interne
' ajoute une chaîne plus éclairée sur la fin de la MSB
CTR3 = ctr3-1
PROCHAINE

holdvar1 = % 00000000 ' même routine comme ci-dessus, remplissant les cordes aiguës
CTR3 = 8 ' tandis que les cordes graves, tous restent allumés
POUR ctr1 = 1 à 8
Shiftee = % 00000001
POUR ctr2 = 1 TO ctr3
upperlamps = holdvar1 | Shiftee
OUTL = upperlamps
GOSUB Drivemodule1
Delay1 PAUSE
Shiftee = shiftee << 1
PROCHAINE
holdvar1 = upperlamps
CTR3 = ctr3-1
PROCHAIN ' toutes les lampes allumées

' NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

"QQQQ sur le haut de la page QQQQQQQQQQQQQQQQQQQQQQQQQQQ
« Semblable à séquencer et remplir, ci-dessus, sauf les lumières circulent sur le dessus
« de l’arbre sur des paires d’opposés chaînes (chaînes de même couleur), laissant derrière lui
"un autre allumé chaîne chaque fois jusqu'à ce que toutes les chaînes de la paire sont allumés.

holdvar1 = % 00000000 ' cette variable s’accumule les cordes graves gauche allumés
holdvar2 = % 00000000 ' cette variable s’accumule des cordes aiguës gauche allumés

« NOTE : cette routine n’est pas encore terminée

' QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ

"Lucas Drain autour de VVVVVVVVVVVVVVVVVVVV
« Allumer toutes les lampes avant de s’éteindre dans l’ordre haut/bot
"une fois autour de l’arbre jusqu'à ce que toutes les chaînes sont éteints
' Notez que OUTL conserve l’état actuel de l’arbre

OUTL = % 11111111 "Démarrer avec toutes les lumières sur
GOSUB Drivemodule12
PAUSE delay2

POUR ctr2 = 1 à 8
OUTL = OUTL >> 1 ' décalage vers la droite, déplacements des zéros
GOSUB Drivemodule1 ' éteindre la chaîne supérieure
PAUSE delay2
GOSUB Drivemodule2 ' éteindre la chaîne inférieur
PAUSE delay2
PROCHAINE

' VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

' WWWWWW haut bas Flash WWWWWWWWWWWWWWWWWWWW
« flash toutes les chaînes supérieures et inférieures en arrière

POUR ctr2 = 0 TO lpctr2
OUTL = % 11111111
GOSUB Drivemodule1 ' tous top chaînes sur
OUTL = % 00000000
GOSUB Drivemodule2 ' tout bas cordes hors
Delay1 PAUSE ' attendre
OUTL = % 11111111
GOSUB Drivemodule2 ' tout bas cordes sur
OUTL = % 00000000
GOSUB Drivemodule1 ' tout couronner les chaînes
Delay1 PAUSE ' attendre

PROCHAINE
GOSUB Drivemodule12 ' se termine avec toutes les lumières off

"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

« CCC SeqOnOff sous-routine CCCCCCCCCCCCCCCCCCCCCC
"Lumières de toutes les chaînes dans l’ordre, puis en route séquentiellement
« avec l’augmentation/diminution s’arrête
"top et bot contrôlée de l’ensemble

OUTL = % 00000000 ' commencer par déclenchant toutes les lumières
GOSUB Drivemodule12
PAUSE delay2

POUR ctr2 = 0 TO lpctr1

« lumières sur séquentiellement CW un haut/bot cordes à la fois
POUR ctr1 = 0 à 7
HAUTE ctr1
GOSUB Drivemodule12
PAUSE delay2-(ctr2*(delay1-100)/2)
PROCHAINE

« les lumières séquentiellement CW haut/bot cordes à la fois
POUR ctr1 = 0 à 7
Ctr1 faible
GOSUB Drivemodule12
PAUSE 100+(ctr2*(delay1-100)/2)
PROCHAINE

PROCHAIN "se termine avec toutes les lumières off

' CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

« JJJ Cylon JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
' front 5 cordes - bounce chaîne allumée en arrière rapide
« Albums uniquement des chaînes... pour l’instant
' Doit être débuté avec toutes les lumières

upperlamps = % 00000010
subpause = 200
shiftcount = 4

POUR ctr1 = 0 TO lpctr2

GOSUB ShiftLeftUpper
GOSUB ShiftRightUpper

PROCHAINE

OUTL = % 00000000 ' tous les feux éteints
GOSUB Drivemodule12

' JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ

' HHH SeqOnOff opposés sous-routine HHHHHHHHHHHHH
"Lumières de toutes les chaînes dans l’ordre, puis en route séquentiellement
« avec l’augmentation/diminution s’arrête
"top et bot dans des directions opposées

' Cette ROUTINE SeqOnOff pas écrit encore, toujours identique à ci-dessus

' Pour ctr2 = 0 TO lpctr1

« lumières sur chaîne séquentiellement un CW à la fois
' Pour ctr1 = 0 à 7
« HAUTE ctr1
« GOSUB Drivemodule12
"PAUSE delay2-(ctr2*(delay1-100)/2)
' PROCHAINE

"lights off successivement une chaîne de CW à la fois
' Pour ctr1 = 0 à 7
« FAIBLE ctr1
« GOSUB Drivemodule12
"PAUSE 100+(ctr2*(delay1-100)/2)
' PROCHAINE

' NEXT ' se termine avec toutes les lumières off

"HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

' AAA Circulate1 sous-routine mohamed
3 allumé chase cordes autour, augmentant la vitesse de chaque répétition
"circule 4 fois, répète lpctr2 aléatoire fois
"haut et bas sont en phase

' Circulate1 :

POUR ctr2 = 0 TO lpctr2

OUTL = % 00000001 "lumière 1,2,3 cordes haut & bot avant d’entrer dans la boucle de retour
GOSUB Drivemodule12
PAUSE 150-(ctr2*15)

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

lowerlamps = % 00000111 ' lowerlamps variable utilisée pour inférieur et supérieur ensemble
subpause = 150-(ctr2*15)
shiftcount = 9
GOSUB ShiftLeftBoth

PROCHAIN "se termine avec toutes les lumières off

' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

« PPP GirlsGirlsGirls remplaçant brillant sous-routine PPPPPPPPPP
"clignote entre des chaînes adjacentes, supérieure et inférieure en alternance
« Mousseux se produit lorsque la chaîne sur le temps est court, environ 100

' GirlsGirlsGirls :

POUR ctr2 = 0 à 16
OUTL = % 01010101
GOSUB Drivemodule1
OUTL = % 10101010
GOSUB Drivemodule2
PAUSE 100

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

PROCHAIN "se termine avec des lumières en dernière position

' PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP

"DDD RotatePairs sous-routine DDDDDDDDDDDDDDDDDDD
« rotation des paires de cordes en face de l’autre

' RotatePairs :
OUTL = % 00000000 ' effacer toutes les lumières sur off

POUR ctr2 = 0 TO lpctr2
POUR ctr1 = 0 à 3
HAUTE ctr1
Ctr1 haut + 4
GOSUB Drivemodule12
Delay1 PAUSE
Ctr1 faible
Ctr1 faible + 4
GOSUB Drivemodule12
PROCHAINE
PROCHAIN "se termine avec des lumières en dernière position

' DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

« EEE EEEEEEEEEEEEEEEEEEEEEEEEEEE CounterRotate
« contrarotatif paires
' CounterRotate :

POUR ctr2 = 0 TO lpctr1

OUTL = % 10000000
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 01000001
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 00100010
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 00010100
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 00001000
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 00010100
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 00100010
GOSUB Drivemodule12
Delay1 PAUSE
OUTL = % 01000001
GOSUB Drivemodule12
Delay1 PAUSE

PROCHAIN "se termine avec des lumières en dernière position

' EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

OUTL = % 00000000 ' tous les feux éteints
GOSUB Drivemodule12
Delay1 PAUSE

« FFF Star Sparkle sous-routine FFFFFFFFFFFFFFFFFFFFFFF
« motif d’étoile A-F-C-H-E-B-G-D, bas accuse haut de 1 cycle
« Étincelles en raison de la courte pause de temps de 100
' Ancienne version de la Star avait un retard qui a changé avec chaque boucle
"avec cette formule - delay1-(ctr2*(delay1-100)/lpctr1)
' Star :

POUR ctr2 = 0 TO 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

PROCHAIN "se termine avec la lumière off
PAUSE DE 1500

' FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

« BBB Circulate2 sous-routine BBBBBBBBBBBBBBBBBBBBBBBBB
3 allumé chase cordes autour, augmentant la vitesse de chaque répétition
"circule 4 fois, lpctr1 fois
"haut et bas sont déphasés de 90 degrés
« rappel - module1 est supérieurs lampes, module 2 est celles du bas
' Circulate2 :

POUR ctr2 = 0 TO lpctr1

OUTL = % 00000001 "lumière 2 cordes haut & bot avant d’entrer dans la boucle de retour
GOSUB Drivemodule1
PAUSE 150-(ctr2*15)

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

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

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

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

upperlamps = % 00011100
lowerlamps = % 00000111

POUR ctr1 = 1 à 8 ' Maj 3 allumé environ 1 tour complet des chaînes jusqu'à ce que tous hors

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

PROCHAINE

PROCHAIN "se termine avec toutes les lumières off

' BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

"GGG GirlsGirlsGirls remplaçant sous-routine Girouard
"clignote entre des chaînes adjacentes, supérieure et inférieure en alternance

' GirlsGirlsGirls :

POUR ctr2 = 0 TO lpctr2
OUTL = % 01010101
GOSUB Drivemodule1
OUTL = % 10101010
GOSUB Drivemodule2
Delay1 PAUSE

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

PROCHAIN "se termine avec des lumières en dernière position

' GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

OUTL = % 00000000 ' tous les feux éteints
GOSUB Drivemodule12
Delay1 PAUSE

' MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

« III ChasePair sous-routine Paula
"Une paire séparée par 1 CCW rotation blanc

' ChasePair :

POUR ctr2 = 0 TO lpctr2

lowerlamps = % 10100000
shiftcount = 6
subpause = delay2-(ctr2*(delay1-100)/lpctr1)
GOSUB ShiftRightBoth ' utiliser sous-routine pour MAJ le modèle à droite

OUTL = % 10000010 ' faire manuellement cette position light
GOSUB Drivemodule12 ' parce que la Maj se remplit avec des zéros
PAUSE delay2-(ctr2*(delay1-100)/lpctr1)

lowerlamps = % 01000001
shiftcount = 1
GOSUB ShiftRightBoth

PROCHAIN "se termine avec des lumières en dernière position

' IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

' FlashQtrs KKK sous-routine KKKKKKKKKKKKKKKKKKKKK
"clignote Qtrs d’arbre : rouge-vert et blanc-bleu

' FlashQtrs :

POUR ctr2 = 0 TO lpctr2

OUTL = % 00110011
GOSUB Drivemodule12
PAUSE delay2

OUTL = % 11001100
GOSUB Drivemodule12
PAUSE delay2

PROCHAIN "se termine avec des lumières en dernière position

' KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

' LLL GirlsGirlsGirls sous-routine giova
"clignote entre des chaînes adjacentes

' GirlsGirlsGirls :

POUR ctr2 = 0 TO lpctr2
OUTL = % 01010101
GOSUB Drivemodule12
Delay1 PAUSE

OUTL = % 10101010
GOSUB Drivemodule12
Delay1 PAUSE

PROCHAIN "se termine avec des lumières en dernière position

' LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL

BOUCLE « bas de la boucle principale

'---Sous-routines---

' La sous-routine Drivemodule écrit les octets de données figurant sur les ports 0-7
' au module ou adresses crié dans le nom de la sous-routine.
« Pour le 74LS573 s’enclenche cela signifie conduire les lignes de contrôle sélectionné
« de bas en haut, puis conduire toutes les lignes de commande à faible encore.
« Les bits de contrôle seront tout bas lorsque qui entrent et sortent de cette routine.
' Port 8 contrôle de module 1, port 9 commandes module 2, etc, donc ce style
' du module d’adressage peut être étendu à 64 chaînes légères individuelles.
' contrôle octet pour module 1 - % 00000001
' contrôle octet pour module 2 - % 00000010
"contrôler l’octet pour les modules 1 et 2 - % 00000011

« Module 1 contrôle les supérieurs 8 cordes légères, module 2 les inférieures
' Notez que plusieurs modules peuvent être adressées en même temps, bien que
« chaque module obtiendra les mêmes bits de commande d’éclairage de ports 0-7 comme ça.

' Avenir développement note - le style actuel de programmation à l’aide de distinct
« sous-routines pour chaque combinaison de modules utilise beaucoup moins d’espace
' définit une variable de contrôle et appelle une routine simple, mais ce style
' peut devenir encombrante pour 3 ou plus de modules et de leurs combinaisons.

Drivemodule1 :
OUTH = % 00000001
OUTH = % 00000000
RETOUR

Drivemodule2 :
OUTH = % 00000010
OUTH = % 00000000
RETOUR

Drivemodule12 :
OUTH = % 00000011
OUTH = % 00000000
RETOUR

' Affiche le prendre ShftX8X de sous-routines dans un octet des valeurs de la lampe, puis
« déplacements, faisant cette fois < shiftcount >.
"Les quatre premiers sous-routines gérer MAJ gauche et droite des feux supérieurs et inférieurs.
"Les deux derniers déplacement supérieurs et inférieurs de 8 bits, en utilisant la variable lowerlamps.
"Passer dans les variables Subctr1, shiftcount, subpause et bas - ou upperlamps ;
' change la valeur de OUTL et bas - ou upperlamps.

' Remarque : les deux - shiftlower-routines n’ont pas encore été utilisés
« Comme avec le module d’entraînement de routine, il prend encore moins de mémoire d’avoir
« les routines individuelles pour chaque opérations éventuel déplacement plutôt que d’utiliser
"un ensemble de routines Whne ther universel plus est une variable de contrôle conçue
' pour le module conduite de routine, puis en utilisant cette routine éliminera
"la nécessité d’une double déplacement des routines.

ShiftLeftUpper :
POUR subctr1 = 1 TO shiftcount
OUTL = upperlamps
GOSUB Drivemodule1
Subpause PAUSE
upperlamps = upperlamps << 1
PROCHAINE
RETOUR

' ShiftLeftLower :
« POUR subctr1 = 1 TO shiftcount
« OUTL = lowerlamps
« GOSUB Drivemodule2
' Subpause PAUSE
' lowerlamps = lowerlamps << 1
' PROCHAINE
' RETOUR

ShiftRightUpper :
POUR subctr1 = 1 TO shiftcount
OUTL = upperlamps
GOSUB Drivemodule1
Subpause PAUSE
upperlamps = upperlamps >> 1
PROCHAINE
RETOUR

' ShiftRightLower :
« POUR subctr1 = 1 TO shiftcount
« OUTL = lowerlamps
« GOSUB Drivemodule2
' Subpause PAUSE
' lowerlamps = lowerlamps >> 1
' PROCHAINE
' RETOUR

ShiftLeftBoth :
POUR subctr1 = 1 TO shiftcount
OUTL = lowerlamps
GOSUB Drivemodule12
Subpause PAUSE
lowerlamps = lowerlamps << 1
PROCHAINE
RETOUR

ShiftRightBoth :
POUR subctr1 = 1 TO shiftcount
OUTL = lowerlamps
GOSUB Drivemodule12
Subpause PAUSE
lowerlamps = lowerlamps >> 1
PROCHAINE
RETOUR

Articles Liés

Comment construire un four à Pizza au feu de bois temporaires brique avec bon marché, facile à trouver les matériaux

Comment construire un four à Pizza au feu de bois temporaires brique avec bon marché, facile à trouver les matériaux

si vous aimez les projets de bricolage (et projets de pizza), consultez mon site, mikesenese.com/DOIT et me suivre surCe four à pizza est à peu près aussi simple à construire sous forme de blocs empilables, mais crée un four bois très efficace avec u
Le meilleur chevalet - forte, bon marché & facile !

Le meilleur chevalet - forte, bon marché & facile !

Un des outils plus utiles que toute personne maker peut avoir est une pile décente de chevalets. Ils sont incroyablement utiles dans l'atelier pour n'importe quel nombre d'utilisations.Le chevalet de sciage meilleur est celui qui est forte, bon march
Robotique bon marché, facile pour le programmeur-Non

Robotique bon marché, facile pour le programmeur-Non

Hé robotique-programmeur-want aux abeilles ! Fatigué d'essayer divers « environnements » pour constater qu'il y a une courbe d'apprentissage abrupte entre vous et ces robot cool astuces vos amis geek faire ? Les kits commerciaux sont trop chers ? Alo
Mon bon marché, facile à faire, en carton casque Iron Man Classic que j’ai réalisé pour Halloween cette année pour moins de $3

Mon bon marché, facile à faire, en carton casque Iron Man Classic que j’ai réalisé pour Halloween cette année pour moins de $3

Voici mon bon marché et facile à faire en carton de casque de fer Man(TM) que j'ai faite pour moins de $3. J'ai utilisé le carton (carton-boîte), un peu de papier brillant, peinture acrylique or et un feutre. Les outils sont les ciseaux, les knives(p
Recette de Wrap oeuf savoureux bon marché & facile pour déjeuner rapide ou un dîner

Recette de Wrap oeuf savoureux bon marché & facile pour déjeuner rapide ou un dîner

Ce bon marché et facile, recette wrap délicieux oeufs est une excellente rapide et saine option déjeuner ou dîner en particulier pour la période estivale. C'est un enveloppement de végétarien remplissage riche en protéines que vous pouvez faire moins
Bon marché, facile, manière sécurisée fuite de l’eau les plantes tandis qu’en vacances

Bon marché, facile, manière sécurisée fuite de l’eau les plantes tandis qu’en vacances

mon mari et je voudrais faire des excursions à des endroits exotiques, mais nous aimons aussi l'explosion de la jungle-comme des plantes d'intérieur que nous avons dans notre appartement. Cette combinaison pose un problème, car il n'y a que tant de f
Boombox portable rapide, bon marché, facile et laid !

Boombox portable rapide, bon marché, facile et laid !

Bluetooth capable, alimenté par batterie système sonore qui prend moins d'une heure à construire !Soyez gentil, c'est mon premier instructable !Étape 1: Choisir votre autoradioOK, vous avez besoin de quelque chose à jouer vos morceaux. Mon idée était
Bon marché 120VCA sortie contrôleur addon pour tout projet.

Bon marché 120VCA sortie contrôleur addon pour tout projet.

C'est un projet de grand débutant ou un addon pour le prototypage rapide. J'utilise cet addon tout le temps pour rendre Internet des projets de choses, domotique, ect... Puis, quand j'aurai tout pour travailler et je décide de commencer à réduire sa
Bon marché, facile, Internet contrôlé Home Automation System

Bon marché, facile, Internet contrôlé Home Automation System

si vous avez des animaux de compagnie/enfants et devez les nourrir ou de leur donner la fessée par internet ce système peut être utile pour vous. C'est un moyen très facile et peu coûteux pour contrôler les moteurs, LEDs, etc. à la maison à partir de
Cadre de photo numérique bon marché ' facile n

Cadre de photo numérique bon marché ' facile n

j'ai fait fondamentalement ceci comme un cadeau d'anniversaire pour ma copine. Vous cherchez une idée cadeau génial ? Ça y est ! Coût total était moins de 100 $ et pourrait être nettement moins si vous êtes avertis.Je sais que je ne suis pas le premi
Plans de lit plate-forme bon marché, facile, peu de déchets

Plans de lit plate-forme bon marché, facile, peu de déchets

Construire un lit plateforme à bon compte, avec espace de rangement dessous, pour moins de 30 $, environ une heure et d'apprendre certaines compétences de base de menuiserie dans le processus. S'il vous plaît lire le « objectif » ci-dessous.Pour les
Bon marché & facile Custom-Fit Sub Box

Bon marché & facile Custom-Fit Sub Box

personnellement, j'aime quand une personnalisation de voiture ressemble comme si elle appartient dans la voiture - pas hors de place ou voyante. J'aime aussi (si possible) si une personnalisation ajoute plus de bénéfices tout autour du véhicule qu'en
Gaine de couteau bon marché, facile en cuir artisanale du cuir utilisé

Gaine de couteau bon marché, facile en cuir artisanale du cuir utilisé

je suis allé la randonnée en Alaska une couple d'années et, bien sûr, acheté le couteau de Bowie énorme obligatoire. J'ai acheté un 14" Winchester. Le couteau était une bonne affaire : acier bon marché, assez bien, belle stature. Malheureusement, il
Bon marché & facile visiocasques caméra

Bon marché & facile visiocasques caméra

Nous avons eu quelques problèmes où je vis avec les automobilistes qui conduisent trop étroitement aux cyclistes, alors j'ai décidé de vidéo mon vélo tous les jours au travail chaque jour.  Longue histoire courte, il était plus logique d'utiliser un