Amazing remover of rust.Recyclable… It’s a tool in the shop now!

老扒夜夜春宵第二部的

老扒夜夜春宵第二部的

Yes, that is a huge absorbent soft diaper used to contain everything.

x

Piston Type Tool Post & Tool Holder Sets For 12″ Lathe
Complete with 5 quick change tool holders
Turning and facing: 3/16″ – 1/2″ tool bit
Boring, turning and facing: 7/16″ shank
Heavy duty boring bar: 5/8″ shank
Knurling, turning and facing: 3/16″ – 1/2″ tool bit
Easy tool set up to speed production
Weight: 5.5kg.

https://www.busybeetools.com/products/tool-post-quick-change-for-12in-lathe.html

This is an idea about a byte efficient protocol that describes the contents of an audio channel.At first, you may laugh…

It uses UNICODE characters as a method to condense the language needed to describe something in the field.There are Emoji for so many generic audio terms.


An Emoji is 4 bytes to encode using UTF-8.

Click here for a full list of Unicode Icons and their associated Hex Values

Click here for a description on how emojis are interoperable and how they work (50 page read

老扒夜夜春宵第二部的 Emoji followed by a description repeat.n feeds n+1

No Emoji = end of sequence

Signal Path is in the order it is displayed

To describe a person at a microphone, their role and info about the microphone and how it’s connected to the system a series of Emojis followed by text can be concatenated

EXAMPLE CONCATINATION:
? PRODUCTION ID? PTP TIME STAMP?NAME?FUNCTION?INFORMATION?WARNING?MIC MODEL?PHANTOM POWER?CONNECTION N?CONNECTION N+1?SENSITIVITY

Using this concatenation you can build up descriptions of the source

EXAMPLE STRING:
? 20191115?1163594296.344003000?Axel?Lead Vocal?Blonde hair glasses?Loves to grip mic?SM 58?no?SNAKE 34?Channel 2?-60?preset EQ

?Security Guard ?Position near the gate?SM58 ?no ?SNAKE 34?Channel 2?-60

Example of wireless microphone

??Person 3?SHURE SM58? 565.325 ? 0:33?-10
?RX Person 3?565.325 ?SNAKE 34-2

Example of a guitar and the cabinet
?Terry?Rhythm Guitar Left ?Les Paul ? P80?Marshall 412?C414?yes ?-50 ?SNAKE 34?Channel 2

How to create a mix
A mix is made of a web of sources at a particular level
?Mix 1?? Axel? -10?? Person 2? -10?? Person 3? -10?? Person 4? -10?? Person 5? -10

Give that mix to someone
?Mix 1? -20?WB13-3?person 1
Headphones and on the person who receives the mix at a particular level

Use an EQ as a preset to insert
?preset EQ? 80 ? -2 ? 4.5k ? 1? -2 ? 13k ? -2

I did a quick test in Google sheets and it does parse the UNICODE as strings

AUDIO RELATED

DIRECTION

Looking to replace the 204 frame motor I watched my favorite teach on the subject

and that pointed me to the plate on the motor I have

Reading deeper into this, this is an OLD style of motor frame.204 Stopped being used in 1953… Of course, mine is a discontinued motor frame…

Looking more at this I see the 203 and the 204 frames are similar it’s the screw mounting width that is different.I think an adapter plate could work.The only dimension that matter is D and U. U is 3/4″ so the center of the motor must be 5″ from the bottom of the plate.Obviously P must be smaller or equal.Watch out for the boxes that stick off the side for the wiring to enter.

LOOKING AT A MODERN NEMA CHART:

A D of 5″ is no longer a standard. The closest D is 4.5″that leaves 1/2′ for an adapter plate.

All the newer motors have 7/8 shaft meaning the pully will also need to be changed. The 145T looks interesting… Some shopping:

https://www.emotorsdirect.ca/TECO-RF0024

There is hope.

There are also sexy stainless steel motors….

there are charts for the motor mount brackets:

Wood dust and metal tools are enemies. The only way to keep the metal tools hapy ks to isolate them. I needed a way tothem in their happy oiled up domain. I decided against cupboards and favoured Air tight drawers. There is a need for a gasket… but by design they should work without it when properly pushed back.

This is what i came up with.

Wide view of the Shop 2019
Woodworking section
The metal tools (normally fully covered)

For your enjoyment:

Digitally Controlled Analog Surround Sound Panning

 

Presentation:

 

Circuit Explination:

 

Presentation documents:

0 – TPJ – Technical Presentation

0 – TPJ556-FINAL report DCASSP-COMPLETE

0 – TPJ556-FINAL report DCASSP-SCHEMATICS V1

 

 

Project Source Code:

 


#include <Adafruit_NeoPixel.h>
#include <Wire.h>

//Anthony P. Kuzub

// Neopixels ATTACHED TO THESE PINS
#define FNT_NEO_PIXEL_PIN 48

//Number of Neopixels ATTACHED TO THESE PINS
#define N_PIXELS 5

//neopixel Index nick names. 0 is the bottom NEOPIXEL in the line
#define FNT_NEO_PIXEL_SEL 4
#define FNT_NEO_PIXEL_SUN 3
#define FNT_NEO_PIXEL_SKY 2
#define FNT_NEO_PIXEL_GRASS 1
#define FNT_NEO_PIXEL_EARTH 0

//LED Lights ATTACHED TO THESE PINS
#define FDR_LED_KEY_CHON_PIN 25
#define FDR_LED_KEY_ONLY_PIN 22
#define FDR_LED_KEY_SEL_PIN 23
#define FNT_LED_KEY_EARTH_PIN 39
#define FNT_LED_KEY_GRASS_PIN 41
#define FNT_LED_KEY_SEL_PIN 50
#define FNT_LED_KEY_SKY_PIN 49
#define FNT_LED_KEY_SUN_PIN 51

//Potentionmeters ATTACHED TO THESE PINS
#define FNT_POT_SUN_PIN A0
#define FNT_POT_SKY_PIN A1
#define FNT_POT_GRASS_PIN A6
#define FNT_POT_EARTH_PIN A12
#define FDR_POT_POSITION_PIN A14
#define FDR_POT_SLIDE_PIN A15

// KEYS ATTACHED TO THESE PINS
#define FDR_KEY_CHON_PIN 27
#define FDR_KEY_ONLY_PIN 31
#define FDR_KEY_SEL_PIN 29
#define FNT_KEY_EARTH_PIN 37
#define FNT_KEY_GRASS_PIN 35
#define FNT_KEY_SEL_PIN 52
#define FNT_KEY_SKY_PIN 47
#define FNT_KEY_SUN_PIN 45

//POT VALUES
int FNT_POT_EARTH_STATE;
int FNT_POT_GRASS_STATE;
int FNT_POT_SKY_STATE;
int FNT_POT_SUN_STATE;
int FDR_POT_POSITION_STATE;
int FDR_POT_SLIDE_STATE;

int FDR_POT_POSITION_CHANGE;
int FDR_POT_SLIDE_CHANGE;

//POT SCALERS
byte FNT_POT_EARTH_SCALE;
byte FNT_POT_GRASS_SCALE;
byte FNT_POT_SKY_SCALE;
byte FNT_POT_SUN_SCALE;
byte FDR_POT_POSITION_SCALE;
byte FDR_POT_SLIDE_SCALE;

//FADER LED PANEL
int FDR_LED_KEY_CHON_STATE = 1;
int FDR_LED_KEY_ONLY_STATE = 1 ;
int FDR_LED_KEY_SEL_STATE = 1;

// FADER KEY
int FDR_KEY_CHON_STATE;
int FDR_KEY_ONLY_STATE;
int FDR_KEY_SEL_STATE;

// FADER KEY
int FDR_KEY_CHON_LAST_STATE;
int FDR_KEY_ONLY_LAST_STATE;
int FDR_KEY_SEL_LAST_STATE;

// FRONT LED
int FNT_LED_KEY_EARTH_STATE = 1 ;
int FNT_LED_KEY_GRASS_STATE = 1;
int FNT_LED_KEY_SEL_STATE = 1;
int FNT_LED_KEY_SKY_STATE = 1;
int FNT_LED_KEY_SUN_STATE = 1;

//FRONT KEYS
int FNT_KEY_EARTH_STATE ;
int FNT_KEY_GRASS_STATE ;
int FNT_KEY_SEL_STATE ;
int FNT_KEY_SKY_STATE ;
int FNT_KEY_SUN_STATE ;

//FRONT KEYS
int FNT_KEY_EARTH_LAST_STATE ;
int FNT_KEY_GRASS_LAST_STATE ;
int FNT_KEY_SEL_LAST_STATE ;
int FNT_KEY_SKY_LAST_STATE ;
int FNT_KEY_SUN_LAST_STATE ;

//Digital POTS
byte attenuation = 32; // Attenuation value of volume potentiometer gangs. Initially set to minimum volume.
byte tempattenuation = 0; // Holds attenuation value for second pot bitwise operation
byte PotScaler = 63;

Adafruit_NeoPixel FNT_NEO_PIXEL = Adafruit_NeoPixel(N_PIXELS, FNT_NEO_PIXEL_PIN, NEO_GRB + NEO_KHZ800);

//Debounce times
long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 2; // the debounce time; increase if the output flickers
int buttonState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin

int StateMachinePodSelect = 1;
int StateMachinePodInput=0;

byte readingSUN, readingSKY, readingGRASS, readingEARTH;

/*The five pointNone array takes an index value from 0 to 1023 and performs a look up from
math pre-solved. By Looking up the pre-solved math the microcontrollers performes minimal calculations
This array stores the behavior of the Positioning. By indexing [A] is the position
Indexing [b] is the value at the channel
*/
byte fivepoint[1024][5] = {
{64, 0, 0, 0, 0},
{63, 0, 0, 0, 0},
{63, 0, 0, 0, 0},
{63, 1, 0, 0, 0},
{63, 1, 0, 0, 0},
{63, 2, 0, 0, 0},
{63, 2, 0, 0, 0},
{63, 3, 0, 0, 0},
{63, 3, 0, 0, 0},
{63, 4, 0, 0, 0},
{63, 4, 0, 0, 0},
{63, 5, 0, 0, 0},
{63, 5, 0, 0, 0},
{63, 6, 0, 0, 0},
{63, 6, 0, 0, 0},
{63, 7, 0, 0, 0},
{63, 7, 0, 0, 0},
{63, 8, 0, 0, 0},
{63, 8, 0, 0, 0},
{63, 9, 0, 0, 0},
{63, 9, 0, 0, 0},
{63, 10, 0, 0, 0},
{63, 10, 0, 0, 0},
{63, 10, 0, 0, 0},
{63, 11, 0, 0, 0},
{63, 11, 0, 0, 0},
{63, 12, 0, 0, 0},
{63, 12, 0, 0, 0},
{63, 13, 0, 0, 0},
{63, 13, 0, 0, 0},
{63, 14, 0, 0, 0},
{63, 14, 0, 0, 0},
{63, 15, 0, 0, 0},
{62, 15, 0, 0, 0},
{62, 15, 0, 0, 0},
{62, 16, 0, 0, 0},
{62, 16, 0, 0, 0},
{62, 17, 0, 0, 0},
{62, 17, 0, 0, 0},
{62, 18, 0, 0, 0},
{62, 18, 0, 0, 0},
{62, 18, 0, 0, 0},
{62, 19, 0, 0, 0},
{62, 19, 0, 0, 0},
{62, 20, 0, 0, 0},
{62, 20, 0, 0, 0},
{61, 20, 0, 0, 0},
{61, 21, 0, 0, 0},
{61, 21, 0, 0, 0},
{61, 22, 0, 0, 0},
{61, 22, 0, 0, 0},
{61, 22, 0, 0, 0},
{61, 23, 0, 0, 0},
{61, 23, 0, 0, 0},
{61, 24, 0, 0, 0},
{61, 24, 0, 0, 0},
{60, 24, 0, 0, 0},
{60, 25, 0, 0, 0},
{60, 25, 0, 0, 0},
{60, 26, 0, 0, 0},
{60, 26, 0, 0, 0},
{60, 26, 0, 0, 0},
{60, 27, 0, 0, 0},
{60, 27, 0, 0, 0},
{60, 28, 0, 0, 0},
{59, 28, 0, 0, 0},
{59, 28, 0, 0, 0},
{59, 29, 0, 0, 0},
{59, 29, 0, 0, 0},
{59, 29, 0, 0, 0},
{59, 30, 0, 0, 0},
{59, 30, 0, 0, 0},
{58, 30, 0, 0, 0},
{58, 31, 0, 0, 0},
{58, 31, 0, 0, 0},
{58, 32, 0, 0, 0},
{58, 32, 0, 0, 0},
{58, 32, 0, 0, 0},
{58, 33, 0, 0, 0},
{57, 33, 0, 0, 0},
{57, 33, 0, 0, 0},
{57, 34, 0, 0, 0},
{57, 34, 0, 0, 0},
{57, 34, 0, 0, 0},
{57, 35, 0, 0, 0},
{56, 35, 0, 0, 0},
{56, 35, 0, 0, 0},
{56, 36, 0, 0, 0},
{56, 36, 0, 0, 0},
{56, 36, 0, 0, 0},
{56, 37, 0, 0, 0},
{55, 37, 0, 0, 0},
{55, 37, 0, 0, 0},
{55, 38, 0, 0, 0},
{55, 38, 0, 0, 0},
{55, 38, 0, 0, 0},
{55, 39, 0, 0, 0},
{54, 39, 0, 0, 0},
{54, 39, 0, 0, 0},
{54, 39, 0, 0, 0},
{54, 40, 0, 0, 0},
{54, 40, 0, 0, 0},
{53, 40, 0, 0, 0},
{53, 41, 0, 0, 0},
{53, 41, 0, 0, 0},
{53, 41, 0, 0, 0},
{53, 42, 0, 0, 0},
{52, 42, 0, 0, 0},
{52, 42, 0, 0, 0},
{52, 42, 0, 0, 0},
{52, 43, 0, 0, 0},
{51, 43, 0, 0, 0},
{51, 43, 0, 0, 0},
{51, 44, 0, 0, 0},
{51, 44, 0, 0, 0},
{51, 44, 0, 0, 0},
{50, 44, 0, 0, 0},
{50, 45, 0, 0, 0},
{50, 45, 0, 0, 0},
{50, 45, 0, 0, 0},
{49, 45, 0, 0, 0},
{49, 46, 0, 0, 0},
{49, 46, 0, 0, 0},
{49, 46, 0, 0, 0},
{48, 46, 0, 0, 0},
{48, 47, 0, 0, 0},
{48, 47, 0, 0, 0},
{48, 47, 0, 0, 0},
{48, 48, 0, 0, 0},
{47, 48, 0, 0, 0},
{47, 48, 0, 0, 0},
{47, 48, 0, 0, 0},
{46, 48, 0, 0, 0},
{46, 49, 0, 0, 0},
{46, 49, 0, 0, 0},
{46, 49, 0, 0, 0},
{45, 49, 0, 0, 0},
{45, 50, 0, 0, 0},
{45, 50, 0, 0, 0},
{45, 50, 0, 0, 0},
{44, 50, 0, 0, 0},
{44, 51, 0, 0, 0},
{44, 51, 0, 0, 0},
{44, 51, 0, 0, 0},
{43, 51, 0, 0, 0},
{43, 51, 0, 0, 0},
{43, 52, 0, 0, 0},
{42, 52, 0, 0, 0},
{42, 52, 0, 0, 0},
{42, 52, 0, 0, 0},
{42, 53, 0, 0, 0},
{41, 53, 0, 0, 0},
{41, 53, 0, 0, 0},
{41, 53, 0, 0, 0},
{40, 53, 0, 0, 0},
{40, 54, 0, 0, 0},
{40, 54, 0, 0, 0},
{39, 54, 0, 0, 0},
{39, 54, 0, 0, 0},
{39, 54, 0, 0, 0},
{39, 55, 0, 0, 0},
{38, 55, 0, 0, 0},
{38, 55, 0, 0, 0},
{38, 55, 0, 0, 0},
{37, 55, 0, 0, 0},
{37, 55, 0, 0, 0},
{37, 56, 0, 0, 0},
{36, 56, 0, 0, 0},
{36, 56, 0, 0, 0},
{36, 56, 0, 0, 0},
{35, 56, 0, 0, 0},
{35, 56, 0, 0, 0},
{35, 57, 0, 0, 0},
{34, 57, 0, 0, 0},
{34, 57, 0, 0, 0},
{34, 57, 0, 0, 0},
{33, 57, 0, 0, 0},
{33, 57, 0, 0, 0},
{33, 58, 0, 0, 0},
{32, 58, 0, 0, 0},
{32, 58, 0, 0, 0},
{32, 58, 0, 0, 0},
{31, 58, 0, 0, 0},
{31, 58, 0, 0, 0},
{30, 58, 0, 0, 0},
{30, 59, 0, 0, 0},
{30, 59, 0, 0, 0},
{29, 59, 0, 0, 0},
{29, 59, 0, 0, 0},
{29, 59, 0, 0, 0},
{28, 59, 0, 0, 0},
{28, 59, 0, 0, 0},
{28, 60, 0, 0, 0},
{27, 60, 0, 0, 0},
{27, 60, 0, 0, 0},
{26, 60, 0, 0, 0},
{26, 60, 0, 0, 0},
{26, 60, 0, 0, 0},
{25, 60, 0, 0, 0},
{25, 60, 0, 0, 0},
{24, 60, 0, 0, 0},
{24, 61, 0, 0, 0},
{24, 61, 0, 0, 0},
{23, 61, 0, 0, 0},
{23, 61, 0, 0, 0},
{22, 61, 0, 0, 0},
{22, 61, 0, 0, 0},
{22, 61, 0, 0, 0},
{21, 61, 0, 0, 0},
{21, 61, 0, 0, 0},
{20, 61, 0, 0, 0},
{20, 62, 0, 0, 0},
{20, 62, 0, 0, 0},
{19, 62, 0, 0, 0},
{19, 62, 0, 0, 0},
{18, 62, 0, 0, 0},
{18, 62, 0, 0, 0},
{18, 62, 0, 0, 0},
{17, 62, 0, 0, 0},
{17, 62, 0, 0, 0},
{16, 62, 0, 0, 0},
{16, 62, 0, 0, 0},
{15, 62, 0, 0, 0},
{15, 62, 0, 0, 0},
{15, 63, 0, 0, 0},
{14, 63, 0, 0, 0},
{14, 63, 0, 0, 0},
{13, 63, 0, 0, 0},
{13, 63, 0, 0, 0},
{12, 63, 0, 0, 0},
{12, 63, 0, 0, 0},
{11, 63, 0, 0, 0},
{11, 63, 0, 0, 0},
{10, 63, 0, 0, 0},
{10, 63, 0, 0, 0},
{10, 63, 0, 0, 0},
{9, 63, 0, 0, 0},
{9, 63, 0, 0, 0},
{8, 63, 0, 0, 0},
{8, 63, 0, 0, 0},
{7, 63, 0, 0, 0},
{7, 63, 0, 0, 0},
{6, 63, 0, 0, 0},
{6, 63, 0, 0, 0},
{5, 63, 0, 0, 0},
{5, 63, 0, 0, 0},
{4, 63, 0, 0, 0},
{4, 63, 0, 0, 0},
{3, 63, 0, 0, 0},
{3, 63, 0, 0, 0},
{2, 63, 0, 0, 0},
{2, 63, 0, 0, 0},
{1, 63, 0, 0, 0},
{1, 63, 0, 0, 0},
{0, 63, 0, 0, 0},
{0, 63, 0, 0, 0},
{0, 64, 0, 0, 0},
{0, 63, 0, 0, 0},
{0, 63, 0, 0, 0},
{0, 63, 1, 0, 0},
{0, 63, 1, 0, 0},
{0, 63, 2, 0, 0},
{0, 63, 2, 0, 0},
{0, 63, 3, 0, 0},
{0, 63, 3, 0, 0},
{0, 63, 4, 0, 0},
{0, 63, 4, 0, 0},
{0, 63, 5, 0, 0},
{0, 63, 5, 0, 0},
{0, 63, 6, 0, 0},
{0, 63, 6, 0, 0},
{0, 63, 7, 0, 0},
{0, 63, 7, 0, 0},
{0, 63, 8, 0, 0},
{0, 63, 8, 0, 0},
{0, 63, 9, 0, 0},
{0, 63, 9, 0, 0},
{0, 63, 10, 0, 0},
{0, 63, 10, 0, 0},
{0, 63, 10, 0, 0},
{0, 63, 11, 0, 0},
{0, 63, 11, 0, 0},
{0, 63, 12, 0, 0},
{0, 63, 12, 0, 0},
{0, 63, 13, 0, 0},
{0, 63, 13, 0, 0},
{0, 63, 14, 0, 0},
{0, 63, 14, 0, 0},
{0, 63, 15, 0, 0},
{0, 62, 15, 0, 0},
{0, 62, 15, 0, 0},
{0, 62, 16, 0, 0},
{0, 62, 16, 0, 0},
{0, 62, 17, 0, 0},
{0, 62, 17, 0, 0},
{0, 62, 18, 0, 0},
{0, 62, 18, 0, 0},
{0, 62, 18, 0, 0},
{0, 62, 19, 0, 0},
{0, 62, 19, 0, 0},
{0, 62, 20, 0, 0},
{0, 62, 20, 0, 0},
{0, 61, 20, 0, 0},
{0, 61, 21, 0, 0},
{0, 61, 21, 0, 0},
{0, 61, 22, 0, 0},
{0, 61, 22, 0, 0},
{0, 61, 22, 0, 0},
{0, 61, 23, 0, 0},
{0, 61, 23, 0, 0},
{0, 61, 24, 0, 0},
{0, 61, 24, 0, 0},
{0, 60, 24, 0, 0},
{0, 60, 25, 0, 0},
{0, 60, 25, 0, 0},
{0, 60, 26, 0, 0},
{0, 60, 26, 0, 0},
{0, 60, 26, 0, 0},
{0, 60, 27, 0, 0},
{0, 60, 27, 0, 0},
{0, 60, 28, 0, 0},
{0, 59, 28, 0, 0},
{0, 59, 28, 0, 0},
{0, 59, 29, 0, 0},
{0, 59, 29, 0, 0},
{0, 59, 29, 0, 0},
{0, 59, 30, 0, 0},
{0, 59, 30, 0, 0},
{0, 58, 30, 0, 0},
{0, 58, 31, 0, 0},
{0, 58, 31, 0, 0},
{0, 58, 32, 0, 0},
{0, 58, 32, 0, 0},
{0, 58, 32, 0, 0},
{0, 58, 33, 0, 0},
{0, 57, 33, 0, 0},
{0, 57, 33, 0, 0},
{0, 57, 34, 0, 0},
{0, 57, 34, 0, 0},
{0, 57, 34, 0, 0},
{0, 57, 35, 0, 0},
{0, 56, 35, 0, 0},
{0, 56, 35, 0, 0},
{0, 56, 36, 0, 0},
{0, 56, 36, 0, 0},
{0, 56, 36, 0, 0},
{0, 56, 37, 0, 0},
{0, 55, 37, 0, 0},
{0, 55, 37, 0, 0},
{0, 55, 38, 0, 0},
{0, 55, 38, 0, 0},
{0, 55, 38, 0, 0},
{0, 55, 39, 0, 0},
{0, 54, 39, 0, 0},
{0, 54, 39, 0, 0},
{0, 54, 39, 0, 0},
{0, 54, 40, 0, 0},
{0, 54, 40, 0, 0},
{0, 53, 40, 0, 0},
{0, 53, 41, 0, 0},
{0, 53, 41, 0, 0},
{0, 53, 41, 0, 0},
{0, 53, 42, 0, 0},
{0, 52, 42, 0, 0},
{0, 52, 42, 0, 0},
{0, 52, 42, 0, 0},
{0, 52, 43, 0, 0},
{0, 51, 43, 0, 0},
{0, 51, 43, 0, 0},
{0, 51, 44, 0, 0},
{0, 51, 44, 0, 0},
{0, 51, 44, 0, 0},
{0, 50, 44, 0, 0},
{0, 50, 45, 0, 0},
{0, 50, 45, 0, 0},
{0, 50, 45, 0, 0},
{0, 49, 45, 0, 0},
{0, 49, 46, 0, 0},
{0, 49, 46, 0, 0},
{0, 49, 46, 0, 0},
{0, 48, 46, 0, 0},
{0, 48, 47, 0, 0},
{0, 48, 47, 0, 0},
{0, 48, 47, 0, 0},
{0, 48, 48, 0, 0},
{0, 47, 48, 0, 0},
{0, 47, 48, 0, 0},
{0, 47, 48, 0, 0},
{0, 46, 48, 0, 0},
{0, 46, 49, 0, 0},
{0, 46, 49, 0, 0},
{0, 46, 49, 0, 0},
{0, 45, 49, 0, 0},
{0, 45, 50, 0, 0},
{0, 45, 50, 0, 0},
{0, 45, 50, 0, 0},
{0, 44, 50, 0, 0},
{0, 44, 51, 0, 0},
{0, 44, 51, 0, 0},
{0, 44, 51, 0, 0},
{0, 43, 51, 0, 0},
{0, 43, 51, 0, 0},
{0, 43, 52, 0, 0},
{0, 42, 52, 0, 0},
{0, 42, 52, 0, 0},
{0, 42, 52, 0, 0},
{0, 42, 53, 0, 0},
{0, 41, 53, 0, 0},
{0, 41, 53, 0, 0},
{0, 41, 53, 0, 0},
{0, 40, 53, 0, 0},
{0, 40, 54, 0, 0},
{0, 40, 54, 0, 0},
{0, 39, 54, 0, 0},
{0, 39, 54, 0, 0},
{0, 39, 54, 0, 0},
{0, 39, 55, 0, 0},
{0, 38, 55, 0, 0},
{0, 38, 55, 0, 0},
{0, 38, 55, 0, 0},
{0, 37, 55, 0, 0},
{0, 37, 55, 0, 0},
{0, 37, 56, 0, 0},
{0, 36, 56, 0, 0},
{0, 36, 56, 0, 0},
{0, 36, 56, 0, 0},
{0, 35, 56, 0, 0},
{0, 35, 56, 0, 0},
{0, 35, 57, 0, 0},
{0, 34, 57, 0, 0},
{0, 34, 57, 0, 0},
{0, 34, 57, 0, 0},
{0, 33, 57, 0, 0},
{0, 33, 57, 0, 0},
{0, 33, 58, 0, 0},
{0, 32, 58, 0, 0},
{0, 32, 58, 0, 0},
{0, 32, 58, 0, 0},
{0, 31, 58, 0, 0},
{0, 31, 58, 0, 0},
{0, 30, 58, 0, 0},
{0, 30, 59, 0, 0},
{0, 30, 59, 0, 0},
{0, 29, 59, 0, 0},
{0, 29, 59, 0, 0},
{0, 29, 59, 0, 0},
{0, 28, 59, 0, 0},
{0, 28, 59, 0, 0},
{0, 28, 60, 0, 0},
{0, 27, 60, 0, 0},
{0, 27, 60, 0, 0},
{0, 26, 60, 0, 0},
{0, 26, 60, 0, 0},
{0, 26, 60, 0, 0},
{0, 25, 60, 0, 0},
{0, 25, 60, 0, 0},
{0, 24, 60, 0, 0},
{0, 24, 61, 0, 0},
{0, 24, 61, 0, 0},
{0, 23, 61, 0, 0},
{0, 23, 61, 0, 0},
{0, 22, 61, 0, 0},
{0, 22, 61, 0, 0},
{0, 22, 61, 0, 0},
{0, 21, 61, 0, 0},
{0, 21, 61, 0, 0},
{0, 20, 61, 0, 0},
{0, 20, 62, 0, 0},
{0, 20, 62, 0, 0},
{0, 19, 62, 0, 0},
{0, 19, 62, 0, 0},
{0, 18, 62, 0, 0},
{0, 18, 62, 0, 0},
{0, 18, 62, 0, 0},
{0, 17, 62, 0, 0},
{0, 17, 62, 0, 0},
{0, 16, 62, 0, 0},
{0, 16, 62, 0, 0},
{0, 15, 62, 0, 0},
{0, 15, 62, 0, 0},
{0, 15, 63, 0, 0},
{0, 14, 63, 0, 0},
{0, 14, 63, 0, 0},
{0, 13, 63, 0, 0},
{0, 13, 63, 0, 0},
{0, 12, 63, 0, 0},
{0, 12, 63, 0, 0},
{0, 11, 63, 0, 0},
{0, 11, 63, 0, 0},
{0, 10, 63, 0, 0},
{0, 10, 63, 0, 0},
{0, 10, 63, 0, 0},
{0, 9, 63, 0, 0},
{0, 9, 63, 0, 0},
{0, 8, 63, 0, 0},
{0, 8, 63, 0, 0},
{0, 7, 63, 0, 0},
{0, 7, 63, 0, 0},
{0, 6, 63, 0, 0},
{0, 6, 63, 0, 0},
{0, 5, 63, 0, 0},
{0, 5, 63, 0, 0},
{0, 4, 63, 0, 0},
{0, 4, 63, 0, 0},
{0, 3, 63, 0, 0},
{0, 3, 63, 0, 0},
{0, 2, 63, 0, 0},
{0, 2, 63, 0, 0},
{0, 1, 63, 0, 0},
{0, 1, 63, 0, 0},
{0, 0, 63, 0, 0},
{0, 0, 63, 0, 0},
{0, 0, 64, 0, 0},
{0, 0, 63, 0, 0},
{0, 0, 63, 0, 0},
{0, 0, 63, 1, 0},
{0, 0, 63, 1, 0},
{0, 0, 63, 2, 0},
{0, 0, 63, 2, 0},
{0, 0, 63, 3, 0},
{0, 0, 63, 3, 0},
{0, 0, 63, 4, 0},
{0, 0, 63, 4, 0},
{0, 0, 63, 5, 0},
{0, 0, 63, 5, 0},
{0, 0, 63, 6, 0},
{0, 0, 63, 6, 0},
{0, 0, 63, 7, 0},
{0, 0, 63, 7, 0},
{0, 0, 63, 8, 0},
{0, 0, 63, 8, 0},
{0, 0, 63, 9, 0},
{0, 0, 63, 9, 0},
{0, 0, 63, 10, 0},
{0, 0, 63, 10, 0},
{0, 0, 63, 10, 0},
{0, 0, 63, 11, 0},
{0, 0, 63, 11, 0},
{0, 0, 63, 12, 0},
{0, 0, 63, 12, 0},
{0, 0, 63, 13, 0},
{0, 0, 63, 13, 0},
{0, 0, 63, 14, 0},
{0, 0, 63, 14, 0},
{0, 0, 63, 15, 0},
{0, 0, 62, 15, 0},
{0, 0, 62, 15, 0},
{0, 0, 62, 16, 0},
{0, 0, 62, 16, 0},
{0, 0, 62, 17, 0},
{0, 0, 62, 17, 0},
{0, 0, 62, 18, 0},
{0, 0, 62, 18, 0},
{0, 0, 62, 18, 0},
{0, 0, 62, 19, 0},
{0, 0, 62, 19, 0},
{0, 0, 62, 20, 0},
{0, 0, 62, 20, 0},
{0, 0, 61, 20, 0},
{0, 0, 61, 21, 0},
{0, 0, 61, 21, 0},
{0, 0, 61, 22, 0},
{0, 0, 61, 22, 0},
{0, 0, 61, 22, 0},
{0, 0, 61, 23, 0},
{0, 0, 61, 23, 0},
{0, 0, 61, 24, 0},
{0, 0, 61, 24, 0},
{0, 0, 60, 24, 0},
{0, 0, 60, 25, 0},
{0, 0, 60, 25, 0},
{0, 0, 60, 26, 0},
{0, 0, 60, 26, 0},
{0, 0, 60, 26, 0},
{0, 0, 60, 27, 0},
{0, 0, 60, 27, 0},
{0, 0, 60, 28, 0},
{0, 0, 59, 28, 0},
{0, 0, 59, 28, 0},
{0, 0, 59, 29, 0},
{0, 0, 59, 29, 0},
{0, 0, 59, 29, 0},
{0, 0, 59, 30, 0},
{0, 0, 59, 30, 0},
{0, 0, 58, 30, 0},
{0, 0, 58, 31, 0},
{0, 0, 58, 31, 0},
{0, 0, 58, 32, 0},
{0, 0, 58, 32, 0},
{0, 0, 58, 32, 0},
{0, 0, 58, 33, 0},
{0, 0, 57, 33, 0},
{0, 0, 57, 33, 0},
{0, 0, 57, 34, 0},
{0, 0, 57, 34, 0},
{0, 0, 57, 34, 0},
{0, 0, 57, 35, 0},
{0, 0, 56, 35, 0},
{0, 0, 56, 35, 0},
{0, 0, 56, 36, 0},
{0, 0, 56, 36, 0},
{0, 0, 56, 36, 0},
{0, 0, 56, 37, 0},
{0, 0, 55, 37, 0},
{0, 0, 55, 37, 0},
{0, 0, 55, 38, 0},
{0, 0, 55, 38, 0},
{0, 0, 55, 38, 0},
{0, 0, 55, 39, 0},
{0, 0, 54, 39, 0},
{0, 0, 54, 39, 0},
{0, 0, 54, 39, 0},
{0, 0, 54, 40, 0},
{0, 0, 54, 40, 0},
{0, 0, 53, 40, 0},
{0, 0, 53, 41, 0},
{0, 0, 53, 41, 0},
{0, 0, 53, 41, 0},
{0, 0, 53, 42, 0},
{0, 0, 52, 42, 0},
{0, 0, 52, 42, 0},
{0, 0, 52, 42, 0},
{0, 0, 52, 43, 0},
{0, 0, 51, 43, 0},
{0, 0, 51, 43, 0},
{0, 0, 51, 44, 0},
{0, 0, 51, 44, 0},
{0, 0, 51, 44, 0},
{0, 0, 50, 44, 0},
{0, 0, 50, 45, 0},
{0, 0, 50, 45, 0},
{0, 0, 50, 45, 0},
{0, 0, 49, 45, 0},
{0, 0, 49, 46, 0},
{0, 0, 49, 46, 0},
{0, 0, 49, 46, 0},
{0, 0, 48, 46, 0},
{0, 0, 48, 47, 0},
{0, 0, 48, 47, 0},
{0, 0, 48, 47, 0},
{0, 0, 48, 48, 0},
{0, 0, 47, 48, 0},
{0, 0, 47, 48, 0},
{0, 0, 47, 48, 0},
{0, 0, 46, 48, 0},
{0, 0, 46, 49, 0},
{0, 0, 46, 49, 0},
{0, 0, 46, 49, 0},
{0, 0, 45, 49, 0},
{0, 0, 45, 50, 0},
{0, 0, 45, 50, 0},
{0, 0, 45, 50, 0},
{0, 0, 44, 50, 0},
{0, 0, 44, 51, 0},
{0, 0, 44, 51, 0},
{0, 0, 44, 51, 0},
{0, 0, 43, 51, 0},
{0, 0, 43, 51, 0},
{0, 0, 43, 52, 0},
{0, 0, 42, 52, 0},
{0, 0, 42, 52, 0},
{0, 0, 42, 52, 0},
{0, 0, 42, 53, 0},
{0, 0, 41, 53, 0},
{0, 0, 41, 53, 0},
{0, 0, 41, 53, 0},
{0, 0, 40, 53, 0},
{0, 0, 40, 54, 0},
{0, 0, 40, 54, 0},
{0, 0, 39, 54, 0},
{0, 0, 39, 54, 0},
{0, 0, 39, 54, 0},
{0, 0, 39, 55, 0},
{0, 0, 38, 55, 0},
{0, 0, 38, 55, 0},
{0, 0, 38, 55, 0},
{0, 0, 37, 55, 0},
{0, 0, 37, 55, 0},
{0, 0, 37, 56, 0},
{0, 0, 36, 56, 0},
{0, 0, 36, 56, 0},
{0, 0, 36, 56, 0},
{0, 0, 35, 56, 0},
{0, 0, 35, 56, 0},
{0, 0, 35, 57, 0},
{0, 0, 34, 57, 0},
{0, 0, 34, 57, 0},
{0, 0, 34, 57, 0},
{0, 0, 33, 57, 0},
{0, 0, 33, 57, 0},
{0, 0, 33, 58, 0},
{0, 0, 32, 58, 0},
{0, 0, 32, 58, 0},
{0, 0, 32, 58, 0},
{0, 0, 31, 58, 0},
{0, 0, 31, 58, 0},
{0, 0, 30, 58, 0},
{0, 0, 30, 59, 0},
{0, 0, 30, 59, 0},
{0, 0, 29, 59, 0},
{0, 0, 29, 59, 0},
{0, 0, 29, 59, 0},
{0, 0, 28, 59, 0},
{0, 0, 28, 59, 0},
{0, 0, 28, 60, 0},
{0, 0, 27, 60, 0},
{0, 0, 27, 60, 0},
{0, 0, 26, 60, 0},
{0, 0, 26, 60, 0},
{0, 0, 26, 60, 0},
{0, 0, 25, 60, 0},
{0, 0, 25, 60, 0},
{0, 0, 24, 60, 0},
{0, 0, 24, 61, 0},
{0, 0, 24, 61, 0},
{0, 0, 23, 61, 0},
{0, 0, 23, 61, 0},
{0, 0, 22, 61, 0},
{0, 0, 22, 61, 0},
{0, 0, 22, 61, 0},
{0, 0, 21, 61, 0},
{0, 0, 21, 61, 0},
{0, 0, 20, 61, 0},
{0, 0, 20, 62, 0},
{0, 0, 20, 62, 0},
{0, 0, 19, 62, 0},
{0, 0, 19, 62, 0},
{0, 0, 18, 62, 0},
{0, 0, 18, 62, 0},
{0, 0, 18, 62, 0},
{0, 0, 17, 62, 0},
{0, 0, 17, 62, 0},
{0, 0, 16, 62, 0},
{0, 0, 16, 62, 0},
{0, 0, 15, 62, 0},
{0, 0, 15, 62, 0},
{0, 0, 15, 63, 0},
{0, 0, 14, 63, 0},
{0, 0, 14, 63, 0},
{0, 0, 13, 63, 0},
{0, 0, 13, 63, 0},
{0, 0, 12, 63, 0},
{0, 0, 12, 63, 0},
{0, 0, 11, 63, 0},
{0, 0, 11, 63, 0},
{0, 0, 10, 63, 0},
{0, 0, 10, 63, 0},
{0, 0, 10, 63, 0},
{0, 0, 9, 63, 0},
{0, 0, 9, 63, 0},
{0, 0, 8, 63, 0},
{0, 0, 8, 63, 0},
{0, 0, 7, 63, 0},
{0, 0, 7, 63, 0},
{0, 0, 6, 63, 0},
{0, 0, 6, 63, 0},
{0, 0, 5, 63, 0},
{0, 0, 5, 63, 0},
{0, 0, 4, 63, 0},
{0, 0, 4, 63, 0},
{0, 0, 3, 63, 0},
{0, 0, 3, 63, 0},
{0, 0, 2, 63, 0},
{0, 0, 2, 63, 0},
{0, 0, 1, 63, 0},
{0, 0, 1, 63, 0},
{0, 0, 0, 63, 0},
{0, 0, 0, 63, 0},
{0, 0, 0, 64, 0},
{0, 0, 0, 63, 0},
{0, 0, 0, 63, 0},
{0, 0, 0, 63, 1},
{0, 0, 0, 63, 1},
{0, 0, 0, 63, 2},
{0, 0, 0, 63, 2},
{0, 0, 0, 63, 3},
{0, 0, 0, 63, 3},
{0, 0, 0, 63, 4},
{0, 0, 0, 63, 4},
{0, 0, 0, 63, 5},
{0, 0, 0, 63, 5},
{0, 0, 0, 63, 6},
{0, 0, 0, 63, 6},
{0, 0, 0, 63, 7},
{0, 0, 0, 63, 7},
{0, 0, 0, 63, 8},
{0, 0, 0, 63, 8},
{0, 0, 0, 63, 9},
{0, 0, 0, 63, 9},
{0, 0, 0, 63, 10},
{0, 0, 0, 63, 10},
{0, 0, 0, 63, 10},
{0, 0, 0, 63, 11},
{0, 0, 0, 63, 11},
{0, 0, 0, 63, 12},
{0, 0, 0, 63, 12},
{0, 0, 0, 63, 13},
{0, 0, 0, 63, 13},
{0, 0, 0, 63, 14},
{0, 0, 0, 63, 14},
{0, 0, 0, 63, 15},
{0, 0, 0, 62, 15},
{0, 0, 0, 62, 15},
{0, 0, 0, 62, 16},
{0, 0, 0, 62, 16},
{0, 0, 0, 62, 17},
{0, 0, 0, 62, 17},
{0, 0, 0, 62, 18},
{0, 0, 0, 62, 18},
{0, 0, 0, 62, 18},
{0, 0, 0, 62, 19},
{0, 0, 0, 62, 19},
{0, 0, 0, 62, 20},
{0, 0, 0, 62, 20},
{0, 0, 0, 61, 20},
{0, 0, 0, 61, 21},
{0, 0, 0, 61, 21},
{0, 0, 0, 61, 22},
{0, 0, 0, 61, 22},
{0, 0, 0, 61, 22},
{0, 0, 0, 61, 23},
{0, 0, 0, 61, 23},
{0, 0, 0, 61, 24},
{0, 0, 0, 61, 24},
{0, 0, 0, 60, 24},
{0, 0, 0, 60, 25},
{0, 0, 0, 60, 25},
{0, 0, 0, 60, 26},
{0, 0, 0, 60, 26},
{0, 0, 0, 60, 26},
{0, 0, 0, 60, 27},
{0, 0, 0, 60, 27},
{0, 0, 0, 60, 28},
{0, 0, 0, 59, 28},
{0, 0, 0, 59, 28},
{0, 0, 0, 59, 29},
{0, 0, 0, 59, 29},
{0, 0, 0, 59, 29},
{0, 0, 0, 59, 30},
{0, 0, 0, 59, 30},
{0, 0, 0, 58, 30},
{0, 0, 0, 58, 31},
{0, 0, 0, 58, 31},
{0, 0, 0, 58, 32},
{0, 0, 0, 58, 32},
{0, 0, 0, 58, 32},
{0, 0, 0, 58, 33},
{0, 0, 0, 57, 33},
{0, 0, 0, 57, 33},
{0, 0, 0, 57, 34},
{0, 0, 0, 57, 34},
{0, 0, 0, 57, 34},
{0, 0, 0, 57, 35},
{0, 0, 0, 56, 35},
{0, 0, 0, 56, 35},
{0, 0, 0, 56, 36},
{0, 0, 0, 56, 36},
{0, 0, 0, 56, 36},
{0, 0, 0, 56, 37},
{0, 0, 0, 55, 37},
{0, 0, 0, 55, 37},
{0, 0, 0, 55, 38},
{0, 0, 0, 55, 38},
{0, 0, 0, 55, 38},
{0, 0, 0, 55, 39},
{0, 0, 0, 54, 39},
{0, 0, 0, 54, 39},
{0, 0, 0, 54, 39},
{0, 0, 0, 54, 40},
{0, 0, 0, 54, 40},
{0, 0, 0, 53, 40},
{0, 0, 0, 53, 41},
{0, 0, 0, 53, 41},
{0, 0, 0, 53, 41},
{0, 0, 0, 53, 42},
{0, 0, 0, 52, 42},
{0, 0, 0, 52, 42},
{0, 0, 0, 52, 42},
{0, 0, 0, 52, 43},
{0, 0, 0, 51, 43},
{0, 0, 0, 51, 43},
{0, 0, 0, 51, 44},
{0, 0, 0, 51, 44},
{0, 0, 0, 51, 44},
{0, 0, 0, 50, 44},
{0, 0, 0, 50, 45},
{0, 0, 0, 50, 45},
{0, 0, 0, 50, 45},
{0, 0, 0, 49, 45},
{0, 0, 0, 49, 46},
{0, 0, 0, 49, 46},
{0, 0, 0, 49, 46},
{0, 0, 0, 48, 46},
{0, 0, 0, 48, 47},
{0, 0, 0, 48, 47},
{0, 0, 0, 48, 47},
{0, 0, 0, 48, 48},
{0, 0, 0, 47, 48},
{0, 0, 0, 47, 48},
{0, 0, 0, 47, 48},
{0, 0, 0, 46, 48},
{0, 0, 0, 46, 49},
{0, 0, 0, 46, 49},
{0, 0, 0, 46, 49},
{0, 0, 0, 45, 49},
{0, 0, 0, 45, 50},
{0, 0, 0, 45, 50},
{0, 0, 0, 45, 50},
{0, 0, 0, 44, 50},
{0, 0, 0, 44, 51},
{0, 0, 0, 44, 51},
{0, 0, 0, 44, 51},
{0, 0, 0, 43, 51},
{0, 0, 0, 43, 51},
{0, 0, 0, 43, 52},
{0, 0, 0, 42, 52},
{0, 0, 0, 42, 52},
{0, 0, 0, 42, 52},
{0, 0, 0, 42, 53},
{0, 0, 0, 41, 53},
{0, 0, 0, 41, 53},
{0, 0, 0, 41, 53},
{0, 0, 0, 40, 53},
{0, 0, 0, 40, 54},
{0, 0, 0, 40, 54},
{0, 0, 0, 39, 54},
{0, 0, 0, 39, 54},
{0, 0, 0, 39, 54},
{0, 0, 0, 39, 55},
{0, 0, 0, 38, 55},
{0, 0, 0, 38, 55},
{0, 0, 0, 38, 55},
{0, 0, 0, 37, 55},
{0, 0, 0, 37, 55},
{0, 0, 0, 37, 56},
{0, 0, 0, 36, 56},
{0, 0, 0, 36, 56},
{0, 0, 0, 36, 56},
{0, 0, 0, 35, 56},
{0, 0, 0, 35, 56},
{0, 0, 0, 35, 57},
{0, 0, 0, 34, 57},
{0, 0, 0, 34, 57},
{0, 0, 0, 34, 57},
{0, 0, 0, 33, 57},
{0, 0, 0, 33, 57},
{0, 0, 0, 33, 58},
{0, 0, 0, 32, 58},
{0, 0, 0, 32, 58},
{0, 0, 0, 32, 58},
{0, 0, 0, 31, 58},
{0, 0, 0, 31, 58},
{0, 0, 0, 30, 58},
{0, 0, 0, 30, 59},
{0, 0, 0, 30, 59},
{0, 0, 0, 29, 59},
{0, 0, 0, 29, 59},
{0, 0, 0, 29, 59},
{0, 0, 0, 28, 59},
{0, 0, 0, 28, 59},
{0, 0, 0, 28, 60},
{0, 0, 0, 27, 60},
{0, 0, 0, 27, 60},
{0, 0, 0, 26, 60},
{0, 0, 0, 26, 60},
{0, 0, 0, 26, 60},
{0, 0, 0, 25, 60},
{0, 0, 0, 25, 60},
{0, 0, 0, 24, 60},
{0, 0, 0, 24, 61},
{0, 0, 0, 24, 61},
{0, 0, 0, 23, 61},
{0, 0, 0, 23, 61},
{0, 0, 0, 22, 61},
{0, 0, 0, 22, 61},
{0, 0, 0, 22, 61},
{0, 0, 0, 21, 61},
{0, 0, 0, 21, 61},
{0, 0, 0, 20, 61},
{0, 0, 0, 20, 62},
{0, 0, 0, 20, 62},
{0, 0, 0, 19, 62},
{0, 0, 0, 19, 62},
{0, 0, 0, 18, 62},
{0, 0, 0, 18, 62},
{0, 0, 0, 18, 62},
{0, 0, 0, 17, 62},
{0, 0, 0, 17, 62},
{0, 0, 0, 16, 62},
{0, 0, 0, 16, 62},
{0, 0, 0, 15, 62},
{0, 0, 0, 15, 62},
{0, 0, 0, 15, 63},
{0, 0, 0, 14, 63},
{0, 0, 0, 14, 63},
{0, 0, 0, 13, 63},
{0, 0, 0, 13, 63},
{0, 0, 0, 12, 63},
{0, 0, 0, 12, 63},
{0, 0, 0, 11, 63},
{0, 0, 0, 11, 63},
{0, 0, 0, 10, 63},
{0, 0, 0, 10, 63},
{0, 0, 0, 10, 63},
{0, 0, 0, 9, 63},
{0, 0, 0, 9, 63},
{0, 0, 0, 8, 63},
{0, 0, 0, 8, 63},
{0, 0, 0, 7, 63},
{0, 0, 0, 7, 63},
{0, 0, 0, 6, 63},
{0, 0, 0, 6, 63},
{0, 0, 0, 5, 63},
{0, 0, 0, 5, 63},
{0, 0, 0, 4, 63},
{0, 0, 0, 4, 63},
{0, 0, 0, 3, 63},
{0, 0, 0, 3, 63},
{0, 0, 0, 2, 63},
{0, 0, 0, 2, 63},
{0, 0, 0, 1, 63},
{0, 0, 0, 1, 63},
{0, 0, 0, 0, 63}
};

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
void setup() {

//Serial.begin(9600);

//POD 2 serial port
Serial3.begin(9600, SERIAL_8N1);

//SETUP THE DS1882 POTENTIONMETERS
Wire.begin(); // join i2c bus (address optional for master)
Wire.beginTransmission(40); //Setup the
Wire.write(B10000110); //B10000110
Wire.endTransmission();
delay(500);

Wire.beginTransmission(41); //Setup the
Wire.write(B10000110); //B10000110
Wire.endTransmission();
delay(500);

Wire.beginTransmission(42); //Setup the
Wire.write(B10000110); //B10000110
Wire.endTransmission();
delay(500);

ChangePot(0, 0, 1);
ChangePot(0, 1, 1);
ChangePot(1, 0, 1);
ChangePot(1, 1, 1);
ChangePot(2, 0, 1);
ChangePot(2, 1, 1);

//Position initialization
FDR_POT_POSITION_CHANGE = FDR_POT_POSITION_STATE;

pinMode(FDR_POT_POSITION_PIN, INPUT);
pinMode(FDR_POT_SLIDE_PIN, INPUT);
pinMode(FNT_POT_EARTH_PIN, INPUT);
pinMode(FNT_POT_GRASS_PIN, INPUT);
pinMode(FNT_POT_SKY_PIN, INPUT);
pinMode(FNT_POT_SUN_PIN, INPUT);

//FADER LED
pinMode(FDR_LED_KEY_CHON_PIN, OUTPUT);
pinMode(FDR_LED_KEY_ONLY_PIN, OUTPUT);
pinMode(FDR_LED_KEY_SEL_PIN, OUTPUT);

//FADER KEY
pinMode(FDR_KEY_CHON_PIN, INPUT);
pinMode(FDR_KEY_ONLY_PIN, INPUT);
pinMode(FDR_KEY_SEL_PIN, INPUT);

//FRONT LED

pinMode(FNT_LED_KEY_EARTH_PIN, OUTPUT);
pinMode(FNT_LED_KEY_GRASS_PIN, OUTPUT);
pinMode(FNT_LED_KEY_SEL_PIN, OUTPUT);
pinMode(FNT_LED_KEY_SKY_PIN, OUTPUT);
pinMode(FNT_LED_KEY_SUN_PIN, OUTPUT);

//FRONT KEY
pinMode(FNT_KEY_EARTH_PIN, INPUT);
pinMode(FNT_KEY_GRASS_PIN, INPUT);
pinMode(FNT_KEY_SEL_PIN, INPUT);
pinMode(FNT_KEY_SKY_PIN, INPUT);
pinMode(FNT_KEY_SUN_PIN, INPUT);

//FRONT NEOPIXELS
FNT_NEO_PIXEL.begin();
FNT_NEO_PIXEL.show(); // Initialize all pixels to ‘off’
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
//MAIN LOOP

void loop() {

CheckAnalog(); // Check the Analog value of the pots and the slider

PotScale(); // Scale the pot values into range of 1-64

//If the position or slide changes
if (!(FDR_POT_POSITION_CHANGE == FDR_POT_POSITION_SCALE) | !(FDR_POT_SLIDE_CHANGE == FDR_POT_SLIDE_SCALE)) {

// FDR_POT_SLIDE_STATE is converted into a percentage, multiplied by the lookup value of the fivepoint array
// fivepoint[FDR_POT_POSITION_STATE looks up the value stored in the array][ is the colum number 0 = Ls 4 = Rs]
ChangePot(0, 0, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][0])));
ChangePot(0, 1, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][1])));
ChangePot(1, 0, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][2])));
ChangePot(1, 1, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE][3])));
ChangePot(2, 0, ((int)((float)FDR_POT_SLIDE_STATE / 1024 * fivepoint[FDR_POT_POSITION_STATE – 1][4])));

