Pith - adafruit_silent_tilt_stand_timer
adafruit_silent_tilt_stand_timer/adafruit_silent_tilt_stand_timer.ino [9.7 kb]
Modified: 18:05:16 58 026 (16 May 026)
14 Days Ago
// silent tilt stand timer
// vgmlr
#include "LedControl.h"
#include "Wire.h"
#include "MPU6050_light.h"
// SCL A4 SDA A5
MPU6050 mpu(Wire);
unsigned long timer = 0;
// display pins
int DIN = 7;
int CS =  6;
int CLK = 5;
// credit: xantorohara.github.io/led-matrix-editor/
// 00 to 30
const uint8_t numbers_off[][8] = {
  {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00111110,  0b01000001,  0b01000001,  0b00111110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000000,  0b00000000,  0b01111111,  0b00000000
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00110001,  0b01001001,  0b01001001,  0b01000110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b01000001,  0b01001001,  0b01001001,  0b00110110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000111,  0b00001000,  0b00001000,  0b01111111
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b01000110,  0b01001001,  0b01001001,  0b00110001
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00111110,  0b01001001,  0b01001001,  0b00110000
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000001,  0b00000001,  0b01111001,  0b00000111
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00110110,  0b01001001,  0b01001001,  0b00110110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000110,  0b01001001,  0b01001001,  0b00111110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00111110,  0b01000001,  0b01000001,  0b00111110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000000,  0b00000000,  0b01111111,  0b00000000
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00110001,  0b01001001,  0b01001001,  0b01000110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b01000001,  0b01001001,  0b01001001,  0b00110110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000111,  0b00001000,  0b00001000,  0b01111111
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b01000110,  0b01001001,  0b01001001,  0b00110001
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00111110,  0b01001001,  0b01001001,  0b00110000
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000001,  0b00000001,  0b01111001,  0b00000111
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00110110,  0b01001001,  0b01001001,  0b00110110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000110,  0b01001001,  0b01001001,  0b00111110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00111110,  0b01000001,  0b01000001,  0b00111110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000000,  0b00000000,  0b01111111,  0b00000000
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00110001,  0b01001001,  0b01001001,  0b01000110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b01000001,  0b01001001,  0b01001001,  0b00110110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000111,  0b00001000,  0b00001000,  0b01111111
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b01000110,  0b01001001,  0b01001001,  0b00110001
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00111110,  0b01001001,  0b01001001,  0b00110000
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000001,  0b00000001,  0b01111001,  0b00000111
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00110110,  0b01001001,  0b01001001,  0b00110110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000110,  0b01001001,  0b01001001,  0b00111110
  }, {
    0b01000001,  0b01001001,  0b01001001,  0b00110110,  0b00111110,  0b01000001,  0b01000001,  0b00111110
  }
};
const uint8_t numbers_on[][8] = {
  {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00111110,  0b01000001,  0b01000001,  0b10111110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000000,  0b00000000,  0b01111111,  0b10000000
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00110001,  0b01001001,  0b01001001,  0b11000110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b01000001,  0b01001001,  0b01001001,  0b10110110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000111,  0b00001000,  0b00001000,  0b11111111
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b01000110,  0b01001001,  0b01001001,  0b10110001
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00111110,  0b01001001,  0b01001001,  0b10110000
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000001,  0b00000001,  0b01111001,  0b10000111
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00110110,  0b01001001,  0b01001001,  0b10110110
  }, {
    0b00111110,  0b01000001,  0b01000001,  0b00111110,  0b00000110,  0b01001001,  0b01001001,  0b10111110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00111110,  0b01000001,  0b01000001,  0b10111110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000000,  0b00000000,  0b01111111,  0b10000000
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00110001,  0b01001001,  0b01001001,  0b11000110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b01000001,  0b01001001,  0b01001001,  0b10110110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000111,  0b00001000,  0b00001000,  0b11111111
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b01000110,  0b01001001,  0b01001001,  0b10110001
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00111110,  0b01001001,  0b01001001,  0b10110000
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000001,  0b00000001,  0b01111001,  0b10000111
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00110110,  0b01001001,  0b01001001,  0b10110110
  }, {
    0b00000000,  0b00000000,  0b01111111,  0b00000000,  0b00000110,  0b01001001,  0b01001001,  0b10111110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00111110,  0b01000001,  0b01000001,  0b10111110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000000,  0b00000000,  0b01111111,  0b10000000
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00110001,  0b01001001,  0b01001001,  0b11000110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b01000001,  0b01001001,  0b01001001,  0b10110110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000111,  0b00001000,  0b00001000,  0b11111111
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b01000110,  0b01001001,  0b01001001,  0b10110001
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00111110,  0b01001001,  0b01001001,  0b10110000
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000001,  0b00000001,  0b01111001,  0b10000111
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00110110,  0b01001001,  0b01001001,  0b10110110
  }, {
    0b00110001,  0b01001001,  0b01001001,  0b01000110,  0b00000110,  0b01001001,  0b01001001,  0b10111110
  }, {
    0b01000001,  0b01001001,  0b01001001,  0b00110110,  0b00111110,  0b01000001,  0b01000001,  0b10111110
  }
};
const uint8_t arrow[][8] = {
  {
    0b10000000, 0b11000000, 0b11100000, 0b11110000, 0b11110000, 0b11100000, 0b11000000, 0b10000000
  }, {
    0b01000000, 0b01100000, 0b11110000, 0b11111000, 0b11111000, 0b11110000, 0b01100000, 0b01000000
  }, {
    0b00100000, 0b00110000, 0b11111000, 0b11111100, 0b11111100, 0b11111000, 0b00110000, 0b00100000
  }, {
    0b00010000, 0b00011000, 0b11111100, 0b11111110, 0b11111110, 0b11111100, 0b00011000, 0b00010000
  }, {
    0b00001000, 0b00001100, 0b11111110, 0b11111111, 0b11111111, 0b11111110, 0b00001100, 0b00001000
  }
};
LedControl lc = LedControl(DIN, CLK, CS, 0);
int state = 0;
int number = 0;
int last = 0;
int x_angle;
int y_angle;
int z_angle;
void setup() {
  Serial.begin(9600);
  Wire.begin();
  // display setup
  lc.shutdown(0, false);
  lc.setIntensity(0, 10);
  lc.clearDisplay(0);
  // calibrate
  byte status = mpu.begin();
  while (status != 0) { }
  delay(1000);
  mpu.calcOffsets();
}
void loop() {
  angle();
  if (state == 0) {
    if (last > 0) {
      number = last;
    }
    printByte(numbers_off[number]);
  } else if (state == 1) {
    if (number == 0) {
      arrow_up();
    } else {
      minute(number);
    }
  }
}
void minute(int m) {
  int p = 0;
  while (p < 30) {
    printByte(numbers_off[m]);
    delay(1000);
    printByte(numbers_on[m]);
    delay(1000);
    angle();
    if (state == 0 || state == 2) {
      break;
    }
    p++;
  }
  number--;
}
void angle() {
  mpu.update();
  delay(10);
  x_angle = mpu.getAngleX();
  y_angle = mpu.getAngleY();
  // z_angle = mpu.getAngleZ();
  // Serial.print("X: ");
  // Serial.print(x_angle);
  // Serial.print(" Y: ");
  // Serial.print(y_angle);
  // Serial.print(" Z: ");
  // Serial.println(z_angle);
  // left tilt count up
  if (y_angle > 25) {
    number++;
    last = number;
    delay(1000);
    // right tilt start-stop
  } else if (y_angle < -25) {
    if (state == 0) {
      state = 1;
      delay(1000);
    } else if (state == 1) {
      state = 2;
      delay(1000);
    } else if (state == 2) {
      state = 1;
      delay(1000);
    }
    // forward tilt reset
  } else if (x_angle < -10 && y_angle < 2 && y_angle > -2) {
    if (state == 0) {
      last = 0;
    }
    number = 0;
    state = 0;
  }
}
void arrow_up() {
  while (state == 1) {
    for (int k = 0; k < 4; k++) {
      printByte(arrow[k]);
      delay(300);
    }
    for (int k = 4; k > 0; k--) {
      printByte(arrow[k]);
      delay(300);
    }
    angle();
  }
}
void printByte(byte character []) {
  for (int g = 0; g < 9; g++) {
    lc.setRow(0, g, character[g]);
  }
}
Updates
Shim - Android 70.026.1
Wedge - Linux 68.026.1
Wedge - Android 68.026.1
Taper - Linux 64.026.1
Ayh Extension - Chrome 63.026.1
Dev
TVShow (227) 'CSA'
TVShow (228) 'APT'
TVProgram (83) 'BXT'
Miter Update(s)
Shim (Dictation)

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)