Skip to content

Instantly share code, notes, and snippets.

Created March 18, 2017 00:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/eaed47b5e8d0aa0680569faeade2340a to your computer and use it in GitHub Desktop.
Save anonymous/eaed47b5e8d0aa0680569faeade2340a to your computer and use it in GitHub Desktop.
Tien's code for Hack #3 (DIG401)
/*
Tien's DIG401 project: Hack #3
*/
#include <Adafruit_CircuitPlayground.h>
#include <Wire.h>
#include <SPI.h>
#include "Adafruit_SleepyDog.h"
#define CAP_THRESHOLD 300 // Threshold for a capacitive touch (higher = less sensitive).
#define CAP_SAMPLES 20 // Number of samples to take for a capacitive touch read.
#define TONE_DURATION_MS 100 // Duration in milliseconds to play a tone when touched.
bool leftButtonPressed;
bool rightButtonPressed;
int value;
const uint8_t spSTOP[] PROGMEM = {0x0C,0xF8,0xA5,0x4C,0x02,0x1A,0xD0,0x80,0x04,0x38,0x00,0x1A,0x58,0x59,0x95,0x13,0x51,0xDC,0xE7,0x16,0xB7,0x3A,0x75,0x95,0xE3,0x1D,0xB4,0xF9,0x8E,0x77,0xDD,0x7B,0x7F,0xD8,0x2E,0x42,0xB9,0x8B,0xC8,0x06,0x60,0x80,0x0B,0x16,0x18,0xF8,0x7F};
const uint8_t spDO[] PROGMEM ={0x2E,0x4E,0x80,0xB3,0x32,0x6D,0x8D,0x22,0x44,0x53,0x4B,0xFB,0x7C,0xB2,0x22,0xAC,0xA8,0x2C,0xFB,0x4E,0x76,0x32,0xD3,0x99,0xB5,0x22,0x51,0x6B,0x49,0xC9,0xDE,0xAB,0xD6,0x38,0x11,0xA9,0x2E,0xD9,0x6B,0x1B,0x7A,0x69,0x2A,0xCD,0xB5,0x9B,0xEF,0x6D,0xAF,0x87,0x07};
const uint8_t spNOT[] PROGMEM ={0xAE,0xB1,0x1A,0x3E,0xC3,0x15,0x95,0x26,0x58,0x18,0xF3,0x70,0xDD,0x6A,0x57,0x3B,0x4D,0x4B,0xCE,0xAD,0x6E,0x75,0xAB,0x5B,0xDD,0x7A,0x34,0x76,0xA4,0xBA,0x07,0x93,0xDC,0x01,0x00,0x30,0xC0,0x90,0x70,0x07,0x0C,0x11,0x41,0x00,0x57,0x14,0x1F};
const uint8_t spMOVE[] PROGMEM ={0xA5,0x4A,0x0E,0x5D,0x13,0xF4,0x96,0x3A,0x7B,0x30,0x1B,0x48,0xD6,0x2A,0xE9,0x37,0x44,0xAB,0xD9,0xCE,0x66,0xDA,0x12,0x11,0xC7,0x55,0xB3,0x76,0x49,0x78,0x6D,0xB6,0xCC,0xCA,0x25,0x13,0xAD,0x84,0xBD,0x5B,0x95,0x4A,0x9A,0x1E,0x74,0xDB,0xD4,0xEA,0xC8,0xF4,0xD9,0xA4,0x7B,0xEB,0x82,0xD4,0xB1,0x84,0xEC,0x75,0xA8,0x43,0x1E,0xC2,0x64,0x55,0xB4,0x3A,0x74,0x75,0xB3,0x31,0xEE,0x61,0x21,0x07,0x01,0x54,0xA4,0x10,0x20,0xD8,0x50,0x01,0x04,0xE7,0x4A,0x00,0x9F,0x43,0xE0,0x01,0x00,0x00};
const uint8_t spPRESS[] PROGMEM ={0x04,0xC0,0x36,0x4C,0x01,0x2E,0xA9,0x2B,0xC0,0x36,0xAF,0x16,0xB9,0x22,0xE5,0x96,0xC9,0x6E,0x7A,0x32,0xDF,0x2D,0x2C,0x32,0xCE,0xCE,0x77,0x35,0xDB,0xD4,0x9B,0xE4,0xE5,0xBA,0xB6,0xEC,0xA8,0x80,0xEF,0x45,0x34,0x60,0x01,0x03,0xFC,0x28,0x6A,0x80,0x1F,0x4D,0x15,0xF0,0x15,0x99,0x04,0x38,0x00,0x0F,0x00,0x00};
const uint8_t spSAY[] PROGMEM ={0x08,0x78,0xDE,0x5C,0x03,0x16,0xB0,0x80,0x05,0x2C,0x60,0x01,0x0D,0xAC,0x38,0xE5,0x70,0xD1,0x9A,0x7B,0x93,0x9B,0x9C,0x34,0xD5,0x30,0xD1,0x9A,0x7B,0xB3,0x93,0xD7,0x1C,0xA4,0x1A,0x6F,0x6E,0xBD,0xBA,0x52,0x59,0xD5,0xB7,0x76,0x1F,0xEA,0x90,0x07,0x37,0xE4,0x82,0x9A,0xF1,0x51,0xDC,0x98,0xAD,0x62,0x74,0x07,0x7A};
const uint8_t spWORDS[] PROGMEM ={0xAA,0xC0,0x71,0xAA,0xD4,0xE4,0xB8,0x9A,0xFB,0x7D,0x45,0x4A,0x5E,0x2A,0x96,0xBB,0xCD,0xD8,0xFD,0xA8,0x64,0xF7,0x30,0x27,0xFF,0xA3,0x90,0x39,0x2C,0x5B,0xF4,0xB7,0x42,0x95,0x62,0x6F,0xD1,0x5F,0x2A,0xD9,0x9C,0x2E,0xA8,0x55,0xAE,0x52,0x2D,0x4B,0xD0,0x36,0xA5,0x2E,0x8D,0xED,0x8E,0xBE,0xE2,0xB7,0x36,0xAD,0xF5,0x3D,0x51,0xC6,0xF4,0xB7,0x36,0xF4,0x60,0xAA,0xD0,0x6E,0x3A,0x94,0xDC,0x32,0xCB,0x96,0x6C,0x65,0x2B,0x5A,0x1C,0x43,0xA3,0xDA,0xB6,0xEA,0xB9,0x48,0x0F,0x2F,0x27,0x02,0x78,0x41,0x4D,0x03,0x16,0xD0,0x80,0x05,0x14,0x70,0xA5,0xE8,0x03};
const uint8_t spOFF[] PROGMEM ={0x2B,0xD5,0xF5,0xC2,0xD4,0xEB,0x9E,0xCA,0x99,0x6B,0x53,0x5D,0x7A,0x2A,0x53,0x66,0x94,0x33,0xCD,0xAD,0x6E,0x75,0xAB,0xDB,0xB4,0x4E,0xFB,0x1C,0x65,0x4B,0x68,0x80,0x6A,0x33,0x3C,0x60,0x01,0x0F,0x38,0x20,0xDB,0x0C,0x03,0xE4,0x98,0xF6};
const uint8_t spLINE[] PROGMEM ={0x00,0xA1,0xE2,0xEE,0x35,0x25,0xA2,0xA4,0x42,0x98,0xEE,0x81,0x88,0xD3,0x5A,0x65,0xFC,0x13,0xC6,0xF3,0x29,0x8C,0x8D,0x57,0xCC,0x2C,0xA7,0x30,0xB1,0x5E,0xA4,0xD2,0x9C,0xCA,0xE4,0x3E,0xC9,0x4E,0x73,0x2A,0x93,0x7B,0xD4,0xDA,0xCA,0xA9,0x4C,0xEA,0xB6,0x2A,0x2B,0xA7,0xB2,0xA9,0xCB,0x2D,0xAD,0x9C,0x2A,0x84,0x4A,0xB3,0xB0,0x72,0x9A,0x94,0x35,0x55,0x33,0xD6,0x6A,0x63,0xD5,0x90,0xCA,0x58,0xA3,0xCF,0x55,0x4D,0xA2,0x62,0x95,0x31,0x15,0x72,0xA9,0x8E,0x95,0xC7,0x32,0x26,0xAF,0x9C,0x56,0x29,0xCD,0xC8,0x9D,0x46,0x49,0xA5,0x34,0x23,0xB5,0x69,0xE5,0xE5,0xC8,0x8D,0x3E,0xA9,0xAA,0x76,0xCA,0x07,0x00,0x00};
const uint8_t spI[] PROGMEM ={0x23,0x09,0xDE,0x27,0x82,0xBB,0xED,0xEC,0x16,0xB7,0xBE,0xF5,0x6D,0x4E,0x13,0xB2,0x97,0x5B,0xB4,0xDD,0xDD,0xEA,0x42,0xF6,0x70,0x8F,0x39,0xAD,0x8F,0x85,0xDB,0xBC,0xCB,0x94,0x3E,0x64,0xD5,0x1C,0x0B,0x95,0x07,0x37,0x78,0x27,0xB9,0xA9,0x86,0x4D,0x1F,0x3C,0xD3,0xA4,0x1B,0x96,0x35,0xAF,0xE1,0x01,0x00,0x00};
const uint8_t spNEED[] PROGMEM ={0xA1,0x0B,0x0E,0x3C,0xDB,0xA2,0xE4,0xA6,0x54,0xDE,0x42,0x54,0x59,0xE4,0x55,0x55,0xA5,0x42,0x1D,0x8D,0x4F,0xD1,0x04,0xAB,0x7E,0x87,0xEA,0xD9,0xCC,0x66,0x36,0x8B,0x51,0xB5,0xA0,0x44,0x5B,0x93,0x57,0xBD,0x4A,0x28,0x58,0x3C,0x5D,0xCD,0x6C,0xAE,0xA0,0xF1,0x74,0x76,0xB3,0x2F,0x7D,0x2F,0x2A,0x10,0x79,0xA7,0xF5,0xAD,0x88,0x50,0xC4,0x62,0x31,0x44,0x2F,0x24,0x11,0x8B,0xD8,0x40,0x95,0x57,0xA4,0x3B,0xE1,0x83,0x1B,0x52,0x32,0x15,0xF1,0x45,0x7E,0xF0,0xE3,0x03,0x00,0x00};
const uint8_t spYOU[] PROGMEM ={0xA5,0xDA,0x0D,0x98,0x23,0x6F,0xF4,0x6A,0x55,0x33,0xA9,0x82,0xC6,0xEB,0x91,0xF5,0x68,0x02,0x11,0x5B,0x67,0x36,0x32,0x2B,0xA2,0x24,0x75,0x75,0xCF,0x7B,0xD5,0x9B,0xD6,0x5A,0x61,0xE5,0x49,0xDD,0x6A,0x97,0xFB,0xD8,0xFB,0x5E,0x77,0xA2,0xB3,0x2C,0x45,0x25,0x8D,0x3C,0x00,0x00};
const uint8_t spHERE[] PROGMEM ={0x08,0x08,0xD2,0x88,0x00,0x51,0x29,0x13,0x20,0x5B,0x92,0x94,0x36,0xAF,0x42,0x15,0x6B,0x76,0x32,0xE3,0x1D,0xAF,0xA4,0xE6,0x10,0x48,0xEF,0x3E,0xB3,0x5D,0x8D,0x3A,0xD6,0x32,0x4C,0xF4,0x3E,0xDB,0xDE,0xF5,0x21,0x8D,0x7E,0x9A,0xC8,0x48,0xFE,0x38,0xEA,0x89,0x4F,0x74,0x7A};
//const uint8_t spPRESS[] PROGMEM ={0x04,0xC0,0x36,0x4C,0x01,0x2E,0xA9,0x2B,0xC0,0x36,0xAF,0x16,0xB9,0x22,0xE5,0x96,0xC9,0x6E,0x7A,0x32,0xDF,0x2D,0x2C,0x32,0xCE,0xCE,0x77,0x35,0xDB,0xD4,0x9B,0xE4,0xE5,0xBA,0xB6,0xEC,0xA8,0x80,0xEF,0x45,0x34,0x60,0x01,0x03,0xFC,0x28,0x6A,0x80,0x1F,0x4D,0x15,0xF0,0x15,0x99,0x04,0x38,0x00,0x0F,0x00,0x00};
const uint8_t spFOR[] PROGMEM ={0xC0,0x00,0x23,0x2D,0x24,0xA0,0x01,0x0B,0x58,0x20,0xC5,0xBC,0xF7,0x11,0x4C,0x9A,0x9A,0xA4,0x84,0xF6,0x39,0x85,0x6E,0x97,0x93,0x98,0x84,0x8C,0xF5,0x5E,0x45,0xCD,0xDE,0x2A,0x91,0x63,0xD2,0x58,0x7D,0x6B,0x55,0xB1,0xF2,0x26,0xED,0xA9,0xE7,0xDB,0xC2,0x4B,0xFC,0xBA,0x49,0x2E,0x89,0x55,0xF4,0xE3,0x66,0xB5,0x95,0xAB,0xCC,0xBB,0x9B,0xED,0x30,0xF6,0x11,0x35,0x76,0x7B,0x00,0x00};
const uint8_t spHELP[] PROGMEM ={0x08,0xB0,0x4E,0x94,0x00,0x21,0xA8,0x09,0x20,0x66,0xF1,0x96,0xC5,0x66,0xC6,0x54,0x96,0x47,0xEC,0xAA,0x05,0xD9,0x46,0x3B,0x71,0x94,0x51,0xE9,0xD4,0xF9,0xA6,0xB7,0x18,0xB5,0x35,0xB5,0x25,0xA2,0x77,0xB6,0xA9,0x97,0xB1,0xD7,0x85,0xF3,0xA8,0x81,0xA5,0x6D,0x55,0x4E,0x0D,0x00,0xC0,0x00,0x1B,0x3D,0x30,0x00,0x0F};
const uint8_t spAGAIN[] PROGMEM ={0x08,0xD0,0xD1,0xBD,0x55,0xAE,0xA7,0x73,0x54,0xAD,0x53,0xC5,0x18,0xE1,0xA2,0x4B,0x4F,0x9D,0x42,0xA8,0x89,0x76,0x6D,0xB5,0xB7,0x22,0x21,0xE9,0xAD,0x36,0xB3,0x1D,0x4D,0xB1,0x22,0xAE,0x97,0xA4,0xE7,0x23,0x2B,0x89,0x5D,0x63,0x92,0xEC,0x6C,0xA7,0x23,0x2D,0xD5,0x42,0x74,0x14,0xCF,0x6C,0xE4,0xA9,0x45,0x08,0x8D,0xE3,0x5D,0xEF,0x66,0xB4,0xB1,0x67,0xB2,0x66,0xE2,0xD9,0x8F,0x3E,0x8C,0x08,0xF2,0x8C,0x1B,0x06,0xE9,0xA5,0xCC,0x46,0xB6,0x1F,0xEC,0x20,0x07,0x34,0xD0,0x10,0x99,0xDA,0x92,0x1E,0x00,0x00};
const uint8_t spAND[] PROGMEM ={0xA1,0xC8,0xD3,0x4C,0xBC,0x22,0xCF,0x62,0xE4,0x65,0x99,0xB3,0x4E,0x9C,0x9B,0xCD,0xAC,0x65,0x65,0x78,0x32,0x77,0xE2,0x96,0x97,0x58,0x2A,0x66,0xB3,0x5B,0x95,0x53,0xB1,0x9A,0x4D,0x69,0x75,0x2A,0x69,0xA2,0x3A,0xA7,0x35,0x31,0x97,0x91,0xD9,0xAC,0xD4,0x25,0x5F,0x85,0x2E,0xB3,0x43,0xAF,0x83,0x9A,0x9A,0xD7,0x76,0xBD,0x0A,0x5C,0x62,0xE3,0xC0,0xF5,0x32,0x70,0x89,0x77,0x2C,0xD3,0x4B,0x47,0x6D,0x3A,0xB1,0xD4,0xA0,0x2D,0xAE,0xD9,0x44,0x92,0x23,0x9F,0xC2,0x54,0x94,0x8B,0x78,0x6C,0xD0,0xA3,0x18,0x52,0x4C,0x75,0xCD,0x5A,0x0F};
const uint8_t spNO[] PROGMEM ={0xA1,0xF2,0x0E,0x3E,0xD3,0xA9,0x94,0x3A,0x78,0xB8,0xA8,0xA0,0x93,0x6A,0xEF,0xE0,0xA3,0x9C,0xF1,0xAA,0xA2,0xE7,0x32,0xF3,0x24,0xA7,0xB0,0xDE,0xDB,0xDC,0xDB,0xDC,0xFC,0xE6,0x37,0x5F,0x95,0xF2,0xB9,0x61,0xD4,0x65,0x57,0xBB,0x6E,0x2D,0x8F,0xB3,0x6A,0xD4,0xA5,0x76,0xB5,0x0F,0x3D,0xDD,0x1B,0xAA,0x92,0xC8,0xF7,0x0F,0x00,0x00};
//const uint8_t spLINE[] PROGMEM ={0x00,0xA1,0xE2,0xEE,0x35,0x25,0xA2,0xA4,0x42,0x98,0xEE,0x81,0x88,0xD3,0x5A,0x65,0xFC,0x13,0xC6,0xF3,0x29,0x8C,0x8D,0x57,0xCC,0x2C,0xA7,0x30,0xB1,0x5E,0xA4,0xD2,0x9C,0xCA,0xE4,0x3E,0xC9,0x4E,0x73,0x2A,0x93,0x7B,0xD4,0xDA,0xCA,0xA9,0x4C,0xEA,0xB6,0x2A,0x2B,0xA7,0xB2,0xA9,0xCB,0x2D,0xAD,0x9C,0x2A,0x84,0x4A,0xB3,0xB0,0x72,0x9A,0x94,0x35,0x55,0x33,0xD6,0x6A,0x63,0xD5,0x90,0xCA,0x58,0xA3,0xCF,0x55,0x4D,0xA2,0x62,0x95,0x31,0x15,0x72,0xA9,0x8E,0x95,0xC7,0x32,0x26,0xAF,0x9C,0x56,0x29,0xCD,0xC8,0x9D,0x46,0x49,0xA5,0x34,0x23,0xB5,0x69,0xE5,0xE5,0xC8,0x8D,0x3E,0xA9,0xAA,0x76,0xCA,0x07,0x00,0x00};
const uint8_t spON[] PROGMEM ={0xA7,0x36,0x7E,0xC6,0xD9,0x97,0x9E,0xC2,0xA4,0x2D,0xA5,0x4E,0x7A,0xAB,0x5B,0xED,0x6A,0x57,0xBB,0x9E,0xCD,0x68,0x75,0x4F,0x37,0x2F,0xBB,0xBD,0x2B,0x9D,0x6E,0x91,0xE6,0xE5,0xD8,0xF4,0xD2,0x49,0xB1,0x8D,0x1B,0xDB,0x99,0x4E,0x3A,0x69,0xB1,0x71,0xAC,0x3A,0x1E,0xB4,0x42,0xC7,0x76,0xE8,0x02,0x77,0x35,0xD7,0xC6,0xAE,0x0B,0x29,0x0C,0x31,0x5D,0x22,0x40,0x57,0xE2,0x07,0x00,0x00};
const uint8_t spNOW[] PROGMEM ={0xA9,0x4D,0x9A,0xCD,0x9C,0xDB,0xD6,0xF6,0xD4,0xC9,0x77,0xAA,0x79,0x95,0x5B,0xDF,0xFA,0xD6,0xB7,0xB9,0xED,0xE8,0x9D,0xDF,0x66,0xF3,0xDA,0x7D,0x48,0x83,0x9C,0x15,0xE2,0x96,0x38,0x0E,0x69,0x50,0x65,0x83,0xDC,0x93,0xB8,0x51,0x86,0x1D,0x0C,0x73,0xEC,0x46,0xE9,0x7A,0xCD,0x58,0x96,0x19,0xB5,0xC9,0x54,0x61,0x37,0x6A,0xF0,0x3E,0xD2,0x85,0x64,0x3D,0x00,0x00};
const uint8_t spBACK[] PROGMEM ={0xA7,0x4D,0x59,0xCB,0x39,0xD6,0x9D,0x21,0x54,0x6D,0x93,0xCE,0x76,0x86,0x54,0xAD,0xCD,0x3A,0xED,0xED,0x6F,0x77,0xDB,0xDB,0xDE,0x2A,0x17,0x00,0x08,0xD0,0xC2,0x44,0x01,0x21,0x8B,0x0A,0x20,0x79,0x27,0x04,0xB8,0x28,0xFC};
const uint8_t spGET[] PROGMEM ={0xA3,0xAE,0x4A,0xD5,0xC0,0xB4,0xAC,0xB4,0x26,0x17,0xF1,0x58,0xB2,0xF2,0x98,0x2D,0x25,0x72,0xF4,0x2E,0x76,0xB1,0xAB,0x5D,0xCD,0xBA,0x34,0xAE,0x6A,0x58,0x76,0x69,0xDF,0x02,0x00,0x28,0xA0,0xAA,0x30,0x02,0x48,0x6F,0x06,0x0F,0x00,0x00};
void setup() {
// put your setup code here, to run once:
CircuitPlayground.begin();
Serial.begin(50);
}
void loop() {
value = CircuitPlayground.soundSensor();
float x = CircuitPlayground.motionX();
float y = CircuitPlayground.motionY();
// Use the magnitude of acceleration to interpolate the mouse velocity.
float x_mag = abs(x);
leftButtonPressed = CircuitPlayground.leftButton();
rightButtonPressed = CircuitPlayground.rightButton();
if (!rightButtonPressed & !leftButtonPressed) {
Serial.println("Get back online, now!");
CircuitPlayground.setPixelColor(2,0,100,0);
CircuitPlayground.setPixelColor(7,0,100,0);
CircuitPlayground.speaker.say(spGET);
CircuitPlayground.speaker.say(spBACK);
CircuitPlayground.speaker.say(spON);
CircuitPlayground.speaker.say(spLINE);
CircuitPlayground.speaker.say(spNOW);
delay(200);
CircuitPlayground.clearPixels();
}
// Another idea
/*else if ((CircuitPlayground.readCap(1, CAP_SAMPLES) <= CAP_THRESHOLD) || (CircuitPlayground.readCap(12, CAP_SAMPLES) <= CAP_THRESHOLD)){
CircuitPlayground.setPixelColor(3,50,100,100);
CircuitPlayground.setPixelColor(6,50,100,100);
Serial.println("No talking! That's prohibited offline behavior.");
delay(300);
CircuitPlayground.clearPixels();
}*/
else if (value < 400 & x_mag < 8 & x_mag > 4) {
Serial.println("yay");
delay(200);
}
else if (value > 400) {
Serial.print("Sound: ");
Serial.print(value);
delay(100);
Serial.println("Do NOT say words off line");
CircuitPlayground.setPixelColor(9,100,1,0);
CircuitPlayground.setPixelColor(0,100,1,0);
delay(300);
}
else if ( x_mag > 8 || x_mag < 4){
Serial.print("angle: ");
Serial.println(x_mag);
Serial.println(" Look at ME! I need you here...");
CircuitPlayground.setPixelColor(5,0,1,100);
CircuitPlayground.setPixelColor(4,0,1,100);
delay(500);
CircuitPlayground.clearPixels();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment