Zackees

Member Since: June 26, 2012

Country: United States

Profile

CEO and Founder of Zackees Wearable Electronics.

Former software engineer at Google Earth.

  • Hey Sparkfun! Thank you for making this part!!!

    We used this part to create the LuminescentGrand, an LED piano that generates light patterns from MIDI. We put it in an acrylic case replica of a mini grand piano.

    Check it out here: https://www.luminescentgrand.com

    Also the mini-documentary of how we created this art piece: https://www.luminescentgrand.com/mini-doc

    We used P9813 led chipset LED. We have a total of 1700 leds being driven off an overclocked spi data line. We get about 120 frames per second.

    Tell us what you think using our contact page.

  • Hey Sparkfun! Thank you for making this part!!!

    We used this part to create the LuminescentGrand, an LED piano that generates light patterns from MIDI. We put it in an acrylic case replica of a mini grand piano.

    Check it out here: https://www.luminescentgrand.com

    Also the mini-documentary of how we created this art piece: https://www.luminescentgrand.com/mini-doc

    We used P9813 led chipset LED. We have a total of 1700 leds being driven off an overclocked spi data line. We get about 120 frames per second.

    Tell us what you think using our contact page.

  • What does this do? Take SPI data and save it to a SD card? Very hard to understand from the description.

  • I really wish this electronic had an under voltage lockout between the battery and the mainboard. This would prevent the device from running the lipo down to destruction when the user accidentally leaves the device on.

    A suitable component would be the MIC841.

    Sparkfun, it would be awesome if you could integrate the MIC841 into your LIPO chargers!!!!!

  • Lithium Battery Charge Current:

    In case anyone is interested in the charger current that this Arduino provides, according to the data sheet this Arduino uses a 10k resistor on the MCP charging component. According to the MCP data sheet, this results in a 100mA maximum charge rate.

  • Our experience with the mBed platform has been quite positive. I know that many of the reviews here are quite bad because of the offline access issues of the IDE.

    However, I want to note that the strengths of this platform are incredibly POSITIVE and should be emulated by the Arduino community as an example of how to do cloud compiling right.

    The good?

    • The IDE is in the cloud so setup involves registration with the website.
    • Demos on the website have a one button install feature that puts the code directly into your online IDE.
    • Code version management is done with mandatory mercurially SVC, built into the product. It works SEEMLESSLY! Multiple people can work on the same project and commit their changes incrementally.
    • The low level API is real C++ environment and doesn’t have any of the idiosynchriocies of Arduino’s IDE messed up C++ environment involving header inclusion, object file linking issues, and global library issues.
    • The API includes THREADING support out of the box and so far has a nice and clean object oriented approach.

    My experience with this platform was to make a quality assurance machine that would test the assembly of panels of electronics for our product, Zackees Turn Signal Gloves, and report which PCBA were failing. We have been extremely happy with the environment and we recommend that anyone who is looking for a really well functioning and integrated environment to get the job done give this platform a try.

    In closing, I’d like to say that the learning curve for the mBed platform was on par with the Arduino setup, but has better developer scalability as the project grows.

  • // Copyleft Zach Vorhies 2014
    // No rights reserved.
    // Tested on an ArduinoMega. Connect pins to RX and TX.
    // Usage:
    //  ColorDetector<HardwareSerial> cd(Serial3);
    //  void setup() { cd.begin(); }
    //  void loop() {
    //    if (cd.Update()) {  // True when new readings have occured.
    //      cd.PrintValues(Serial);  // print values.
    //    }
    //  }
    
    
    template<class StreamT>  // StreamT == HardwareSerial or SoftSerial.
    class ColorDetector {
     public:
      ColorDetector(StreamT& s)
         : input_(""), stream_(s),
           r(0), b(b), g(0),
           r_lx(0), b_lx(0), g_lx(0), total_lx(0),
           saturated(false) {
        input_.reserve(kStrLen);  // Upto 36 characters for the rgb+lx data.     
      }
    
      void begin() {
        stream_.begin(38400);
        stream_.write("M3\r");  // Sets mode0 of the sensor.
      }
    
      // Returns true if new values were parsed.
      bool Update() {
        while (stream_.available() > 0) {
          //if the hardware serial port_3 receives a char 
          //get the char we just received
          char inchar = (char)stream_.read();
          //add it to the inputString
          input_ += inchar; 
          if(inchar == '\r') {
            saturated = input_.indexOf('*') != -1;
    
    
            // Time to parse out the string into values.
            int* values[] = {&r, &g, &b, &r_lx, &g_lx, &b_lx, &total_lx};
            const int values_size = sizeof(values)/sizeof(values[0]);
            int i = 0;
    
            char cpy_str[kStrLen];
            input_.toCharArray(cpy_str, kStrLen);
            input_ = "";  // resets the input.
    
            char* p = cpy_str;
    
            char *str;
             // delimiter is the comma
            while (i < values_size && (str = strtok_r(p, ",", &p)) != NULL) {
              String cpy = str;
              *values[i] = cpy.toInt();
              ++i;
            }
            return true;
          }
          // No update yet.
          return false;
        }
      }
    
      void PrintValues(Stream& output) {
        int* values[] = {&r, &b, &g, &r_lx, &b_lx, &g_lx, &total_lx};
        const int array_size = sizeof(values) / sizeof(values[0]);
        for (int i = 0; i < array_size; ++i) {
          output.print(*values[i]);
          if (i < array_size - 1) {
            output.print(",");
          }
        }
        if (saturated) {
          output.print(",<saturated>");
        }
        output.println();
      }
    
      int r, b, g;
      int r_lx, b_lx, g_lx, total_lx;
      bool saturated;
    
     private:
      static const int kStrLen = 38;
      String input_;
      StreamT& stream_;
    };
    
    
    ColorDetector<HardwareSerial> color_detector(Serial3);
    
    void setup() 
      Serial.begin(9600);
      color_detector.begin();
    }
    
    void loop() {
      if (color_detector.Update()) {
        color_detector.PrintValues(Serial);
      }
    }
    
  • This mic is very heat sensitive! You can easily kill it with a heat gun!!

    I was making some voice-reactive jewelry with this little mic. My jewelry uses U-mold plastic; I use a heat gun to mold the plastic and add layers to the jewelry. Heating the plastic to make it playable resulted in the mems mic board not working. I did this twice before realizing what was happening. Please be aware!!!

  • Does anyone know the charge rate on for the on-board MCP73831?

  • Reading the data sheet it appears that this sensor has a illuminance response rate of 400ms, is that right?

No public wish lists :(