Git Product home page Git Product logo

aurora's Introduction

Aurora

Aurora runs on SmartMatrix, a dynamic LED art display and music visualizer.

SmartMatrix

SmartMatrix is a self-contained 32x32 pixel LED matrix display for music visualization, dynamic patterns, pixel art, and more!

Customize what's on the screen with the included remote control: choose what's playing, show a clock or message on top, and change settings, all from the remote. You don't need a computer or phone to control what's on the screen.

Features

  • Procedural pattern viewer
  • Animated GIF slideshow viewer
  • Remote control, allowing for ease of use.
  • Optional Clock display in the foreground, over animation and pattern slideshows (requires real-time clock chip).

Demo Video

SmartMatrix Demo Video

Installation

See SmartMatrix Shield Installation in the Aurora Wiki for instructions on how to load the pre-compiled Aurora program onto the Teensy 3.1

See Compiling in the Aurora Wiki for instructions on how setup the Arduino IDE and all the libraries that are needed to compile Aurora.

More Information

Troubleshooting

If you have any problems using Aurora (crashes, glitches, etc), please search the Aurora Issue Tracker before creating a new issue.

If you have any problems Compiling Aurora, please make sure all the required libraries are properly installed. Please refer to Installing Additional Arduino Libraries, and SmartMatrix External Libraries for more troubleshooting information.

Acknowledgements

Many thanks to all of the fantastic hardware and open source software libraries used in Aurora!

A huge thank you to all of the projects and open source software that are used in and inspired Aurora!

Thanks to these fine game companies for allowing us to use and distribute their pixel art to showcase Aurora!

Tiny Barbarian Tiny Barbarian by StarQuail Games
Chasm Chasm by Discord Games

aurora's People

Contributors

embedded-creations avatar jasoncoon avatar jblang avatar kigster avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aurora's Issues

Can't compile project in Eclipse due to logic in header files

I am restarting this topic, because I really like this project and would love for it to thrive.

I did some research, and here what I gathered so far:

  • Arduino 1.0.6 does some magic with the files in the project directory: I think it concatenates them all into a single .cpp file and then proceeds to compile/link it. This method works for this project.
  • Arduino 1.5.+ changed how they build that single .cpp file, it is now called .ino.cpp, and contains includes for the header files, instead of direct inlining.
  • Eclipse I am using, is using 1.5 strategies, and can not compile this project (and neither can Arduino 1.5) due to circular references: because all logic and declarations are in header files, compiler can not resolve external symbols and fails every file.

What was the motivation behind putting all the logic into header files, instead of .cpp as is done traditionally? I am relatively new to C++ (but not C) and I was rather surprised when I saw that. I found a couple of interesting answers on stackexchange:

http://stackoverflow.com/questions/583255/c-code-in-header-files

I believe that to fix my issue each .h file needs to be broken off into .h and .cpp. I am willing to try this effort, but if this does end up working, what are the chances of a pull request?

Wondering

can PatternSpiro be displayed on a 32X32 matrix?

Non of the Teensies work!

Hi guys,
I was trying to get my Smartled shield V4 and V5 and my Teensy 3.2, Teensy 3.5, Teensy 4.1 to work with a LED matrix 64 x 64. So far has nothing worked for me.
I've flashed the Aurora.hex into my Teensies and copied all the files on a SD card and inserted them in Teensies. Still no luck. I also have tried to compile the source code using Teensyduino (Arduino 1.8.16 / Teensyduino 1.55) but I get a lot of errors.

I just wanted to know is there a working hex file/instruction out there or am I just wasting my time. After weeks of trying I'm kind of exhusted but I don't want to give up, if there is a solution.

cheers

question

what do these mean?

void listAnimations() {
  animations.listFiles();
}

void reloadAnimations() {
  animations.setup((char *)"/gifs/");
}

