94 lines
4.7 KiB
C
94 lines
4.7 KiB
C
|
// Pin selections here are based on the original Adafruit Learning System
|
||
|
// guide for the Teensy 3.x project. Some of these pin numbers don't even
|
||
|
// exist on the smaller SAMD M0 & M4 boards, so you may need to make other
|
||
|
// selections:
|
||
|
|
||
|
// GRAPHICS SETTINGS (appearance of eye) -----------------------------------
|
||
|
|
||
|
// If using a SINGLE EYE, you might want this next line enabled, which
|
||
|
// uses a simpler "football-shaped" eye that's left/right symmetrical.
|
||
|
// Default shape includes the caruncle, creating distinct left/right eyes.
|
||
|
|
||
|
//#define SYMMETRICAL_EYELID
|
||
|
|
||
|
// Enable ONE of these #includes -- HUGE graphics tables for various eyes:
|
||
|
#include "data/defaultEye.h" // Standard human-ish hazel eye -OR-
|
||
|
//#include "data/dragonEye.h" // Slit pupil fiery dragon/demon eye -OR-
|
||
|
//#include "data/noScleraEye.h" // Large iris, no sclera -OR-
|
||
|
//#include "data/goatEye.h" // Horizontal pupil goat/Krampus eye -OR-
|
||
|
//#include "data/newtEye.h" // Eye of newt -OR-
|
||
|
//#include "data/terminatorEye.h" // Git to da choppah!
|
||
|
//#include "data/catEye.h" // Cartoonish cat (flat "2D" colors)
|
||
|
//#include "data/owlEye.h" // Minerva the owl (DISABLE TRACKING)
|
||
|
//#include "data/naugaEye.h" // Nauga googly eye (DISABLE TRACKING)
|
||
|
//#include "data/doeEye.h" // Cartoon deer eye (DISABLE TRACKING)
|
||
|
|
||
|
// DISPLAY HARDWARE SETTINGS (screen type & connections) -------------------
|
||
|
#define TFT_COUNT 1 // Number of screens (1 or 2)
|
||
|
#define TFT1_CS -1 // TFT 1 chip select pin (set to -1 to use TFT_eSPI setup)
|
||
|
#define TFT2_CS -1 // TFT 2 chip select pin (set to -1 to use TFT_eSPI setup)
|
||
|
#define TFT_1_ROT 1 // TFT 1 rotation
|
||
|
#define TFT_2_ROT 1 // TFT 2 rotation
|
||
|
#define EYE_1_XPOSITION 0 // x shift for eye 1 image on display
|
||
|
#define EYE_2_XPOSITION 320 - 128 // x shift for eye 2 image on display
|
||
|
|
||
|
#define DISPLAY_BACKLIGHT -1 // Pin for backlight control (-1 for none)
|
||
|
#define BACKLIGHT_MAX 255
|
||
|
|
||
|
// EYE LIST ----------------------------------------------------------------
|
||
|
#define NUM_EYES 2 // Number of eyes to display (1 or 2)
|
||
|
|
||
|
#define BLINK_PIN -1 // Pin for manual blink button (BOTH eyes)
|
||
|
#define LH_WINK_PIN -1 // Left wink pin (set to -1 for no pin)
|
||
|
#define RH_WINK_PIN -1 // Right wink pin (set to -1 for no pin)
|
||
|
|
||
|
// This table contains ONE LINE PER EYE. The table MUST be present with
|
||
|
// this name and contain ONE OR MORE lines. Each line contains THREE items:
|
||
|
// a pin number for the corresponding TFT/OLED display's SELECT line, a pin
|
||
|
// pin number for that eye's "wink" button (or -1 if not used), a screen
|
||
|
// rotation value (0-3) and x position offset for that eye.
|
||
|
|
||
|
#if (NUM_EYES == 2)
|
||
|
eyeInfo_t eyeInfo[] = {
|
||
|
{ TFT1_CS, LH_WINK_PIN, TFT_1_ROT, EYE_1_XPOSITION }, // LEFT EYE chip select and wink pins, rotation and offset
|
||
|
{ TFT2_CS, RH_WINK_PIN, TFT_2_ROT, EYE_2_XPOSITION }, // RIGHT EYE chip select and wink pins, rotation and offset
|
||
|
};
|
||
|
#else
|
||
|
eyeInfo_t eyeInfo[] = {
|
||
|
{ TFT1_CS, LH_WINK_PIN, TFT_1_ROT, EYE_1_XPOSITION }, // EYE chip select and wink pins, rotation and offset
|
||
|
};
|
||
|
#endif
|
||
|
|
||
|
// INPUT SETTINGS (for controlling eye motion) -----------------------------
|
||
|
|
||
|
// JOYSTICK_X_PIN and JOYSTICK_Y_PIN specify analog input pins for manually
|
||
|
// controlling the eye with an analog joystick. If set to -1 or if not
|
||
|
// defined, the eye will move on its own.
|
||
|
// IRIS_PIN speficies an analog input pin for a photocell to make pupils
|
||
|
// react to light (or potentiometer for manual control). If set to -1 or
|
||
|
// if not defined, the pupils will change on their own.
|
||
|
// BLINK_PIN specifies an input pin for a button (to ground) that will
|
||
|
// make any/all eyes blink. If set to -1 or if not defined, the eyes will
|
||
|
// only blink if AUTOBLINK is defined, or if the eyeInfo[] table above
|
||
|
// includes wink button settings for each eye.
|
||
|
|
||
|
//#define JOYSTICK_X_PIN A0 // Analog pin for eye horiz pos (else auto)
|
||
|
//#define JOYSTICK_Y_PIN A1 // Analog pin for eye vert position (")
|
||
|
//#define JOYSTICK_X_FLIP // If defined, reverse stick X axis
|
||
|
//#define JOYSTICK_Y_FLIP // If defined, reverse stick Y axis
|
||
|
#define TRACKING // If defined, eyelid tracks pupil
|
||
|
#define AUTOBLINK // If defined, eyes also blink autonomously
|
||
|
|
||
|
// #define LIGHT_PIN -1 // Light sensor pin
|
||
|
#define LIGHT_CURVE 0.33 // Light sensor adjustment curve
|
||
|
#define LIGHT_MIN 0 // Minimum useful reading from light sensor
|
||
|
#define LIGHT_MAX 1023 // Maximum useful reading from sensor
|
||
|
|
||
|
#define IRIS_SMOOTH // If enabled, filter input from IRIS_PIN
|
||
|
#if !defined(IRIS_MIN) // Each eye might have its own MIN/MAX
|
||
|
#define IRIS_MIN 90 // Iris size (0-1023) in brightest light
|
||
|
#endif
|
||
|
#if !defined(IRIS_MAX)
|
||
|
#define IRIS_MAX 130 // Iris size (0-1023) in darkest light
|
||
|
#endif
|