FDR_POT_POSITION_CHANGE = FDR_POT_POSITION_SCALE;
FDR_POT_SLIDE_CHANGE = FDR_POT_SLIDE_SCALE;
}

CheckKeys(); // Check if any keys have been pressed
LEDupdate(); // Update the LEDs on the keys
UpdateNeopixel(); // Update the colors of the neopixels

//KEY DBOUNCE – SUN
readingSUN = digitalRead(FNT_KEY_SUN_PIN);
if (readingSUN != FNT_KEY_SUN_LAST_STATE) {
lastDebounceTime = millis();
}
if ((millis() – lastDebounceTime) > debounceDelay) {
if (readingSUN != FNT_KEY_SUN_STATE) {
FNT_KEY_SUN_STATE = readingSUN;
StateMachinePodSelect = 1;
}
}
FNT_KEY_SUN_LAST_STATE = readingSUN;

//KEY DBOUNCE – SKY
readingSKY = digitalRead(FNT_KEY_SKY_PIN);
if (readingSKY != FNT_KEY_SKY_LAST_STATE) {
lastDebounceTime = millis();
}
if ((millis() – lastDebounceTime) > debounceDelay) {
if (readingSKY != FNT_KEY_SKY_STATE) {
FNT_KEY_SKY_STATE = readingSKY;
StateMachinePodSelect = 2;
}
}
FNT_KEY_SKY_LAST_STATE = readingSKY;