bool setAnimation(String name) {
  if (animations.setAnimation(name)) {
    menu.currentIndex = 2;
    menu.visible = false;
    return true;
  }
  return false;
}

bool setAnimation(int index) {
  if (animations.setAnimation(index)) {
    menu.currentIndex = 2;
    menu.visible = false;
    return true;
  }

  return false;
}

and if the sd finds gifs, will it display on a led matrx?

2 compiler warnings that are likely bugs

Also in marcmerlin/FastLED_NeoMatrix_SmartMatrix_LEDMatrix_GFX_Demos@2723660
The first one seems like an obvious bug.
Second one, seems like a likely bug, but it's not fully clear. @jasoncoon can you have a quick look?

--- a/GFX/Aurora/Effects.h
+++ b/GFX/Aurora/Effects.h
@@ -701,7 +701,7 @@ public:
   }
 
   CRGB ColorFromCurrentPalette(uint8_t index = 0, uint8_t brightness = 255, TBlendType blendType = LINEARBLEND) {
-    return ColorFromPalette(currentPalette, index, brightness, currentBlendType);
+    return ColorFromPalette(currentPalette, index, brightness, blendType);
   }
 
   CRGB HsvToRgb(uint8_t h, uint8_t s, uint8_t v) {
diff --git a/GFX/Aurora/Vector.h b/GFX/Aurora/Vector.h
index 8acbadc..0911313 100644
--- a/GFX/Aurora/Vector.h
+++ b/GFX/Aurora/Vector.h
@@ -45,8 +45,10 @@ public:
     bool operator==(Vector2& v) {
         return x == v.x && y == v.y;
     }
-
     bool operator!=(Vector2& v) {
+       // squelch compiler warning for likely buggy code below
+       v.x = v.x;
+       // this looks buggy
         return !(x == y);
     }

Serial console output not working

I cannot get any Serial.println() statements to show anything in the console, what needs to be done for it to work? I was able to get serial example sketches to give console output correctly.

Running teensy 3.2, arduino 1.6.5

ESP32 support?

Will this work on a ESP32? An if so, what do I need to change to make it happen?

Also, must I use a 32x32 pix premade matrix, or can this also be used with DIY WS2811/12 matrixes?

SD card set up. Bonus! 2 questions in 1

Hey guys. After nearly a year of tracking down hardware issues, Ive finally got Aurora running. Thank you for the ''resetmatrix'' file. Now, how should the SD card be set up? Does it need to be FAT32 or something else? Also what should be on the card? Should it be all files from the zip, or just the aurora and gif folder? One more question :) would it be possible to replace the IR/remote with just a pushbutton, and what do I need to implement this? Thanks again to Louis, Marc, and all those who helped me with this.

Can't compile source, aJSON.h not found

I was able to successfully upload the Aurora.hex file, but I can not compile the sources. I tried both my default environment (Eclipse with Arduino plugin and Teensy support), as well as in plain Arduino 1.0.6. Both give the same error. The file aJSON.h is not present anywhere in my library folder, nor in the Arduino installation folder.

Halp? :)

/Applications/Arduino 1.0.6.app/Contents/Resources/Java/hardware/tools/arm-none-eabi/bin/arm-none-eabi-g++ 
-c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections 
-mcpu=cortex-m4 -DF_CPU=72000000 -MMD -DUSB_VID=null 
-DUSB_PID=null -DARDUINO=106 -mthumb -nostdlib -D__MK20DX256__ 
-DTEENSYDUINO=120 -fno-rtti -felide-constructors -std=gnu++0x -DUSB_SERIAL 
-DLAYOUT_US_ENGLISH -I/Applications/Arduino 
1.0.6.app/Contents/Resources/Java/hardware/teensy/cores/teensy3 
-I/Users/kig/arduino/sketches/libraries/SmartMatrix 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/FastLED 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/RobotIRremote 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/SPI 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/SD 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/Wire 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/Time 
-I/Applications/Arduino 1.0.6.app/Contents/Resources/Java/libraries/DS1307RTC 
/var/folders/1v/84fnd63d37sg6gp3l2q332sw0000gn/T/build8235374738166652215.tmp/Aurora.cpp 
-o /var/folders/1v/84fnd63d37sg6gp3l2q332sw0000gn/T/build8235374738166652215.tmp/Aurora.cpp.o 
Aurora.ino:56:19: fatal error: aJSON.h: No such file or directory
compilation terminated.

