Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
a cyberpunk goose
May 21, 2007

hendersa posted:

I added in GPIO support for BeagleSNES. Now people can build custom controllers and more easily make BeagleSNES into a handheld unit:



Writing the documentation on this is going to be horrible. The short version is the GPIO code checks for changes in the button states and then inserts the proper joystick events into the main event queue. Since the event loops are all pulling gamepad events from this queue anyway, adding the GPIO support becomes transparent to the rest of the codebase.

Those buttons represent the four directions on a gamepad, the left/right trigger buttons, A/B/X/Y buttons, select/start buttons, and a dedicated "pause" button that pops up the pause/savestate menu.

'Looks like you could use a simple shield with screw down terminals for the custom controller or something :)

Adbot
ADBOT LOVES YOU

PDP-1
Oct 12, 2004

It's a beautiful day in the neighborhood.
I'm building/programming a computer control box for one of the experimental systems we have at our lab. It's about 80% done and still looks a bit messy when the case is open, but it's at that fun sage where new features are getting turned on at a rate of several items per day:



Features include:

1) Atmel ATMega644PA microprocessor with 31 of the 32 available IO lines in use. The 32nd line was brought out to a solderable stub because you just know somebody will put in a feature request 5 minutes after we turn it on for real. It's clocked at 18.432MHz because that magic number lets the USART run at higher baud rates (up to 250kbps).

2) The USART is connected to a USB bridge with a bulkhead USB port on the front of the box. You can connect a PC to the port for logging system data or to change system settings that get stored in the microcontroller's EEPROM. When the hardware build is done I'll code up a .NET interface program to chart all the system IO as a function of time.

3) The front panel (not shown) has a bunch of buttons and knobs for user input and a 4x20 LCD screen for output. I spent way too much time programming those things so that they flash in interesting patterns when the system is started. The actual init and self-check routines take less than 50ms to run, but the thing still prances around for ~2 full seconds at startup blinking its lights and beeping at you just because it was fun code to write so human observers can verify each stage of the self-check visually.

4) Speaking about beeping, the beeper is made from a 556 (aka dual 555) chip where the first half is set up as a one-shot with a ~0.2 second output pulse that feeds into the *RST line of the second half which is a 4kHz astable oscillator with a speaker. The upshot of this is that you just have to toggle the IO line that is connected to the one-shot and the thing beeps for 200ms without you having to code something that remembers the beeper is on and comes back to turn it off.

5) It has a remote control handset and antenna function (you can kind of see this cut off on the center top of the box) because the equipment it will be connected to is about 50 feet long and it won't always be convenient to be next to the control unit.

6) It has a little red LED on the main PCB board that the microcontroller can turn on and off which is super helpful when debugging the firmware. It has a big red neon light on the main power entry connector which is super helpful for reminding you that while the front panel switch may be in the OFF position there is still live power on the distribution terminals so maybe you shouldn't go sticking a screwdriver in there right now.

Other than that it just controls a bunch of electric motors that run stuff while monitoring them for torque/speed/distance kinds of stuff. If everything works out it will be part of a system that makes superconducting magnets. We had six weeks to go from concept -> build and our very helpful purchasing department decided to use three of those weeks to order parts via the slow method which saved them the trouble of filling out one extra form and making one extra phone call which would have gotten our parts here in a couple of days. It's cool guys, I don't mind working nights and weekends if it means saving you an extra 10 minutes of work.

The bottom picture is a closeup of the PCB board, everyone always asks about the rainbow colored wiring but it's just the resistor color code (pin 1 = brown, pin 2 = red, etc) which cuts down the number of wiring mistakes by a huge percentage. I also put a bunch of wire jumpers on the board because people were still changing their minds about things at the point we had to commit the design - this way I can just rip off the wires and reconfigure hardware stuff without having to re-mill a new PCB.

minidracula
Dec 22, 2007

boo woo boo
Nice!

Also: I see ur scopez and ur powar suppliez, photobombin' ur picturez.

I sometimes wish we could work on stuff at that pitch/level of board complexity, would make loving around fixing broken things engineering so much easier...

hendersa
Sep 17, 2006

Mido posted:

'Looks like you could use a simple shield with screw down terminals for the custom controller or something :)

While I'm probably not going to do anything formal with the GPIOs, I get requests for GPIO input all of the time from people that want to make BeagleBone cape boards that turn BeagleSNES into a portable unit. So, they now have the software that they need to get the job done.

I also grabbed some footage of this GPIO setup running with the LCD3 cape board: https://www.youtube.com/watch?v=s-uUjF76ZDM

hendersa
Sep 17, 2006

More documentation. Always more documentation:



If you need to create diagrams like these that show how discrete electronic components are connected to each other, use Fritzing. It is fantastic for this sort of thing.

Literally Elvis
Oct 21, 2013




I simplified the heck out of Porktrack's database configuration, because I had all these residual tables from when the site was horribly inefficient.

I also was using two separate scripts to acquire data, one that scraped Wikipedia and one that would use the SQL-formatted results to search YouTube and retrieve a result, then rewrite the SQL instruction with the YouTube data in it. This was, in addition to being incredibly stupid, the result of videos being an afterthought. The script is now one and has more useful functions. I've been tossing around the idea of writing a large quantity of very tiny Python scripts that have very specific functions that others can copy and paste at will.

The homepage was simplified so that users could select from whatever dataset is available without having to worry about entering the wrong year. The Latin hot singles dataset is particularly awful, because it only goes back to like 1987.

Also, got an interface for an Android app worked up. I've learned the gist of how to safely query a database from an Android app, I just haven't had the time really to implement it. I'm planning on slowly but surely scraping new datasets while I get the Android part of this working.

Tavistock
Oct 30, 2010




I made a dashboard thing that lends itself well to screenshots. It is all pretty basic poo poo except I didn't really get how to make a recursive node flattener until running into chrome.bookmarks api

its on Github but has some pretty glaring issues that i doubt I'm going to fix (like light-bg/light-text on random pictures)

Hughmoris
Apr 21, 2007
Let's go to the abyss!

Good stuff. Just curious, do you have a count for the total number of visitors to the site so far?

Literally Elvis
Oct 21, 2013

Hughmoris posted:

Good stuff. Just curious, do you have a count for the total number of visitors to the site so far?

2,354,816 pageviews since launch.

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice
Making a math game, which I am quite enjoying both creating and playing!



Here's a crappy GIF (must learn to make better GIFs) of some animation. This is from a Quartz Composer prototype I made before I started coding:

hendersa
Sep 17, 2006

I'm doing the final builds and prep for the v0.6 release of BeagleSNES. The trailer just went live (but unlisted) at YouTube. Once I get all the images tested, packaged up, and uploaded, I'll switch it over to public and send out the release notifications to the various open source sites:

https://www.youtube.com/watch?v=f8IbhJ7xH6g

:dance:

mentholmoose
Nov 5, 2009

YKNOW THERES ONLY ONE DIRECTION I KNOW AND THATS DRIVIN STRAIGHT TO THE NET

Tavistock posted:


I made a dashboard thing that lends itself well to screenshots. It is all pretty basic poo poo except I didn't really get how to make a recursive node flattener until running into chrome.bookmarks api

its on Github but has some pretty glaring issues that i doubt I'm going to fix (like light-bg/light-text on random pictures)

Use CSS text shadowing for the text. It'll give it a slight border without being too obvious. I assume Chrome supports it.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
I wrote a strategy game for Chip-8 using my high-level assembler:


http://forums.somethingawful.com/showthread.php?threadid=3634812#post431832948

shrimp fried rice 4-EVA
Feb 2, 2012

Holding my breath and I'm playing for keeps.


Updated my Java game's inventory and cursor system. I click inventory stacks to move them to the cursor and then can place them in the world now. Stacks can also be switched with others, split with a right click and combined with matching items. Numbers don't display unless the stacks contain above 1 item. When picking up items they are automatically stacked when possible. Currently stack size is unlimited.