//KEY DBOUNCE – GRASS
readingGRASS = digitalRead(FNT_KEY_GRASS_PIN);
if (readingGRASS != FNT_KEY_GRASS_LAST_STATE) {
lastDebounceTime = millis();
}
if ((millis() – lastDebounceTime) > debounceDelay) {
if (readingGRASS != FNT_KEY_GRASS_STATE) {
FNT_KEY_GRASS_STATE = readingGRASS;
StateMachinePodSelect = 3;
}
}
FNT_KEY_GRASS_LAST_STATE = readingGRASS;

//KEY DBOUNCE – EARTH
readingEARTH = digitalRead(FNT_KEY_EARTH_PIN);
if (readingEARTH != FNT_KEY_EARTH_LAST_STATE) {
lastDebounceTime = millis();
}
if ((millis() – lastDebounceTime) > debounceDelay) {
if (readingEARTH != FNT_KEY_EARTH_STATE) {
FNT_KEY_EARTH_STATE = readingEARTH;
StateMachinePodSelect = 4;
}
}
FNT_KEY_EARTH_LAST_STATE = readingEARTH;

//STATEMACHINE TO CHANGE POD
switch (StateMachinePodSelect) {
case 1:
digitalWrite(FNT_LED_KEY_SUN_PIN, 0);
digitalWrite(FNT_LED_KEY_SKY_PIN, 1);
digitalWrite(FNT_LED_KEY_GRASS_PIN, 1);
digitalWrite(FNT_LED_KEY_EARTH_PIN, 1);
PodInput(1);
break;
case 2:
digitalWrite(FNT_LED_KEY_SUN_PIN, 1);
digitalWrite(FNT_LED_KEY_SKY_PIN, 0);
digitalWrite(FNT_LED_KEY_GRASS_PIN, 1);
digitalWrite(FNT_LED_KEY_EARTH_PIN, 1);
PodInput(2);
break;

case 3:
digitalWrite(FNT_LED_KEY_SUN_PIN, 1);
digitalWrite(FNT_LED_KEY_SKY_PIN, 1);
digitalWrite(FNT_LED_KEY_GRASS_PIN, 0);
digitalWrite(FNT_LED_KEY_EARTH_PIN, 1);
PodInput(3);
break;

case 4:
digitalWrite(FNT_LED_KEY_SUN_PIN, 1);
digitalWrite(FNT_LED_KEY_SKY_PIN, 1);
digitalWrite(FNT_LED_KEY_GRASS_PIN, 1);
digitalWrite(FNT_LED_KEY_EARTH_PIN, 0);
PodInput(4);
break;

default:
// if nothing else matches, do the default
// default is optional
break;
}

