Member Since: October 16, 2008

Country: United States

  • It seems rather obvious to me anyway that the solder jumper would be much more useful as a 3 position switch. Why risk lifting the pads or damaging the board with a soldering iron when you could have used a convenient switch in its place.

  • I tend to prefer boards without the headers pre-soldered. Many times I'm trying to get to a semi-finished product and I'm not trying to simply prototype/experiment with the board. Leaving the headers off lets me choose to:

    1) direct solder a wire to the via 2) add male pins to just the vias I'm using for the project 3) add female headers to the vias I'm using for the project 4) populate all vias with either kind of header

    Leaving them unsoldered is the most flexible way to do it. Though some might complain about alignment issues or the fact that they don't have a workbench, the truth is that neither should be a big deal. This is about technique - not technical skill that some don't possess. Place male pins into a breadboard in the positions you want to populate. If you want male pins, place the board on the previously placed pins and solder them in place. If you want female headers, put the female headers onto the previously installed male pins, add the board on top of that, and then solder the connections. The breadboard will hold everything in alignment for you. The only caveat is that you might need a set of double length male headers for placing the female header, but that's fairly uncommon in my experience.

    Others may fear being inexperienced with soldering. That is simply a matter of 'seat time' - with some practice the above process will take you less than 5 minutes and you'll have perfectly aligned headers.

  • Ok, now that I've been through the gauntlet that is verifying my verified email address.....

    I have a lot of hobbies. From photography to wood working to electronics to computing to metal work and fabrication. I own my own house as well, so that's yet another something that is always competing for my time.

    I do all of these things because I enjoy doing them. When you take information and experience from one hobby and then couple that knowledge with something completely different, it gives you a different perspective and there's even a bit of pleasure in solving some really hard problems. If there happens to be music playing in the shop, I can spend all day working on projects, just going from one to the next as resources permit. Maybe I have to wait for some glue to dry on that table I've been building, so I'll then go off and maybe learn some verilog.... or try grinding my own toolbits for the metal lathe... or spend some time sharpening those chisels that seem to always need it... or maybe try cooking something new in the kitchen if the weather is cool enough.

    It's nearly October when I try to burn a year's worth of vacation in a single month, if possible. I'm really looking forward to staying home for nearly a week at a time.

  • I learned electronics in college, but I think I've learned a lot more by simply doing things first hand.

    If you've just started out with an Arduino, I would encourage most people to then take it a step further by reading the entire AtMega328 datasheet and trying to utilize each of the peripherals on the mcu without relying on the Arduino libraries. Think of the Arduino libraries as training wheels - wheels that should be removed at some point to get at the bare bones hardware. The nice thing about this approach is that the IDE is simply using the AVR gcc cross compiler under the hood, so nothing new is required to go forth and play with the hardware directly. Use the same IDE and copy the example code right out of the data sheet! There might be some minor changes you'll have to do, but it mostly just works.

    Beyond that, it's essential to spend some time working with analog electronics. There are a lot of projects out there where the need for a complicated micro isn't really necessary. I can't count the number of IR repeater projects I've seen that (incorrectly) implement a 38KHz oscillator when none is required. If you use a non-demodulating sensor (from Vishay), the circuit becomes much simpler and IR crosstalk between the different sources is eliminated. This circuit can be done with only about 6 components and none of them oscillate or take programming instructions. That's just one example, though.

  • The way I explain state machines is in terms of parsing HTML. If you need to parse something that's human written and has no formal definition of what order the tags will appear, the only way to parse it in software is with a state machine.

    void parse_html(char input)
      static int state = 0;
      switch (input)
        case 'i':
          if (state == 0)  state = 1;
        case 'm':
          if (state == 1) state = 2;
        case 'g':
          if (state == 2) state = 3;
        case ' ':
          if ((state == 3) state = 4;
        [other cases]
          state = 0;

    As each character is evaluated, we check to see what the next state should be. From there, you can implement logic which saves the data in each tag as it's processed and then later does something with the information collected. I wrote this one afternoon to solve a problem I was having and I keep going back to it to solve these kinds of problems. It runs relatively quickly even if it is a bit hard to follow due to the massive switch statements that you may wind up creating. In my opinion, you could also abstract this and write software which writes your switch statement for you based on a set of rules.

    btw - this comment box is very code unfriendly :-( ….can't use the tab key….

  • Just an fyi - On Microsoft Windows platforms, an application that is both a command line app and a GUI app is an impossibility. The software development tools require that you define your application as one or the other. If you decide it's a GUI app, the application init code will open up a window on the desktop before any of your own code is executed. If you decide it's a command line app, trying to put up a dialog becomes extra difficult.

    The best anyone can hope for is that you'll be able to hide that window quickly enough so no one really notices or complains about it.

  • I started making my own enclosures when I realized that most off-the-shelf project boxes waste a lot of space in the corners. Instead of providing a mount that's strictly sufficient to hold the lid on, most manufacturers have an entire column of unnecessary plastic running from the bottom of the box to the lid. That's space taken that I can't use for anything else which ends up leading to buying a box that's far larger than necessary.

    A quick trip to the lumber yard for some 4/4 cherry, a little resaw work, and a planing operation will yield a fair bit of 1/4" material. Take that to the table saw, dimension the sides top & bottom, and spend some time cutting 1/4" box joints on the sides. Glue it together and add supports where you actually need them. If you take the time to put a finish on it, it will really pop - much more so than a bulky off the shelf plastic box. Well - maybe it's just me....

    BTW, Sparkfun, a small request. The serlcd product has a lot of board realestate to the left of the display that holds the PIC processor. This ends up dictating the size of an enclosure I needed for a project. Would it be possible to change that product so the PIC is behind the LCD, making the whole display quite a bit larger than the display itself? That was one of the things that led to the above story.

    edit: er ... make the serlcd product a smaller device rather than the large size it is now.

  • I asked the question because I can't depend on the manufacturer to keep their documentation online. When they release an update to their module, their documentation will disappear. On the other hand, if SFE hosts the documentation, then it's available for everyone in the community.

    Yes I could have gone to the manufacturer website, but this is, in my opinion, better for everyone.

  • No command reference? How do I talk to this module?

    Also, the datasheet does not indicate if this module can communicate with another BLE slave device or if it's only intended to act as a sensor node communicating back to a host computer. I'm thinking the missing command reference might clear that up.

  • To me, a fitbit is not a 'wearable' technology and neither is the Apple watch. They are accessories of a sort that are not integrated into one's clothing. These kinds of technology I'll gladly buy and use because they aren't integrated into a particular article of clothing.

    Historically, when Sparkfun refers to wearables, it usually means that the electronics are part of the clothing itself. These things I will not buy and I have no care in the world for even experimenting with them. The core problem to me is that I have to have one particular item to receive the benefit of the technology or I have to buy that same technology multiple times for it to be feasible. I'm also not convinced that such things are terribly durable given that most things must at least be washed at some point in their usage lifecycle.

No public wish lists :(