Largo Usagi
Jan 9, 2013
I just finished up the first end user complete version of my jukebox.





More pictures and feature descriptions.
http://imgur.com/a/tqsS8

Now time to start implementing administration features so you don't have to edit settings in the db by hand.

Dumlefudge
Feb 25, 2013

Largo Usagi posted:

I just finished up the first end user complete version of my jukebox.

That looks really cool! May I ask what you're using on the backend to develop this?

Grawl
Aug 28, 2008

Do the D.A.N.C.E
1234, fight!
Stick to the B.E.A.T
Get ready to ignite
You were such a P.Y.T
Catching all the lights
Just easy as A.B.C
That's how we make it right
Shalinor, this is your work right? Just spotted it in my mailbox.

Shalinor
Jun 10, 2002

Can I buy you a rootbeer?

Grawl posted:

Shalinor, this is your work right? Just spotted it in my mailbox.


Yup! It's old as heck - it's a port of a mobile game from last March, so 3 billion in PC years - but they'd been prodding me to do a bundle with them, so I figured what the heck.

With the income from that, it'll round out Jones On Fire's total to north of $10k. Still not profitable, but not awful / would be profitable if dev hadn't stretched out longer than intended. The bundle made for a nice cherry on top, basically. :keke:

EDIT: the "by glassbottommeg" is a bit galling, but whatcha gonna do. That's just my Twitter handle. :ughh:

Shalinor fucked around with this message at 01:51 on Jul 12, 2014

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice
Bungie's new game is pretty, and has a nice UI. Being the nerd I am, I coupled my natural curiosity of "how would I do that with CSS / JS" with my desire to learn the React semi-framework, and made a thing.




You can move the mouse around in it, click on things, and wish I wrote funnier fake tooltips here.

LP0 ON FIRE
Jan 25, 2006

beep boop

Lumpy posted:

Making a math game, which I am quite enjoying both creating and playing!



Here's a crappy GIF (must learn to make better GIFs) of some animation. This is from a Quartz Composer prototype I made before I started coding:



I actually really enjoy playing simple math games time to time. I have a couple for my iPhone that you should compare to. True or False Math and Nabla. Nabla isn't really that good on some of the functionality side and presentation, but I enjoy it more than True or False Math because I can get more than one wrong before losing and needing to start over.

Lumpy
Apr 26, 2002

La! La! La! Laaaa!



College Slice

LP0 ON FIRE posted:

I actually really enjoy playing simple math games time to time. I have a couple for my iPhone that you should compare to. True or False Math and Nabla. Nabla isn't really that good on some of the functionality side and presentation, but I enjoy it more than True or False Math because I can get more than one wrong before losing and needing to start over.

If you want to hop on our TestFlight beta, PM me and I'll send you an invite. We're a week or so away from launch (hopefully) and I'll post some codes here as well.

go play outside Skyler
Nov 7, 2005


Hey! OP here, yeah, the guy that made a robot that plays the xylophone.

This video is the result of more than a year of hard work and dedication.

Last year, we turned an entire building, our university, into a giant interactive screen! This year, we did it again, but much cheaper! And this time we managed to properly film it for your enjoyment!

https://www.youtube.com/watch?v=8ybKCOfjYvU

We used Raspberry Pis and a whole bunch of software we developed in JavaScript to make a distributed network of screens. Projectors aside, which were lent to us by our university, we had a budget of less than 1000$ and managed to pull it off!

Here we made an intro synchronised to music, but after that, anyone could whip out their smartphone and draw dicks on the windows! The video of that isn't quite ready yet, but we're working on it.

Details:
  • 30 Raspberry Pis, projectors, HDMI <-> DVI converters, cables, ...
  • 3000 sq. ft of screen
  • New drawing every 25 seconds
  • A drag-n-drop interface to create animations and compositions

All Pis are simply connected to the LAN and synchronised on a local NTP server.

This is essentially projection mapping on a very tight budget :)

go play outside Skyler fucked around with this message at 20:49 on Jul 15, 2014

Largo Usagi
Jan 9, 2013

Dumlefudge posted:

That looks really cool! May I ask what you're using on the backend to develop this?

I used java for the back end, and AngularJS for the front end with some php for minification and bundling.

SurgicalOntologist
Jun 17, 2004


Cool! Next step, Tetris:
https://www.youtube.com/watch?v=tkIRWoo9qrU

LP0 ON FIRE
Jan 25, 2006

beep boop

Lumpy posted:

If you want to hop on our TestFlight beta, PM me and I'll send you an invite. We're a week or so away from launch (hopefully) and I'll post some codes here as well.

Pretty cool app!



Some improvements/suggestions I have:

-The hit box for where the operator is dragged needs to be bigger! Half the time I drag those they fly back because it's not within the acceptable range, but there's plenty of space.

-The app should start at the menu that gives you a choice between survival or endless mode. When I launched the game it started directly from endless and I was totally lost to what my goal was or what I was working towards. I kept going for a long time thinking I was going to approach something and finally I went to the menu and discovered it must have been on endless mode.

phi kappa FUCKBALLS
Jul 24, 2010

Been working on a lil island thing using software rendering. Feel like I'm at roads end now though as it averages around 50 fps, with sea and cloud computations detached, wrecking my 4.3ghz i5. That's just not good enough so I guess I'll have to get with the times. Still think this was a successful experiment, managed to squeeze out a lot more than I thought I would be able to.




Throw another one on the pile of discarded prototypes.

Dred_furst
Nov 19, 2007

"Hey look, I'm flying a giant dong"
make it offline and use it to make nice backgrounds / animated gifs. I'm liking how it looks, even if it doesn't render in realtime.

kayakyakr
Feb 16, 2004

Kayak is true

Mandelbulb posted:

Been working on a lil island thing using software rendering. Feel like I'm at roads end now though as it averages around 50 fps, with sea and cloud computations detached, wrecking my 4.3ghz i5. That's just not good enough so I guess I'll have to get with the times. Still think this was a successful experiment, managed to squeeze out a lot more than I thought I would be able to.




Throw another one on the pile of discarded prototypes.

I want to sim city that island.

space kobold
Oct 3, 2009


kayakyakr posted:

I want to sim city that island.

I can get behind that. :pervert:

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!


That's slick. Voxels? What kind of rendering algorithm do you use for see-through water?

Zaphod42
Sep 13, 2012

If there's anything more important than my ego around, I want it caught and shot now.
Halfway through swapping out the textures in my game with new assets from my artist buddy, and got a pretty funny screen


She's got legs, she knows how to use em

We're still figuring out our process a little, solving some hurdles. I know the big legs are all kinds of terribly scaled, working on it. :) This was quick and dirty testing.

Tres Burritos
Sep 3, 2009



Pretty boring but it's like 1024 * 1024 * 2 triangles rendered in the browser at a silky 60fps.
I'm finally taking the time to figure out "BufferedGeometry" in Three.js and it seems to be paying off. The next problem is going to be that vertices are duplicated multiple times and when I change the position of one of them I'm going to have to go and find all of it's duplicates, which may suck. I'm sure there's some quadtree recursion algorithm I can use for it ... or something.

Also I've got Ammo.js set up and running in a separate WebWorker, there's a tiny red cube somewhere down there that fell from the sky and landed on the ground as per the physics engine.

I'm hoping I can create some sort of basic terrain engine to do interesting stuff with.

It's also interesting that you can sort of see some "grid lines" showing up in the image, could either be a side effect of rendering (somehow) or (more interestingly) some patterns showing up from V8's (running chrome) Math.random() function.

phi kappa FUCKBALLS
Jul 24, 2010

Bob Morales posted:

That's slick. Voxels? What kind of rendering algorithm do you use for see-through water?

Thanks. Sort of, depends on your definition I guess. It's a heightmap that gets transformed into discrete steps and then rendered through an isometric projection matrix. It was originally supposed to be flat 2d so that seemed like the easiest way to go 3d while keeping the general aestethic. The lighting normals and so on are based on the heightmap so they simulate slopes and not the faces of cubes. The water isn't actually see-through, I check the distance to shore for the tiles at map generation and then use that value to set the base water color. No fun stuff like refractions going on.

KernelSlanders
May 27, 2013

Rogue operating systems on occasion spread lies and rumors about me.
Trying to get a Simulink model, which is destined for a target system in external mode, to chirp a time code. This is currently very high on my list of things that would be easier in C.

stinch
Nov 21, 2013

PDP-1 posted:

I'm building/programming a computer control box for one of the experimental systems we have at our lab. It's about 80% done and still looks a bit messy when the case is open, but it's at that fun sage where new features are getting turned on at a rate of several items per day:

As someone that often ends up fixing things like that it's pretty neat and tidy not messy. Only thing I don't like are the grey rectangular cable guides that obstruct the view of where the cables are going. I like everything visible so you can follow cables round and see where everything is going.

Best thing about building stuff like this yourself is you can configure it exactly as you need and have a very focused UI tailored precisely to the job you need to perform. Always feels good when something you make slots seamlessly into the process, lets the operators get on with their jobs and is never responsible for any human errors.

movax
Aug 30, 2008

Been on a bit of a project kick lately, starting a new one which is a simple cape for the BeagleBone that will hopefully interface to Wiegand RFID readers (like ubiquitous HID types):



You can already wire them up straight to the BeagleBone and RaspPi, but the problem is unless you put a hard real-time kernel or run bare metal on the chip, your polling or interrupts in reading the Wiegand data can miss bits if the kernel decides to schedule someone else instead. I'm going to try to use the programmable real-time unit on the BeagleBone to process the data and then interrupt the host when it is ready.

This gives me a one-chip solution that runs Linux (meaning I get the Linux network stack, Python, robust SSL/TLS with billions of hours of proven runtime) for auth control, instead of the solutions that depend on SD card, EEPROM or other stuff to store cards. All anyone needs to do to roll a point solution for authentication control is get a BeagleBone Black, get this cape and install software, better than paying the hundreds of bucks for something like the ES400.

The interface is simple enough that a microcontroller can do it, but I don't want to deal with TCP/IP stacks with buggy/out-of-date SSL implementations.

The board will basically have glue logic on it, but now that I think about it, I may put a relay or two on there to operate door strikes and such. Finished the footprints and PCB mechanical design from the kinda bleh docs.

IronDoge
Nov 6, 2008

I'm making a nonogram puzzle maker/player (e.g. Picross, CrossMe).

http://jowang.name/dotpix

Mostly this was to learn how to create a single page app using AngularJS and also how to use the Doctrine ORM for database stuff. Pretty barebones at the moment, but I'm working towards a touch-friendly version eventually. Feel free to add a puzzle in.

hendersa
Sep 17, 2006

movax posted:

Been on a bit of a project kick lately, starting a new one which is a simple cape for the BeagleBone that will hopefully interface to Wiegand RFID readers (like ubiquitous HID types):



You can already wire them up straight to the BeagleBone and RaspPi, but the problem is unless you put a hard real-time kernel or run bare metal on the chip, your polling or interrupts in reading the Wiegand data can miss bits if the kernel decides to schedule someone else instead. I'm going to try to use the programmable real-time unit on the BeagleBone to process the data and then interrupt the host when it is ready.

This gives me a one-chip solution that runs Linux (meaning I get the Linux network stack, Python, robust SSL/TLS with billions of hours of proven runtime) for auth control, instead of the solutions that depend on SD card, EEPROM or other stuff to store cards. All anyone needs to do to roll a point solution for authentication control is get a BeagleBone Black, get this cape and install software, better than paying the hundreds of bucks for something like the ES400.

The interface is simple enough that a microcontroller can do it, but I don't want to deal with TCP/IP stacks with buggy/out-of-date SSL implementations.

The board will basically have glue logic on it, but now that I think about it, I may put a relay or two on there to operate door strikes and such. Finished the footprints and PCB mechanical design from the kinda bleh docs.

Is U2 a 24C256W EEPROM for identifying the cape? If so, I wouldn't even bother with putting one on. It makes the cape automatically load the overlay fragment if you have it built into the kernel, but I would just save the money and leave it out and just manually load the fragment via the capemgr (3.8) or build it into the kernel (3.12+). If you do put a cape ID EEPROM on there, you'll need DIP switches or jumpers to assign it to particular slot (0-3). Unless it is the only cape on there, in which case who cares. With the pass-through connectors to the BBB P8/P9, though, it looks like you're going to allow additional capes to stack with it...

movax
Aug 30, 2008

hendersa posted:

Is U2 a 24C256W EEPROM for identifying the cape? If so, I wouldn't even bother with putting one on. It makes the cape automatically load the overlay fragment if you have it built into the kernel, but I would just save the money and leave it out and just manually load the fragment via the capemgr (3.8) or build it into the kernel (3.12+). If you do put a cape ID EEPROM on there, you'll need DIP switches or jumpers to assign it to particular slot (0-3). Unless it is the only cape on there, in which case who cares. With the pass-through connectors to the BBB P8/P9, though, it looks like you're going to allow additional capes to stack with it...

Yeah - it's the recommended EEPROM from the BBB SRM. I figured I could lay it out at least, and reserve the option to populate it or not. Do a lot of capes not bother implementing it?

I figured I would try to be as least disruptive a cape as possible, so I figured I'd try to let other capes stack on top of me as well. Going to use MOSFETs instead of a relay to stay low heightwise, but the terminal plugs I'm going to end up with may make it a moot point anyways.

Honestly have no idea who else might be interested in this; I might try the SparkFun sell your widget thing with the low effort option of them assembling the boards. :shobon:

Adbot
ADBOT LOVES YOU

hendersa
Sep 17, 2006

movax posted:

Yeah - it's the recommended EEPROM from the BBB SRM. I figured I could lay it out at least, and reserve the option to populate it or not. Do a lot of capes not bother implementing it?

I figured I would try to be as least disruptive a cape as possible, so I figured I'd try to let other capes stack on top of me as well. Going to use MOSFETs instead of a relay to stay low heightwise, but the terminal plugs I'm going to end up with may make it a moot point anyways.

Honestly have no idea who else might be interested in this; I might try the SparkFun sell your widget thing with the low effort option of them assembling the boards. :shobon:

A board/circuit without the EEPROM isn't a cape. It's just a circuit wired into the BeagleBone. Capes use the capemgr to dynamically enable their device tree overlay fragments at boot when the capemgr detects the cape board. Here is the lowdown on making a proper cape that you want to make available via SparkFun and the like:

1. You need the EEPROM on there with a string flashed into it that identifies the cape.
2. You need to have either two sets of jumpers or two DIP switches on there to set the proper capemgr slot.
3. You need to get the BeagleBone guys to include a device tree fragment for your cape in the main device tree for the BB/BBB. This fragment will be marked as "disabled", and it will be built statically into the device tree. The fragment will have an identifier that matches the string on the EEPROM.

Unless you get all three of these things, you might as well just leave off the EEPROM. The EEPROM tells the capemgr which device tree fragment to enable, and the DIP switches tell the capemgr which slot to put the cape in. If you think you can swing #3 (which you probably can, if you get the cape ready for sale and send a prototype to the right person), then go ahead and throw the EEPROM on there. You definitely need to include the DIP switches on there, though, if you do so:



If you leave off the EEPROM, you can copy your device tree overlay into /lib/firmware and load it by cat'ing the name of the .dtbo file (minus the extension) into the proper "slots" file. This will start up the driver, mux the pins, etc. for your board as specified in the device tree. The capemgr will stick the overlay fragment into a higher-numbered slot that isn't one of the four slots that are reserved for proper cape expansion boards.

It won't break the bank to throw the EEPROM and DIPs on there, so you can get some geek cred by designing a complete cape.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply