From 7517167074fedb23067f9cd8bf2fcc74af0153a6 Mon Sep 17 00:00:00 2001 From: Liz Date: Thu, 20 Apr 2023 15:55:23 -0400 Subject: [PATCH 1/3] Adding PicoDVI to deps Adding the PicoDVI - Adafruit Fork to the library.deps file --- library.deps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library.deps b/library.deps index ca0c93816..c0559d768 100644 --- a/library.deps +++ b/library.deps @@ -1 +1 @@ -depends=Adafruit ILI9341, Adafruit BusIO, SD, Adafruit NeoPixel, Adafruit VS1053 Library, Adafruit BluefruitLE nRF51, Adafruit seesaw Library, Ethernet, Adafruit IO Arduino, FastLED, Adafruit LiquidCrystal, Adafruit SoftServo, TinyWireM, Adafruit AM radio library, WaveHC, Adafruit LED Backpack Library, MAX31850 OneWire, Adafruit VC0706 Serial Camera Library, RTClib, Adafruit SleepyDog Library, Adafruit Thermal Printer Library, Adafruit Zero I2S Library, Adafruit EPD, Adafruit SSD1351 library, Adafruit FONA Library, Adafruit Motor Shield V2 Library, Adafruit NeoMatrix, Adafruit Soundboard library, Adafruit Circuit Playground, ArduinoJson, Adafruit TCS34725, Adafruit Pixie, Adafruit GPS Library, TinyGPS, WiFi101, Adafruit DotStar, Adafruit Si7021 Library, Adafruit WS2801 Library, Mouse, Keyboard, Time, IRremote, Adafruit LSM9DS0 Library, Adafruit Arcada Library, MIDIUSB, PubSubClient, Adafruit LIS2MDL, Adafruit NeoPXL8, Adafruit MCP23017 Arduino Library, Adafruit MLX90640, LiquidCrystal, Adafruit NeoTrellis M4 Library, RGB matrix Panel, Adafruit MLX90614 Library, Adafruit RGB LCD Shield Library, MAX6675 library, Adafruit MP3, Adafruit Keypad, Adafruit Arcada GifDecoder, Keypad, Neosegment, Encoder, Adafruit TiCoServo, Adafruit Trellis Library, FauxmoESP, Adafruit LSM303 Accel, Adafruit LSM303DLH Mag, Adafruit LSM303DLHC, CapacitiveSensor, Adafruit Zero PDM Library, Adafruit DMA neopixel library, elapsedMillis, DST RTC, Adafruit SHARP Memory Display, Adafruit SPIFlash, BSEC Software Library@1.6.1480, WiiChuck, Adafruit DPS310, Adafruit AHTX0, RotaryEncoder, Adafruit MCP9808 Library, LSM303, Adafruit Protomatter, Adafruit IS31FL3741 Library, Sensirion I2C SCD4x, Adafruit TestBed, Bounce2, Adafruit AHRS, Adafruit DRV2605 Library, STM32duino VL53L4CD +depends=Adafruit ILI9341, Adafruit BusIO, SD, Adafruit NeoPixel, Adafruit VS1053 Library, Adafruit BluefruitLE nRF51, Adafruit seesaw Library, Ethernet, Adafruit IO Arduino, FastLED, Adafruit LiquidCrystal, Adafruit SoftServo, TinyWireM, Adafruit AM radio library, WaveHC, Adafruit LED Backpack Library, MAX31850 OneWire, Adafruit VC0706 Serial Camera Library, RTClib, Adafruit SleepyDog Library, Adafruit Thermal Printer Library, Adafruit Zero I2S Library, Adafruit EPD, Adafruit SSD1351 library, Adafruit FONA Library, Adafruit Motor Shield V2 Library, Adafruit NeoMatrix, Adafruit Soundboard library, Adafruit Circuit Playground, ArduinoJson, Adafruit TCS34725, Adafruit Pixie, Adafruit GPS Library, TinyGPS, WiFi101, Adafruit DotStar, Adafruit Si7021 Library, Adafruit WS2801 Library, Mouse, Keyboard, Time, IRremote, Adafruit LSM9DS0 Library, Adafruit Arcada Library, MIDIUSB, PubSubClient, Adafruit LIS2MDL, Adafruit NeoPXL8, Adafruit MCP23017 Arduino Library, Adafruit MLX90640, LiquidCrystal, Adafruit NeoTrellis M4 Library, RGB matrix Panel, Adafruit MLX90614 Library, Adafruit RGB LCD Shield Library, MAX6675 library, Adafruit MP3, Adafruit Keypad, Adafruit Arcada GifDecoder, Keypad, Neosegment, Encoder, Adafruit TiCoServo, Adafruit Trellis Library, FauxmoESP, Adafruit LSM303 Accel, Adafruit LSM303DLH Mag, Adafruit LSM303DLHC, CapacitiveSensor, Adafruit Zero PDM Library, Adafruit DMA neopixel library, elapsedMillis, DST RTC, Adafruit SHARP Memory Display, Adafruit SPIFlash, BSEC Software Library@1.6.1480, WiiChuck, Adafruit DPS310, Adafruit AHTX0, RotaryEncoder, Adafruit MCP9808 Library, LSM303, Adafruit Protomatter, Adafruit IS31FL3741 Library, Sensirion I2C SCD4x, Adafruit TestBed, Bounce2, Adafruit AHRS, Adafruit DRV2605 Library, STM32duino VL53L4CD, PicoDVI - Adafruit Fork From 2220e3d668a0d0c36948354c0a4ab74a1cd28d76 Mon Sep 17 00:00:00 2001 From: Liz Date: Fri, 21 Apr 2023 11:42:41 -0400 Subject: [PATCH 2/3] updating eyespi test to use const char Updating EYESPI test to use const char to comply with new release of espressif BSP --- EYESPI/Arduino/Color/EYESPI_Test/EYESPI_Test.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EYESPI/Arduino/Color/EYESPI_Test/EYESPI_Test.ino b/EYESPI/Arduino/Color/EYESPI_Test/EYESPI_Test.ino index afc929e1f..3796384ee 100644 --- a/EYESPI/Arduino/Color/EYESPI_Test/EYESPI_Test.ino +++ b/EYESPI/Arduino/Color/EYESPI_Test/EYESPI_Test.ino @@ -565,7 +565,7 @@ void show_canvas() { display.setFont(&FreeSansBold18pt7b); // Use a custom font display.setTextSize(1); // and reset to 1:1 scale - char *label[] = { "X:", "Y:", "Z:" }; // Labels for each axis + const char *label[] = { "X:", "Y:", "Z:" }; // Labels for each axis const uint16_t color[] = { 0xF800, 0x07E0, 0x001F }; // Colors for each value // To get the labels right-aligned, one option would be simple trial and From 1469ec39ed86f6ee0f37b702decc0a70ab28cd26 Mon Sep 17 00:00:00 2001 From: Liz Date: Mon, 24 Apr 2023 14:37:08 -0400 Subject: [PATCH 3/3] adding code for video synth --- .../.feather_rp2040.test.only | 0 .../Feather_DVI_Arduino_Video_Synth.ino | 732 ++++++++++++++++++ 2 files changed, 732 insertions(+) create mode 100644 Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/.feather_rp2040.test.only create mode 100644 Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth.ino diff --git a/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/.feather_rp2040.test.only b/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/.feather_rp2040.test.only new file mode 100644 index 000000000..e69de29bb diff --git a/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth.ino b/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth.ino new file mode 100644 index 000000000..8a04aa373 --- /dev/null +++ b/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth/Feather_DVI_Arduino_Video_Synth.ino @@ -0,0 +1,732 @@ +// SPDX-FileCopyrightText: 2023 Liz Clark for Adafruit Industries +// SPDX-License-Identifier: MIT + +#include + +DVIGFX16 display(DVI_RES_320x240p60, adafruit_feather_dvi_cfg); + +// colors +#define BLACK 0x0000 +#define BLUE 0x001F +#define RED 0xF800 +#define GREEN 0x07E0 +#define CYAN 0x07FF +#define MAGENTA 0xF81F +#define YELLOW 0xFFE0 +#define WHITE 0xFFFF + +// button and led pins +const int indexPin = 5; +const int ledPin = 6; +const int shebangPin = 9; +const int shebangLed = 10; + +//pot pins +int pot0 = A0; +int pot1 = A3; +int pot2 = A2; +int pot3 = A1; + +int potVal0; +int potVal1; +int potVal2; +int potVal3; + +#define N_TRI 75 +struct { + int16_t pos[2]; // position (X,Y) + int8_t vel[2]; // velocity (X,Y) +} tri[N_TRI]; + +int h; +int w; + +int synth_index = 0; +int last_r = 0; +int last_smolR = 0; +int last_c = 0; +int radi; +int cir_color; +int triangle_count = 0; +int sunX = 166; +int sunY = 113; + +int index_reading; +bool index_state = false; +bool is_static = false; +bool is_target = false; +bool is_wavylines = false; +bool is_synthwave = false; +bool is_orbits = false; +bool shebang_pressed = false; + +int rate1 = 0; +int rate2 = 100; +int rate3 = 50; +int rate4 = 210; + +int last_i = 121; + +int cycle = 0; + +uint8_t r,g,b; +uint16_t rgb; +uint16_t bgr; +uint16_t brg; +uint16_t gbr; + +float last_x1 = 100; +float last_y1 = 120; +float last_x2 = 100; +float last_y2 = 120; +float last_x3 = 100; +float last_y3 = 120; +float last_x4 = 100; +float last_y4 = 120; + +void setup() { + if (!display.begin()) { // Blink LED if insufficient RAM + pinMode(LED_BUILTIN, OUTPUT); + for (;;) digitalWrite(LED_BUILTIN, (millis() / 500) & 1); + } + + pinMode(indexPin, INPUT_PULLUP); + pinMode(ledPin, OUTPUT); + pinMode(shebangPin, INPUT_PULLUP); + pinMode(shebangLed, OUTPUT); + + w = display.width(); + h = display.height(); + + is_target = true; +} + +void loop() { + index_reading = button_listener(indexPin, ledPin); + + if (synth_index == 0) { + is_orbits = false; + if (is_target == false) { + display.fillScreen(BLACK); + is_target = true; + } + else { + animate_target(); + } + } + + else if (synth_index == 1) { + is_target = false; + if (is_static == false) { + display.fillScreen(BLACK); + begin_triangles(); + } + else { + animate_static(); + } + } + else if (synth_index == 2){ + is_static = false; + if (is_synthwave == false) { + display.fillScreen(BLACK); + begin_synthwave(); + } + else { + animate_synthwave(); + } + } + else if (synth_index == 3){ + is_synthwave = false; + if (is_wavylines == false) { + display.fillScreen(BLACK); + is_wavylines = true; + } + else { + animate_wavylines(); + } + } + else { + is_wavylines = false; + if (is_orbits == false){ + display.fillScreen(BLACK); + draw_stars(5000); + is_orbits = true; + } + else { + animate_orbits(); + } + } + +} + +int shebang_listener(int pin) { + int z = digitalRead(pin); + return z; +} + +int button_listener(int pin, int led) { + int i = digitalRead(pin); + if (i == LOW and index_state == false) { + digitalWrite(led, HIGH); + synth_index++; + if (synth_index > 4) { + synth_index = 0; + } + index_state = true; + delay(200); + } + if (i == HIGH and index_state == true) { + index_state = false; + delay(200); + digitalWrite(led, LOW); + } + return i; +} + +void begin_synthwave() { + sunX = 166; + sunY = 113; + draw_gradient(0, 0, w, 130); + display.fillCircle(sunX, sunY, 65, MAGENTA); + display.fillCircle(sunX, sunY, 60, RED); + display.fillRect(0, 120, w, h, BLUE); + display.drawFastHLine(0, 120, w, WHITE); + + display.drawLine(0, 136, 34, 120, WHITE); + display.drawLine(0, 188, 76, 120, WHITE); + display.drawLine(34, 240, 113, 120, WHITE); + display.drawLine(117, 240, 148, 120, WHITE); + display.drawLine(198, 240, 182, 120, WHITE); + display.drawLine(294, 240, 216, 120, WHITE); + display.drawLine(320, 176, 255, 120, WHITE); + display.drawLine(320, 133, 297, 120, WHITE); + + is_synthwave = true; +} + +void animate_synthwave() { + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + shebang_pressed = true; + for (int i=146; i > 121; i-=2) { + sunY = sunY - 2; + index_reading = button_listener(indexPin, ledPin); + potVal0 = analog_map(pot0, 25, 75); + display.fillCircle(sunX, sunY, 65, MAGENTA); + display.fillCircle(sunX, sunY, 60, RED); + display.fillRect(0, 120, w, h, BLUE); + display.drawFastHLine(0, 120, w, WHITE); + + display.drawFastHLine(0, 120, w, WHITE); + display.drawLine(0, 136, 34, 120, WHITE); + display.drawLine(0, 188, 76, 120, WHITE); + display.drawLine(34, 240, 113, 120, WHITE); + display.drawLine(117, 240, 148, 120, WHITE); + display.drawLine(198, 240, 182, 120, WHITE); + display.drawLine(294, 240, 216, 120, WHITE); + display.drawLine(320, 176, 255, 120, WHITE); + display.drawLine(320, 133, 297, 120, WHITE); + display.drawFastHLine(0, 120, w, WHITE); + display.drawFastHLine(0, last_i, w, BLUE); + display.drawFastHLine(0, i, w, WHITE); + display.drawFastHLine(0, last_i+25, w, BLUE); + display.drawFastHLine(0, i+25, w, WHITE); + display.drawFastHLine(0, last_i+50, w, BLUE); + display.drawFastHLine(0, i+50, w, WHITE); + display.drawFastHLine(0, last_i+75, w, BLUE); + display.drawFastHLine(0, i+75, w, WHITE); + display.drawFastHLine(0, last_i+100, w, BLUE); + display.drawFastHLine(0, i+100, w, WHITE); + last_i = i; + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + } + else { + if (shebang_pressed == true) { + sunX = 166; + sunY = 113; + draw_gradient(0, 0, w, 130); + display.fillCircle(sunX, sunY, 65, MAGENTA); + display.fillCircle(sunX, sunY, 60, RED); + display.fillRect(0, 120, w, h, BLUE); + display.drawFastHLine(0, 120, w, WHITE); + shebang_pressed = false; + } + digitalWrite(shebangLed, LOW); + + for (int i=121; i < 146; i+=2) { + index_reading = button_listener(indexPin, ledPin); + potVal0 = analog_map(pot0, 25, 75); + + display.drawFastHLine(0, 120, w, WHITE); + display.drawLine(0, 136, 34, 120, WHITE); + display.drawLine(0, 188, 76, 120, WHITE); + display.drawLine(34, 240, 113, 120, WHITE); + display.drawLine(117, 240, 148, 120, WHITE); + display.drawLine(198, 240, 182, 120, WHITE); + display.drawLine(294, 240, 216, 120, WHITE); + display.drawLine(320, 176, 255, 120, WHITE); + display.drawLine(320, 133, 297, 120, WHITE); + display.drawFastHLine(0, 120, w, WHITE); + display.drawFastHLine(0, last_i, w, BLUE); + display.drawFastHLine(0, i, w, WHITE); + display.drawFastHLine(0, last_i+25, w, BLUE); + display.drawFastHLine(0, i+25, w, WHITE); + display.drawFastHLine(0, last_i+50, w, BLUE); + display.drawFastHLine(0, i+50, w, WHITE); + display.drawFastHLine(0, last_i+75, w, BLUE); + display.drawFastHLine(0, i+75, w, WHITE); + display.drawFastHLine(0, last_i+100, w, BLUE); + display.drawFastHLine(0, i+100, w, WHITE); + last_i = i; + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + sunX = 166; + sunY = 113; + } +} + +void animate_orbits() { + index_reading = button_listener(indexPin, ledPin); + potVal1 = analog_map(pot1, 1, 8); + potVal2 = analog_map(pot2, 1, 8); + potVal3 = analog_map(pot3, 1, 8); + potVal0 = analog_map(pot0, 1, 8); + int s = shebang_listener(shebangPin); + if (s == HIGH) { + if (shebang_pressed == true) { + display.fillScreen(BLACK); + draw_stars(5000); + shebang_pressed = false; + } + digitalWrite(shebangLed, LOW); + rate1 = rate1 + potVal1; + if (rate1 > 360) { + rate1 = 1; + } + rate2 = rate2 + potVal2; + if (rate2 > 361) { + rate2 = 1; + } + rate3 = rate3 + potVal3; + if (rate3 > 361) { + rate3 = 1; + } + rate4 = rate4 + potVal0; + if (rate4 > 361) { + rate4 = 1; + } + display.fillCircle(160, 120, 20, YELLOW); + display.fillCircle(last_x1, last_y1, 4, 0); + float x1 = sin(2*rate1*2*3.14/100); + float y1 = cos(2*rate1*2*3.14/100); + display.fillCircle(160+45*x1, 120-45*y1, 4, BLUE); + last_x1 = 160+45*x1; + last_y1 = 120-45*y1; + + display.fillCircle(last_x2, last_y2, 10, 0); + float x2 = sin(2*rate2*2*3.14/100); + float y2 = cos(2*rate2*2*3.14/100); + display.fillCircle(160+60*x2, 120-60*y2, 10, RED); + last_x2 = 160+60*x2; + last_y2 = 120-60*y2; + + display.fillCircle(last_x3, last_y3, 8, 0); + float x3 = sin(2*rate3*2*3.14/100); + float y3 = cos(2*rate3*2*3.14/100); + display.fillCircle(160+95*x3, 120-95*y3, 8, MAGENTA); + last_x3 = 160+95*x3; + last_y3 = 120-95*y3; + + display.fillCircle(last_x4, last_y4, 14, 0); + float x4 = sin(2*rate4*2*3.14/100); + float y4 = cos(2*rate4*2*3.14/100); + display.fillCircle(160+150*x4, 120-150*y4, 14, GREEN); + last_x4 = 160+150*x4; + last_y4 = 120-150*y4; + } + else { + digitalWrite(shebangLed, HIGH); + shebang_pressed = true; + int black_hole = 1; + int falling_y1 = last_y1; + int falling_y2 = last_y2; + int falling_y3 = last_y3; + int falling_y4 = last_y4; + for (int i = 0; i < 250; i ++) { + s = shebang_listener(shebangPin); + draw_stars(500); + display.fillCircle(last_x1, falling_y1 + i, 4, BLUE); + display.fillCircle(last_x2, falling_y2 + i, 10, RED); + display.fillCircle(last_x3, falling_y3 + i, 8, MAGENTA); + display.fillCircle(last_x4, falling_y4 + i, 14, GREEN); + display.fillCircle(160, 120, black_hole + i, BLACK); + if (s == HIGH) { + break; + } + millisDelay(50); + } + display.fillScreen(BLACK); + draw_stars(5000); + } + + millisDelay(75); +} + +void begin_triangles() { + for (int i=0; i= display.width())) { + tri[i].vel[0] *= -1; + } + tri[i].pos[1] += tri[i].vel[1]; + if ((tri[i].pos[1] <= 0) || (tri[i].pos[1] >= display.height())) { + tri[i].vel[1] *= -1; + } + } + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + triangle_count = N_TRI; + clear_static(); + } + else { + digitalWrite(shebangLed, LOW); + triangle_count = potVal0; + draw_static(1000, rgb); + } +} + +void animate_target() { + radi = 0; + for (int i=0; i<240; i+=10){ + index_reading = button_listener(indexPin, ledPin); + + potVal1 = analog_map(pot1, 0, 255); + potVal2 = analog_map(pot2, 0, 255); + potVal3 = analog_map(pot3, 0, 255); + potVal0 = analog_map(pot0, 25, 75); + rgb = color_mixer(potVal1, potVal2, potVal3); + bgr = color_mixer(potVal3, potVal2, potVal1); + rgb = rgb*3; + bgr = bgr*2; + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + radi = random(5, 75); + display.fillCircle(160, 120, last_r, BLACK); + } + else { + digitalWrite(shebangLed, LOW); + radi = radi + 2; + } + display.fillCircle(160, 120, radi, rgb); + display.drawLine(160, 120, 320, i, bgr); + last_r = radi; + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + + for (int i=320; i>0; i-=10){ + index_reading = button_listener(indexPin, ledPin); + potVal1 = analog_map(pot1, 0, 255); + potVal2 = analog_map(pot2, 0, 255); + potVal3 = analog_map(pot3, 0, 255); + potVal0 = analog_map(pot0, 25, 75); + rgb = color_mixer(potVal1, potVal2, potVal3); + bgr = color_mixer(potVal3, potVal2, potVal1); + rgb = rgb*3; + bgr = bgr*2; + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + radi = random(5, 75); + display.fillCircle(160, 120, last_r, BLACK); + } + else { + digitalWrite(shebangLed, LOW); + radi = radi + 2; + if (radi > 120) { + radi = 120; + } + } + display.fillCircle(160, 120, radi, rgb); + display.drawLine(160, 120, i, 240, bgr); + last_r = radi; + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + + for (int i=240; i>0; i-=10){ + index_reading = button_listener(indexPin, ledPin); + potVal1 = analog_map(pot1, 0, 255); + potVal2 = analog_map(pot2, 0, 255); + potVal3 = analog_map(pot3, 0, 255); + potVal0 = analog_map(pot0, 25, 75); + rgb = color_mixer(potVal1, potVal2, potVal3); + bgr = color_mixer(potVal3, potVal2, potVal1); + rgb = rgb*3; + bgr = bgr*2; + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + radi = random(5, 75); + } + else { + digitalWrite(shebangLed, LOW); + radi = radi - 3; + } + display.fillCircle(160, 120, last_r, BLACK); + display.fillCircle(160, 120, radi, rgb); + display.drawLine(160, 120, 0, i, bgr); + last_r = radi; + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + + for (int i=0; i<320; i+=10){ + index_reading = button_listener(indexPin, ledPin); + potVal1 = analog_map(pot1, 0, 255); + potVal2 = analog_map(pot2, 0, 255); + potVal3 = analog_map(pot3, 0, 255); + potVal0 = analog_map(pot0, 25, 75); + rgb = color_mixer(potVal1, potVal2, potVal3); + bgr = color_mixer(potVal3, potVal2, potVal1); + rgb = rgb*3; + bgr = bgr*2; + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + radi = random(5, 75); + } + else { + digitalWrite(shebangLed, LOW); + radi = radi - 2; + if (radi < 1) { + radi = 1; + } + } + display.fillCircle(160, 120, last_r, BLACK); + display.fillCircle(160, 120, radi, rgb); + display.drawLine(160, 120, i, 0, bgr); + last_r = radi; + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } +} + +void animate_wavylines() { + for (int i=0; i0; i-=10){ + index_reading = button_listener(indexPin, ledPin); + potVal1 = analog_map(pot1, 0, 255); + potVal2 = analog_map(pot2, 0, 255); + potVal3 = analog_map(pot3, 0, 255); + potVal0 = analog_map(pot0, 25, 75); + rgb = color_mixer(potVal1, potVal2, potVal3); + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + shebang_pressed = true; + display.drawLine(random(0, w), random(0, h), i, h, rgb*3); + } + else { + digitalWrite(shebangLed, LOW); + if (shebang_pressed == true) { + display.fillScreen(BLACK); + cycle = 0; + shebang_pressed = false; + } + display.drawLine(0, 0, i, h, rgb*3); + } + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + for (int i=0; i0; i-=10){ + index_reading = button_listener(indexPin, ledPin); + + potVal1 = analog_map(pot1, 0, 255); + potVal2 = analog_map(pot2, 0, 255); + potVal3 = analog_map(pot3, 0, 255); + potVal0 = analog_map(pot0, 25, 75); + brg = color_mixer(potVal3, potVal1, potVal2); + int s = shebang_listener(shebangPin); + if (s == LOW) { + digitalWrite(shebangLed, HIGH); + shebang_pressed = true; + display.drawLine(random(0, w), random(0, h), w, i, rgb*3); + } + else { + digitalWrite(shebangLed, LOW); + if (shebang_pressed == true) { + display.fillScreen(BLACK); + cycle = 0; + shebang_pressed = false; + } + display.drawLine(0, 0, w, i, brg*3); + } + if (index_reading == LOW) { + break; + } + millisDelay(potVal0); + } + clear_static(); + cycle++; + if (cycle > 4) { + display.fillScreen(BLACK); + cycle = 0; + } +} + +void make_triangle(uint16_t x1, uint16_t y1, uint16_t side_1, uint16_t side_2,uint16_t color) { + color = color_mixer(potVal3, potVal2, potVal1); + uint16_t x2 = x1 + side_1; + uint16_t y2 = y1 + side_2; + display.fillTriangle(x1, y1, x2, y2, x2, y1, color*2); +} + +int analog_map(int x, int minMap, int maxMap) { + int z = analogRead(x); + z = map(z, 0, 1023, minMap, maxMap); + return z; + } + +uint16_t color_mixer(int int_r, int int_g, int int_b) { + uint16_t mixed = ((int_r & 0xf8) << 8) + ((int_g & 0xfc) << 3) + (int_b >>3); + return mixed; +} + +void draw_static(int num_stars, uint16_t color_order) { + color_order = color_mixer(potVal1, potVal2, potVal3); + for (int i=1; i