//DISPLAY TO SERIAL FOR TESTING

//DisplayKeyValues();
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
// This function Changes the input of the POD2 using Serial 3
void PodInput(byte channel) {

//if you are not currently on this channel
if(StateMachinePodInput != channel){

//Get Ward-Beck Systems POD Attention
Serial3.write(0xF0);

//Write command to Change Channel
Serial3.write(0x80 | channel);
delay(10);
}
}

void CheckKeys()
{

FDR_LED_KEY_CHON_STATE = digitalRead(FDR_KEY_CHON_PIN);

FDR_LED_KEY_ONLY_STATE = digitalRead(FDR_KEY_ONLY_PIN);
FDR_LED_KEY_SEL_STATE = digitalRead(FDR_KEY_SEL_PIN);

FNT_LED_KEY_EARTH_STATE = digitalRead(FNT_KEY_EARTH_PIN);
FNT_LED_KEY_GRASS_STATE = digitalRead(FNT_KEY_GRASS_PIN);
FNT_LED_KEY_SEL_STATE = digitalRead(FNT_KEY_SEL_PIN);
FNT_LED_KEY_SKY_STATE = digitalRead(FNT_KEY_SKY_PIN);

}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
//This function writes the status of the LED state
void LEDupdate()
{
digitalWrite(FDR_LED_KEY_CHON_PIN, FDR_LED_KEY_CHON_STATE);
digitalWrite(FDR_LED_KEY_ONLY_PIN, FDR_LED_KEY_ONLY_STATE);
digitalWrite(FDR_LED_KEY_SEL_PIN, FDR_LED_KEY_SEL_STATE);

digitalWrite(FNT_LED_KEY_EARTH_PIN, FNT_LED_KEY_EARTH_STATE);
digitalWrite(FNT_LED_KEY_GRASS_PIN, FNT_LED_KEY_GRASS_STATE);
digitalWrite(FNT_LED_KEY_SEL_PIN, FNT_LED_KEY_SEL_STATE);
digitalWrite(FNT_LED_KEY_SKY_PIN, FNT_LED_KEY_SKY_STATE);
digitalWrite(FNT_LED_KEY_SUN_PIN, FNT_LED_KEY_SUN_STATE);
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
//This functions gets the analog value and stores it into the STATE variables
void CheckAnalog() {

FDR_POT_POSITION_STATE = analogRead(FDR_POT_POSITION_PIN);
FDR_POT_SLIDE_STATE = analogRead(FDR_POT_SLIDE_PIN);

FNT_POT_EARTH_STATE = analogRead(FNT_POT_EARTH_PIN);
FNT_POT_GRASS_STATE = analogRead(FNT_POT_GRASS_PIN);
FNT_POT_SKY_STATE = analogRead(FNT_POT_SKY_PIN);
FNT_POT_SUN_STATE = analogRead(FNT_POT_SUN_PIN);
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
// This function scales the state values as a percentage of the defined PotScaler

void PotScale()
{

FNT_POT_EARTH_SCALE = ((int)((float)FNT_POT_EARTH_STATE / 1024 * PotScaler));
FNT_POT_GRASS_SCALE = ((int)((float)FNT_POT_GRASS_STATE / 1024 * PotScaler));
FNT_POT_SKY_SCALE = ((int)((float)FNT_POT_SKY_STATE / 1024 * PotScaler));
FNT_POT_SUN_SCALE = ((int)((float)FNT_POT_SUN_STATE / 1024 * PotScaler));

FDR_POT_SLIDE_SCALE = ((int)((float)FDR_POT_SLIDE_STATE / 1024 * PotScaler));
FDR_POT_POSITION_SCALE = ((int)((float)FDR_POT_POSITION_STATE / 1024 * PotScaler));
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
//This function recieves the Pot number(0-8), the section (0 or 1), and the value of Resistance (0-64)
void ChangePot(byte Pot, int Section, byte PotVal)
{
// Transmit to DS1808, device #40 (0x28) = 0101 000, LSB is auto sent by Arduino Wire
Wire.beginTransmission((40 + Pot));
// choose section 0 or 1
if (Section == 0) {
Wire.write(PotScaler – PotVal); // Write wiper value to the first pot
}
if (Section == 1) { // Section 1 needs a mask
Wire.write(((((PotScaler) – PotVal)) | 0b01000000)); // Write wiper value for second pot
}
Wire.endTransmission();
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
void UpdateNeopixel() {
FNT_NEO_PIXEL.setPixelColor(FNT_NEO_PIXEL_SEL, ((float)FDR_POT_SLIDE_STATE / 1024) * 255, 0, 0) ;

FNT_NEO_PIXEL.setPixelColor(FNT_NEO_PIXEL_SUN, ((float)FNT_POT_SUN_STATE / 1024) * 244, ((float)FNT_POT_SUN_STATE / 1024) * 144, ((float)FNT_POT_SUN_STATE / 1024) * 44) ;
FNT_NEO_PIXEL.setPixelColor(FNT_NEO_PIXEL_SKY, 0, 0, ((float)FNT_POT_SKY_STATE / 1024) * 255) ;
FNT_NEO_PIXEL.setPixelColor(FNT_NEO_PIXEL_GRASS, 0, ((float)FNT_POT_GRASS_STATE / 1024) * 255, 0) ;
FNT_NEO_PIXEL.setPixelColor(FNT_NEO_PIXEL_EARTH, ((float)FNT_POT_EARTH_STATE / 1024) * 105, ((float)FNT_POT_EARTH_STATE / 1024) * 69, 0) ;
FNT_NEO_PIXEL.show();
};

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
void DisplayScalers() {
Serial.print(FNT_POT_SUN_SCALE, DEC); Serial.print(“\t”);
Serial.print(FNT_POT_SKY_SCALE, DEC); Serial.print(“\t”);
Serial.print(FNT_POT_GRASS_SCALE, DEC); Serial.print(“\t”);
Serial.print(FNT_POT_EARTH_SCALE, DEC); Serial.print(“\t”);

Serial.print(FDR_POT_SLIDE_SCALE, DEC); Serial.print(“\t”);
Serial.print(FDR_POT_POSITION_SCALE, DEC); Serial.print(“\t”);

Serial.println(“\n”); // prints another carriage return
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
void DisplayKeyValues() {
Serial.print(FNT_KEY_EARTH_STATE, DEC);
Serial.print(FNT_KEY_GRASS_STATE, DEC);

Serial.print(FNT_KEY_SEL_STATE, DEC);
Serial.print(FNT_KEY_SKY_STATE, DEC);
Serial.print(FNT_KEY_SUN_STATE, DEC);
}

//▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?▓?
void DisplayPotValues() {
Serial.print(FDR_POT_POSITION_STATE, DEC); Serial.print(“\t”);
Serial.print(FDR_POT_SLIDE_STATE, DEC); Serial.print(“\t”);

Serial.print(FNT_POT_EARTH_STATE, DEC); Serial.print(“\t”);
Serial.print(FNT_POT_GRASS_STATE, DEC); Serial.print(“\t”);
Serial.print(FNT_POT_SKY_STATE, DEC); Serial.print(“\t”);
Serial.print(FNT_POT_SUN_STATE, DEC); Serial.print(“\t”);
Serial.println(“\n”); // prints another carriage return
}

 

IMG_2776-ANIMATION

Adding to the book list for 2015. ?Lots learned and so much more to learn!

IMG_2095
IMG_2125 IMG_2124 IMG_2121 IMG_2119 IMG_2118 IMG_2117 IMG_2116 IMG_2115 IMG_2114 IMG_2113 IMG_2112 IMG_2111 IMG_2110 IMG_2109 IMG_2108 IMG_2106 IMG_2105 IMG_2104 IMG_2103 IMG_2102 IMG_2101 IMG_2100 IMG_2099 IMG_2098 IMG_2097 IMG_2096 (more…)

I did not check if it had midi out, but almost had a Tom hanks moment

imageimage

 

 

Screen Shot 2015-12-08 at 10.20.30 PM Screen Shot 2015-12-08 at 10.20.36 PM Screen Shot 2015-12-08 at 10.20.43 PM Screen Shot 2015-12-08 at 10.21.03 PMI developed the Software, here are the visual basic files for you to download and learn from:
?http://goanddosomething.com/Elevator/20151208.zip

Screen Shot 2015-12-03 at 10.59.13 AM

LA Police Gear MOLLE Elite Tactical Christmas Stocking

WP to LinkedIn Auto Publish Powered By : XYZScripts.com