Clock doesn't update time

The clock display doesn't update the time if you just leave it displaying on top of an animation or pattern. If you turn it off and back on, it will refresh to the current time, but having to do so kind of reduces the utility of the clock.

Certain GIFs play erratically

Certain images, such as the attached don't play smoothly. They seem to take an extra few seconds to start, then animate smoothly, then when it's time to restart again, pause again. For gifs intended to play in a smooth loop, this breaks the illusion.

stars

This animation, and all the others I've noticed this with, are from the PIXEL project which is an alternate microcontroller implementation to control at 32x32 matrix. All of these animations are intended for 32x32 LED matrices and a lot of them are very nice so it would be good if Aurora could better support them.

I haven't tried to re-encode them with some animated GIF software--maybe that would fix it--but if there's something that can be fixed in the code, that would be preferable. I've not really looked into the GIF decoding source to see if I can figure out what's going on.

2.0

Hi will this run on the teensy 2.0?

Missing aJSON.h

Louis, it looks like the #include "aJSON.h" is missing from this repo. Can you please push this update?

Aurora v2.0 Goals

Aurora is in need of a refactor. It would be great to have more people involved, and @kigster has expressed interest in helping. Anyone else interested?

Goals

Some possible goals for a refactor would be (in no particular order):

  • Simplify all of the #includes and externs. Right now it's a bit of a mess, has to be kept in a very particular order for various class dependancies, is problematic for Eclipse users, etc.
  • Make it easier to add, remove, disable content (patterns, audio patterns, games, etc), and functionality (TPM2 streaming).
  • Eliminate the hard-coded item counts that have to be updated every time a pattern is added or removed.
  • Reduce memory use where possible.
  • Move input handling out of the Menu class (seems wrong, the class is huge).
  • Simplify settings loading and saving (should likely be moved out of the main Aurora.ino file).
  • Simplify menu state and foreground overlay handling (brightness, palette, play mode, etc).
  • Separate audio patterns into individual classes, like Patterns. Currently audio patterns are all just handled as function pointers, and they're all in the same class. This is definitely simpler than how patterns are handled, but to provide names for them, like Patterns, Palettes, etc, they'll either need an array of names that need to be kept in sync as they're added/removed, or they need refactored into separate classes.

Aurora Strengths

  • The Drawable base class, and one pattern per class. I like the start, stop, and drawFrame methods, which allow easy initialization, and the complete lack of delays used within the patterns.
  • The way the requested delay for the content is handled, while still processing input from IR, Serial, etc.
  • The relative simplicity of adding new patterns.

Wishlist

My wishlist of new features, and things I'm not completely sure how to pull off:

  • Scripting and/or bootloading support. It'd be awesome to be able to write new patterns, copy them to the SD card, and have them dynamically loaded and executed, without recompiling.
  • Content rating system, similar to how WinAmp visualizations can be rated, and rating affects how often content is shown in random playback mode. I can't decide how best to store the rating on the SD card, tied to the content (pattern, animated GIF, audio pattern), especially as patterns are added, removed, reordered.
  • Support for multiple animated GIF 'albums'. Currently all animated GIFs are cycled through in the single Animations mode. I think adding a new menu entry for each directory in /gifs is a decent idea, but the menu doesn't currently support dynamic items, they have to be statically defined/allocated. Another way to handle it would be to show directories in the gifs folder, as you're cycling through animations. Pressing select would 'enter' that directory.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.