@MichaelM - did you see post #103
It has a zip that I just see as missed reply post @KurtE answered for two 240x240 ST7789's for T4 …
But 1.8.10 w/1.48b1 locks up (PIT issues) with that and @mjs513 7789_rewrite, and 1.8.9 w/1.47 gives a redef PROGMEM error
@MichaelM - did you see post #103
It has a zip that I just see as missed reply post @KurtE answered for two 240x240 ST7789's for T4 …
But 1.8.10 w/1.48b1 locks up (PIT issues) with that and @mjs513 7789_rewrite, and 1.8.9 w/1.47 gives a redef PROGMEM error
@defragster - @MichaelM
Not sure if you saw the @manitou's post #71 where there are a couple of quick fixes for the PIT issue.
Just compiled @KurtE's async sketch with 1.8.10/1.48B1 without the redef PROGMEM error.
Just for ref haven't tested uncanny on 240x240 st7789's but they should work without a problem on the T4.
@defragster - @MichaelM
Not sure if you saw the @manitou's post #71 where there are a couple of quick fixes for the PIT issue.
Just compiled @KurtE's async sketch with 1.8.10/1.48B1 without the redef PROGMEM error.
Just for ref haven't tested uncanny on 240x240 st7789's but they should work without a problem on the T4.
Yes, saw the fix for PIT issue for reference - but wasn't sure I wasn't going down a rabbit hole with the other error and it was late …
Note sure what '@KurtE's async sketch' is for source?
Shortened the name From: uncannyEyes_async_st7735-190827a.zip to @KurtE's async sketch
@defragster - @MichaelM
Not sure if you saw the @manitou's post #71 where there are a couple of quick fixes for the PIT issue.
Just compiled @KurtE's async sketch with 1.8.10/1.48B1 without the redef PROGMEM error.
Just for ref haven't tested uncanny on 240x240 st7789's but they should work without a problem on the T4.
IOMUXC_GPR_GPR17:aaaaaaaf IOMUXC_GPR_GPR16:7 IOMUXC_GPR_GPR14:aa0000
Initial Stack pointer: 20070000
ITCM allocated: 65536 DTCM allocated: 458752
ITCM init range: 0 - 9a40 Count: 39488
DTCM init range: 20000000 - 20001b20 Count: 6944
DTCM cleared range: 20001b20 - 200042c0 Count: 10144
Now fill rest of DTCM with known pattern
/home/meissner/Arduino/teensy-eyes/uncannyEyes_async_st7735/uncannyEyes_async_st7735.ino Sep 23 2019 09:49:06
Init
Create display #0
ST7789_t3::init mode: 8
Init ST77xx display #0
Rotate
done
Display logo
$0: Using Frame buffer
420 : 141 55775 0: 108 0: 456
Long wait
0 : updateScreenAsync FAILED
Long wait
424 : 140 56173 0: 108 0: 465
0 : updateScreenAsync FAILED
Long wait
394 : 147 53498 0: 103 0: 479
0 : updateScreenAsync FAILED
Long wait
//#define SERIAL_tt Serial // Send debug_tt output here. Must have SERIAL_tt.begin( ## )
//#include "debug_tt.h"
// 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.
// Otherwise your choice, standard is asymmetrical
#define SYMMETRICAL_EYELID
#define SINGLE_EYE // temporarily disable 2nd eye
// Enable ONE of these #includes -- HUGE graphics tables for various eyes:
#ifdef USE_ST7789
#include "graphics/default_large.h" // 240x240
#else
#include "graphics/defaultEye.h" // Standard human-ish hazel eye -OR-
//#include "graphics/dragonEye.h" // Slit pupil fiery dragon/demon eye -OR-
//#include "graphics/noScleraEye.h" // Large iris, no sclera -OR-
//#include "graphics/goatEye.h" // Horizontal pupil goat/Krampus eye -OR-
//#include "graphics/newtEye.h" // Eye of newt -OR-
//#include "graphics/terminatorEye.h" // Git to da choppah!
//#include "graphics/catEye.h" // Cartoonish cat (flat "2D" colors)
//#include "graphics/owlEye.h" // Minerva the owl (DISABLE TRACKING)
//#include "graphics/naugaEye.h" // Nauga googly eye (DISABLE TRACKING)
//#include "graphics/doeEye.h" // Cartoon deer eye (DISABLE TRACKING)
//#include "graphics/Nebula.h" //Dont work
//#include "graphics/MyEyeHuman1.h"
//#include "graphics/Human-HAL9000.h"
//#include "graphics/NebulaBlueGreen.h"
//#include "graphics/SpiralGalaxy.h"
//#include "graphics/ChameleonX_Eye.h" //no work
//#include "graphics/MyEye.h"
#endif
// Optional: enable this line for startup logo (screen test/orient):
#if !defined(ADAFRUIT_HALLOWING) // Hallowing can't always fit logo+eye
#include "graphics/logo.h" // Otherwise your choice, if it fits
#endif
// EYE LIST ----------------------------------------------------------------
// DISPLAY HARDWARE SETTINGS (screen type & connections) -------------------
//#define TFT_SPI SPI
//#define TFT_PERIPH PERIPH_SPI
// Enable ONE of these #includes to specify the display type being used
#include <ST7735_t3.h> // TFT display library (enable one only)
#define SPI_FREQ 48000000 // TFT: use max SPI (clips to 12 MHz on M0)
// 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), and a screen
// rotation value (0-3) for that eye.
eyeInfo_t eyeInfo[] = {
#ifdef ST77XX_ON_SPI_SPI2
//CS DC MOSI SCK RST WINK ROT INIT
// Going to try to NO CS displays.
{-1, 9, 11, 13, 8, -1, 0, INITR_144GREENTAB }, // LEFT EYE display-select and wink pins, no rotation
#ifndef SINGLE_EYE
{-1, 36, 35, 37, 39, -1, 0, INITR_144GREENTAB }, // RIGHT EYE display-select and wink pins, no rotation
#endif
#else
#ifndef SINGLE_EYE
{0, 2, 26, 27, 3, -1, 0, INITR_144GREENTAB }, // RIGHT EYE display-select and wink pins, no rotation
#endif
{10, 9, 11, 13, 8, -1, 0, INITR_144GREENTAB }, // LEFT EYE display-select and wink pins, no rotation
#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 BLINK_PIN 1 // Pin for manual blink button (BOTH eyes)
//#define LIGHT_PIN A2 // Photocell or potentiometer (else auto iris)
//#define LIGHT_PIN_FLIP // If defined, reverse reading from dial/photocell
//#define LIGHT_MIN 0 // Lower reading from sensor
//#define LIGHT_MAX 1023 // Upper 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 120 // Iris size (0-1023) in brightest light
#endif
#if !defined(IRIS_MAX)
#define IRIS_MAX 720 // Iris size (0-1023) in darkest light
#endif
{-1, 9, 11, 13, 8, -1, 0 }
@MichaelMeissner
The 7789's I have are the one's with CS pins not without. Let me hook my up and see what happens - I do have them without the CS pin just have to solder the other one up. You may have to download Kurt's latest changes to the 7735_t3 library:
https://github.com/KurtE/ST7735_t3/tree/T4_DMA_LOW
@KurtE
With your latest DMA changes getting some very strange results with the 7789 with no CS pin - its only displaying to a smaller area on the screen like its set for 160x160? Then if I do a rotation test it rotates that block but leaves the previous blocks.
EDIT: I am using tft.init(240,240, SPI_MODE2)
No problem. Have fun with the dogs...@MichaelMeissner @mjs513 ...
Sorry I was out of town this weekend and have not kept up with all that is going on... Just got back, now to play with dogs, ...
ST7789_t3 tft = ST7789_t3(-1, 3, 26, 27, 4);
ST7789_t3 tft1 = ST7789_t3(-1, 10, 12);
// …
void setup()
// ...
tft.init(240,240, SPI_MODE2) ; // use for ST7789 without CS)
tft1.init(240,240, SPI_MODE2) ; // use for ST7789 without CS)
I am close to seeing if it works. I got the ST7735_t3_multiple.ino coded to work on my SPI0 / SPI1 system with NO_CS 7789's:
Code:ST7789_t3 tft = ST7789_t3(-1, 3, 26, 27, 4); ST7789_t3 tft1 = ST7789_t3(-1, 10, 12); // … void setup() // ... tft.init(240,240, SPI_MODE2) ; // use for ST7789 without CS) tft1.init(240,240, SPI_MODE2) ; // use for ST7789 without CS)
Had it working on another sketch already - tracked the pin #'s - and wires to setup the eyeInfo[] …
Do I put SPI_MODE2 in for INITR_144GREENTAB?
eyeInfo_t eyeInfo[] = {
//CS DC MOSI SCK RST WINK ROT INIT
{-1, 10, 11, 13, 12, -1, 2, SPI_MODE2 }, // LEFT EYE display-select and wink pins, no rotation
{-1, 3, 26, 27, 4, -1, 2, SPI_MODE2 }, // RIGHT EYE display-select and wink pins, no rotation
Glad you confirmed it working - my second display I think is dead have to do some troubleshooting on it in the morning.Left eye working - had to go rotate 2 as it was downside up
Right eye blank until I did Rotate 2
>> Seems there is a rectangle around the iris when the pupil is closed - when pupil shows the iris square goes away. Both eyes.
Both working in SYNC - Adafruit logo splits across matching edges:
Code:eyeInfo_t eyeInfo[] = { //CS DC MOSI SCK RST WINK ROT INIT {-1, 10, 11, 13, 12, -1, 2, SPI_MODE2 }, // LEFT EYE display-select and wink pins, no rotation {-1, 3, 26, 27, 4, -1, 2, SPI_MODE2 }, // RIGHT EYE display-select and wink pins, no rotation
Crosspost update :: indeed it works the same with :: INITR_144GREENTAB
Glad you confirmed it working - my second display I think is dead have to do some troubleshooting on it in the morning.
{-1, 10, 11, 13, 12, -1, 0, INITR_144GREENTAB }, // LEFT EYE display-select and wink pins, no rotation
{-1, 3, 26, 27, 4, -1, 0, INITR_144GREENTAB }, // RIGHT EYE display-select and wink pins, no rotation
Left eye working - had to go rotate 2 as it was downside up
Right eye blank until I did Rotate 2
>> Seems there is a rectangle around the iris when the pupil is closed - when pupil shows the iris square goes away. Both eyes.
#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 500 // Iris size (0-1023) in brightest light
#endif
#if !defined(IRIS_MAX)
#define IRIS_MAX 700// Iris size (0-1023) in darkest light
#endif
Well looks like my second 7789(noCS) is dead but was playing around with Iris settings to see where the box would disappear (yes it was annoying me as well) - these seem to work
Code:#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 500 // Iris size (0-1023) in brightest light #endif #if !defined(IRIS_MAX) #define IRIS_MAX 700// Iris size (0-1023) in darkest light #endif
Hmmm, that doesn't seem to help me (currently using the Adafruit display). I did define LIGHT_PIN (and LIGHT_MIN/LIGHT_MAX), and put a pot that I cranked up as high as possible. Once the iris was scaled up to the max. it wouldn't change size, or create the frame.