Skip to content

Instantly share code, notes, and snippets.

@jaymcgavren
Last active November 13, 2025 03:24
Show Gist options
  • Select an option

  • Save jaymcgavren/396dbc69088e0119fc6c6f400fafe22d to your computer and use it in GitHub Desktop.

Select an option

Save jaymcgavren/396dbc69088e0119fc6c6f400fafe22d to your computer and use it in GitHub Desktop.
Linwood Whaley's assembly code to run animations on his 4 x 4 x 4 LED cube
/*
led-cube-4x4x4
Arduino UNO or Nano
MCP23017 I/O expander controlled by I2C
64 leds in a 4 by 4 by 4 by 4 arrangement
16 2N3906 pnp transistors controlling led anodes connected to MCP23017 GPIO port outputs---low on output turns transistors on
4 2N4401 npn transistors controlling led cathodes connected to 4 pins of Arduino board---high on output turns transistors on
MCP23017 address is 0x20
ATMEGA328P assembly language used in this program---for speed and memory savings
Date Start: 8/20-2025
: 8/26/2025
: 10/09/2025
*/
#include "Wire.h"
#define Level_1 8 // analog pin A0 output for level 1 cathode control
#define Level_2 9 // analog pin A1 output for level 2 cathode control
#define Level_3 10 // analog pin A2 output for level 3 cathode control
#define Level_4 11 // analog pin A3 output for level 4 cathode control
int Level_1State = LOW;
int Level_2State = LOW;
void topBottomTop(); /// Line number 1035
void wallLeftRightLeft(); /// Line number 1850
void wallFrontBack(); /// Line number 2023
void wallAround(); /// Line number 2200
void ELECTRON(); /// Line number 2747
void diagonal(); /// Line number 1103
void wallFlip(); /// Line number 1199 Not used---Needs work
void spinUP(); /// Line number 109 Not used---Needs work
void squareSmallLarge(); /// Line number 3637
const int diagsped = 135;
const int electSped = 15; // 15 looks good
const int wallSped = 45;
const int spinSped = 75;
const int topbotSped = 125;
void setup() {
Wire.begin(); // wake i2c
Wire.beginTransmission(0x20); // i2c address of i/o expander
Wire.write(0x00); // register address of IODIRA--port A input/output direction
Wire.write(0x00); // make all port A pins outputs
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x01); // register address of IODIRB--port B input/output direction
Wire.write(0x00); // make all port B pins outputs
Wire.endTransmission();
///////////////////////////////////////////////Start with all leds off///////////////
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of GPIOA---port A output pins
Wire.write(0xff); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of GPIOB---port B output pins
Wire.write(0xff); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
/////////////////////////////////////////////////////////////////////////////////////
pinMode(Level_1, OUTPUT); // LOW is off
pinMode(Level_2, OUTPUT); // HIGH is on
pinMode(Level_3, OUTPUT);
pinMode(Level_4, OUTPUT);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
DDRB = B1111; // PB3--D8; PB2--D9; PB1==D11; PB0--D12 are outputs
PORTB = B0000; //all LOW
}
void loop() {
topBottomTop();
for(int i = 0; i < 3; i++) {
wallLeftRightLeft();
}
for(int i = 0; i < 2; i++) {
wallFrontBack();
}
for(int i = 0; i < 3; i++) {
wallAround();
}
squareSmallLarge();
for(int i = 0; i < 2; i++) {
diagonal();
}
ELECTRON();
}
void spinUp() { ////////////////////////////////////////////////////////////////////
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
// LEVEL ONE //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x9f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x9f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x9f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf9); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x9f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x1f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x17); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x13); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x11); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x10); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf1); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf0); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xe0); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xc0); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x80); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_1, LOW); // turn off lower level
// LEVEL TWO //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x7f); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x73); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x71); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x70); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x76); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x66); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x46); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x02); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped); //// 13 ////
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x20); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x02); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x02); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_2, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_2, LOW); // turn off lower level
// LEVEL THREE //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf9); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf9); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x9f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf9); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // four //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf9); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf8); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xe8); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // seven //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xc8); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x88); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x08); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x8f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x0f); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // twelve //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x07); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x03); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x01); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_3, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_3, LOW); // turn off lower level
// LEVEL FOUR //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfe); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // ONE //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfe); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xce); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x8e); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // SIX //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x0e); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x6e); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x66); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // TEN //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x62); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x40); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x40); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x04); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped); // FOURTEEN //
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x40); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_4, LOW); // turn off lower level
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_4, HIGH); // turn on lower level
delay(spinSped);
digitalWrite(Level_4, LOW); // turn off lower level
} // end---spinUp()
void topBottomTop() { //////////////////////////////////////////////////////////////////
PORTB = B0000;
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x00); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x00); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
delay(2);
for(int i = 0; i < 4; i++) { // loop ten times
PORTB = B0001; // turn on level one
delay(topbotSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(topbotSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(topbotSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(topbotSped);
PORTB = B0000; // turn off level four
PORTB = B1000; // turn on level four
delay(topbotSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(topbotSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(topbotSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(topbotSped);
PORTB = B0000; // turn off level one
} // end---for loop
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
delay(2);
} // end---void topBottomTop()
void diagonal() { //////////////////////////////////////////////////////////////////////
PORTB = B0000; // turn off all levels
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); //
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); //
Wire.endTransmission();
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make left (0111) leds port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make left (0111) leds port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make second left (1011) led port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make second left (1011) led port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make second right (1101) led port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make second right (1101) led port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make right (1110) led port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make right (1110) led port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make second right (1101) led port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make second right (1101) led port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make second right (1101) led port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make second right (1101) led port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make second right (1101) led port A pins LOW---turn on transistors
Wire.endTransmission(); //
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make second right (1101) led port B pins LOW---turn on transistors
Wire.endTransmission(); //
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B0001; // enable ground to level one
delay(diagsped);
PORTB = B0000; // disable ground to level one
PORTB = B0010; // enable ground to level two
delay(diagsped);
PORTB = B0000; // disable ground to level two
PORTB = B0100; // enable ground to level three
delay(diagsped);
PORTB = B0000; // disable ground to level three
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make bottom wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make bottom wall port B pins LOW---turn on transistors
Wire.endTransmission();
PORTB = B1000; // enable ground to level four
delay(diagsped);
PORTB = B0000; // disable ground to level four
} // end---void diagonal()
void wallLeftRightLeft() { ///////////////////////////////////////////////////////////////////
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make right wall port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbb); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbb); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdd); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdd); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make all port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make all port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
} // end---void wallLeftRightLeft()
void wallFlip() { ///////////////////////////////////////////////////////////////////////////
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
for(int i = 0; i < 2; i++) {
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf0); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // front wall---11111
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // front wall---11111
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xb7); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // left front to right rear diagonal wall---22222
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xed); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // left front to right rear diagonal wall---22222
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x77); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // leftwall---77777---3333333
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // left wall---7777777---333333
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xde); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // left rear to right front diagonal---44444---44444
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x7b); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // left rear to right front diagonal---44444---44444
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // back wall---33333---55555
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x0f); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // back wall---33333---55555
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xb7); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // right rear to left front diagonal wall---66666---666666
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xed); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // right rear to left front diagonal wall---66666---666666
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xee); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // right wall---55555
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // right wall---55555
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xde); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // left rear to right front diagonal---44444
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x7b); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // left rear to right front diagonal---44444
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
}
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf0); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission(); // front wall---11111
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn off transistors
Wire.endTransmission(); // front wall---11111
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(750);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
} // end---wallFlip()
void wallFrontBack() { ////////////////////////////////////////////////////////////////////////////////
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf0); // make front wall forward port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins LOW---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x0f); // make second wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf0); // make third wall port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x0f); // make rear wall port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make all port A pins HIGH---turn off transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf0); // make third wall port B pins LOW---turn on transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x0f); // make second wall port A pins LOW---turn ofn transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf0); // make front wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make all port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(125);
digitalWrite(Level_1, LOW); // turn
digitalWrite(Level_2, LOW); // all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
} // end---void wallFrontBack()
void wallAround() { ///////////////////////////////////////////////////////////////////////////
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf7); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf3); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf1); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfe); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xee); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xce); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x8e); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x0e); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xe0); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x68); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x6c); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x6e); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x6f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x07); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x17); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x37); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x77); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf7); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn
digitalWrite(Level_2, HIGH); // all
digitalWrite(Level_3, HIGH); // cathodes
digitalWrite(Level_4, HIGH); // on
delay(75);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
} // end---wallAround
void ELECTRON() { //////////////////////////////////////////////////////////////////////////////////////// ELECTRON
PORTB = B0000;
for(int x =1; x <= 6; x++) {
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfe); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdf); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfb); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x7f); // make port B pins HIGH---turn off transistors////original 0x0f
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on turn level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfb); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdf); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfe); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; //digitalWrite(Level_1, HIGH); // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one ************************************11111111111
//////**************************** next electron ***************************22222222222
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); //
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdf); //
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdf); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfd); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors////original 0x0f
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdf); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xdf); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four***********************************************2222222
//////**************************** next electron ***************************33333333333333333
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdf); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xef); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors////original 0x0f
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xdf); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x7f); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one ****************************************************3333333333
////**************************** next electron ********************************************444444444444
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xef); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf7); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make port B pins HIGH---turn off transistors////original 0xf0
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xef); // make port B pins HIGH---turn off transistors////original 0x0f
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four ************************************************444444444444
////****************************** next electron ********************************************55555555555
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfb); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfb); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xbf); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfb); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xbf); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfb); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four ************************************************555555555555
////****************************** next electron ********************************************6666666666
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf7); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfb); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfe); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfd); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xfb); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xff); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf7); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four ******************************************************************666666666666
////***************************************next ELECRTON*******************************************************7777777777777
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf7); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfb); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfd); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfe); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B1000; // turn on level four
delay(electSped);
PORTB = B0000; // turn off level four
PORTB = B0100; // turn on level three
delay(electSped);
PORTB = B0000; // turn off level three
PORTB = B0010; // turn on level two
delay(electSped);
PORTB = B0000; // turn off level two
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfd); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xfb); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0xf7); // make right wall port A pins LOW---turn on transistors////original 0xf0
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xff); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
PORTB = B0001; // turn on level one
delay(electSped);
PORTB = B0000; // turn off level one *******************************************************77777777777
}
} //end-----Electron
void squareSmallLarge() { //////////////////////////////////////////////////////////////////////////
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
for(int i = 0; i < 4; i++) {
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on level one
digitalWrite(Level_2, HIGH); // turn on level two
digitalWrite(Level_3, HIGH); // turn on level three
digitalWrite(Level_4, HIGH); // turn on level four
delay(500);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x9f); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0xf9); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
//digitalWrite(Level_1, HIGH); // turn on level one
digitalWrite(Level_2, HIGH); // turn on level two
digitalWrite(Level_3, HIGH); // turn on level three
//digitalWrite(Level_4, HIGH); // turn on level four
delay(500);
//digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
//digitalWrite(Level_4, LOW); // off
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x12); // register address of port A output---GPIOA
Wire.write(0x60); // make right wall port A pins LOW---turn on transistors////original 0x0f
Wire.endTransmission();
Wire.beginTransmission(0x20); // address i/o expander
Wire.write(0x13); // register address of port B output---GPIOB
Wire.write(0x06); // make port B pins HIGH---turn off transistors
Wire.endTransmission();
digitalWrite(Level_1, HIGH); // turn on level one
digitalWrite(Level_2, HIGH); // turn on level two
digitalWrite(Level_3, HIGH); // turn on level three
digitalWrite(Level_4, HIGH); // turn on level four
delay(500);
digitalWrite(Level_1, LOW); // start off
digitalWrite(Level_2, LOW); // with all
digitalWrite(Level_3, LOW); // cathodes
digitalWrite(Level_4, LOW); // off
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment