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
Star War Sex Parrot
Oct 2, 2003

BobHoward posted:

SHAME

real ballers grab a used metcal station off ebay
same, except work just let me take an extra home

Adbot
ADBOT LOVES YOU

Bloody
Mar 3, 2013

lol if you dont just buy aoyue crap

Raluek
Nov 3, 2006

WUT.

BobHoward posted:

SHAME

real ballers grab a used metcal station off ebay

same except from the local surplus electronics store

Sagebrush
Feb 26, 2012

the hakko 936 is the thinking man's weller 51. an elegant soldering station for a more civilized age

peepsalot
Apr 24, 2007

        PEEP THIS...
           BITCH!

just lol if you can't play tetris on your soldering iron
https://www.youtube.com/watch?v=Buzew1z1AhQ

get with the times you gramposaurs

Raluek
Nov 3, 2006

WUT.

Sagebrush posted:

the hakko 936 is the thinking man's weller 51. an elegant soldering station for a more civilized age

playskool babby's first iron

Olivil
Jul 15, 2010

Wow I'd like to be as smart as a computer

Raluek posted:

playskool babby's first iron

no thats the hakko 888

Sagebrush
Feb 26, 2012

the 936 is sleek and black and rectilinear, like a bauhaus fountain pen

Doc Block
Apr 15, 2003
Fun Shoe

Olivil posted:

no thats the hakko 888

I love my soldering iron that looks like a rejected SGI design from the 90s

BobHoward
Feb 13, 2012

The only thing white people deserve is a bullet to their empty skull

Sagebrush posted:

the 936 is sleek and black and rectilinear, like a bauhaus fountain pen

the metcal mx500 is a black monolith sent by the gods to fill us with awe

Silver Alicorn
Mar 30, 2008

𝓪 𝓻𝓮𝓭 𝓹𝓪𝓷𝓭𝓪 𝓲𝓼 𝓪 𝓬𝓾𝓻𝓲𝓸𝓾𝓼 𝓼𝓸𝓻𝓽 𝓸𝓯 𝓬𝓻𝓮𝓪𝓽𝓾𝓻𝓮
I need to put down the video games for a while and pick up an idiot spare time project. any suggestions? I do not presently have a soldering station tho

muckswirler
Oct 22, 2008

xoxbox?

Silver Alicorn
Mar 30, 2008

𝓪 𝓻𝓮𝓭 𝓹𝓪𝓷𝓭𝓪 𝓲𝓼 𝓪 𝓬𝓾𝓻𝓲𝓸𝓾𝓼 𝓼𝓸𝓻𝓽 𝓸𝓯 𝓬𝓻𝓮𝓪𝓽𝓾𝓻𝓮
hm don't have any midi controllers but I should look into getting one for my y2k pc

Luigi Thirty
Apr 30, 2006

Emergency confection port.

write a Macintosh program like me

Glorgnole
Oct 23, 2012

Silver Alicorn posted:

I need to put down the video games for a while and pick up an idiot spare time project. any suggestions? I do not presently have a soldering station tho

take up plein air oil painting, op

LP0 ON FIRE
Jan 25, 2006

beep boop
aww yes, my yospos now has a background color gradient





still messin around

code:
(function() {
    'use strict';
    window.onload = function() {
        $('div.threadbar.top, div.threadbar.bottom, div.forumbar, #forum, #filter').css({
            'background-image': 'linear-gradient(to bottom, red 0%, blue 100%)',
            'background-origin': 'border-box',
            'border-spacing': '1px',
            'border': '1px solid transparent'
        });
        document.querySelectorAll('tr.seen').forEach(function (el) {
            el.classList.remove("seen");
            el.style.backgroundColor = 'rgba(0,0,0,.5)';
        });
    };
})();

longview
Dec 25, 2006

heh.
playing around with some neopixel strips, i worked out how to drive them using a hardware SPI controller instead of the bit banging solution most libraries use.

to recap, the strips use a self clocking signal where the duty cycle defines 1/0, around 30-45% is 0 and 55-70% or so is 1

not clocking the bus for about 9 µs or more causes a bus reset that latches the data. the bus speed is not extremely tight but must be stable (approx 800 kHz)

using some strategic time delay elements it's possible to take a standard SPI signal, generate a 90 degree shifted clock, a stretched in-phase clock, and a slightly time delayed data signal.
a quad nand gate then implements some combinational logic that generates the final output signal

basically the 0 state is a short pulse, generated from the combination of clock AND NOT quadrature clock
the 1 state is the 0 state + some more on-time, so the 1 state output is the delayed data AND the time streched in-phase clock
those two are logically ORed to generate the final output
entire solution requires 6 inverters and 4 NAND gates, along with 4 R-C filters

real hardware logic trace tested with an STM32F103:

top is the output; the 0 state is SCK AND NOT SCK_Q
the 1 pulse is the 0-state ORed with (D_D (data delayed) AND S_D (SCK_delayed, the stretched clock).
the data delay in this shot is a little much, but just small enough that no glitches show up

the big reason to do this is because it's a fun challenge but also because the bit-banging requires interrupts to be disabled a lot on the MCU. the MCUs I'm targeting are guaranteed to have hardware SPI with DMA so with this setup the entire strip can be updated with no extra RAM usage and without interfering with other peripherals.
with an extra gate or two it could even have a chip select, but most MCUs have a spare SPI so not really necessary.

the strips will not run if the duty cycle of a 1-state is 50%, if they could accept 25/50% as 1/0 then the pulse stretcher and data delay could be removed.

Pile Of Garbage
May 28, 2007



bigclivedotcom is that you?

nah but seriously, awesome stuff!@

longview
Dec 25, 2006

heh.
obviously you could just encode the data as triplets instead of bits and DMA that at 3x the speed (which someone else already wrote code to do)

but that requires at least 3x the ram, and probably 4x if you need a frame buffer to work on, and the encoding process takes some time too. for very large strips that can add up, for my 300 led strip that's 900 bytes for a full RGB frame buffer vs. 3600 bytes for an RGB buffer + the DMA buffer.

running it on a STM32F030 with 4k of RAM that makes a big difference!

LP0 ON FIRE
Jan 25, 2006

beep boop
i like how you worked out having different duty cycles. everyone seems to disregard that when messing with waves

Sagebrush
Feb 26, 2012

you can buy SPI led strips (APA102) that are functionally identical to the neopixels (WS2812) in every way except the protocol

https://www.adafruit.com/product/2241

but that is still a v cool bit of reverse engineering :)

echinopsis
Apr 13, 2004

by Fluffdaddy
i had a bit of fun with them but had to use a lookup table because their response was so far from linear it wasn't even funny.. ugh and dim colours were hosed. bright colours were fantastic but I always find with poo poo like that there seems to be orders of magnitude more difference in brightness between 0-1 and between like 100-255 or whatever. I dont see in theory why you cant drive them with such a low pwm that you can do a proper fade to black rather than to dim and then off with nothing inbtween. really hosed up my plans

Sagebrush
Feb 26, 2012

you can get pretty drat close to a linear fade-out if you just use a proper gamma table, which it sounds like you did, but yeah you're always gonna be limited by the resolution since most of these things only take 8 bits per color channel.

also the context matters. you can get a pretty good looking fade to nothing if you have the LEDs running in a regular room with the lights on, and you're comparing it to the ambient level. but in the darkness, where only the LEDs are showing, your eyes are super sensitive. there's research that suggests that people can detect a single photon when they're properly accommodated for the dark. that level of control is asking too much of a 10 cent LED imo

echinopsis
Apr 13, 2004

by Fluffdaddy
some interesting facts no doubt

how hard would it be to increase the resolution? is there a practical limit to how fast you can PWM?

Sagebrush
Feb 26, 2012

if it's an rgb-on-a-chip like the WS2812 or APA102, you can't change the pwm frequency -- it's all done onboard. you send 24 bits of color data and the LED does the rest. so even if the frequency technically allows you to have better than 1/256 resolution, you can't change it. iirc the pwm frequency on the neopixels is around 100khz, which at 8 bits of resolution means a 50% duty cycle period would be like ~400hz.

if you're doing it yourself with discrete diodes, then the hard limit i guess would be the minimum transition time for the LED itself, which is gonna be nanoseconds. pwm of a few megahertz wouldn't be hard to achieve

(note that this would only work for colored diodes -- white ones use a blue LED to excite a white phosphor, and while the phosphor turns on instantly, it has a noticeable fade-out time, like an incandescent bulb)

Sagebrush fucked around with this message at 03:24 on Jul 14, 2017

echinopsis
Apr 13, 2004

by Fluffdaddy
the phosphor effect would be beneficial no??

cool

longview
Dec 25, 2006

heh.

Sagebrush posted:

you can buy SPI led strips (APA102) that are functionally identical to the neopixels (WS2812) in every way except the protocol

neopixels have some really big advantages though, namely a) cheap and b) non-expensiveness. my 5m roll was like $25 with 60 leds/m

echinopsis posted:

some interesting facts no doubt

how hard would it be to increase the resolution? is there a practical limit to how fast you can PWM?

the fastled library includes temporal dithering by default, i tried it and it definitely helped but there are limits.
it could work well for short strings (or say a bunch of shorter pieces in parallel) since the string write-time goes down and more dither-updates can be squeezed in per second, giving more resolution.

it also has nice colour modes and can apply a colour correction to all your LEDs which is pretty nice, helps keep them approximately neutral white instead of completely blue-white.

with correction on it does generate a bit of colour casting through the brightness range, especially for very low intensities. a better dither could help in theory but if that's a major issue then really you just need a higher resolution chip.

klen dool
May 7, 2007

Okay well me being wrong in some limited situations doesn't change my overall point.

Silver Alicorn posted:

I need to put down the video games for a while and pick up an idiot spare time project. any suggestions? I do not presently have a soldering station tho

You could build yourself a soldering station.

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

LP0 ON FIRE posted:

aww yes, my yospos now has a background color gradient





still messin around

code:
(function() {
    'use strict';
    window.onload = function() {
        $('div.threadbar.top, div.threadbar.bottom, div.forumbar, #forum, #filter').css({
            'background-image': 'linear-gradient(to bottom, red 0%, blue 100%)',
            'background-origin': 'border-box',
            'border-spacing': '1px',
            'border': '1px solid transparent'
        });
        document.querySelectorAll('tr.seen').forEach(function (el) {
            el.classList.remove("seen");
            el.style.backgroundColor = 'rgba(0,0,0,.5)';
        });
    };
})();

user scripts own

code:
// ==UserScript==
// @name        YOSPOS reply improver
// @namespace   qq
// @description improves discussion in YOSPOS
// @include     [url]https://forums.somethingawful.com/showthread.php*[/url]
// @include     [url]http://forums.somethingawful.com/showthread.php*[/url]
// @version     1
// @grant       none
// ==/UserScript==

const betterReplies = [
    "same",
    "its u",
    "dsyp",
    "agreed, idiot hell fucker",
    "i like how",
    "rule 36",
    "yospos bithc",
    "thants",
    "you're holding it wrong",
    "turn your monitor on"
];

const hashCode = function(text) {
  let hash = 0;
  for (let i = 0; i < text.length; i++) {
    let chr = text.charCodeAt(i);
    hash = ((hash << 5) - hash) + chr;
    hash |= 0; // Convert to 32bit integer
  }
  return hash;
};

const getReplyTo = function (post) {
    const betterPostIndex = Math.abs(hashCode(post.innerHTML)) % betterReplies.length;
    return betterReplies[betterPostIndex];
};

const improveReply = function (quote) {
    const betterReply = document.createTextNode(getReplyTo(quote));
    quote.parentNode.insertBefore(betterReply, quote.nextSibling);
    
    let currentSibling = betterReply.nextSibling;
    
    while(currentSibling) {
        if(!(currentSibling.className && currentSibling.className.includes('bbc-block'))) {
            let nodeToRemove = currentSibling;
            currentSibling = currentSibling.nextSibling;
            nodeToRemove.parentNode.removeChild(nodeToRemove);
        } else {
            return;
        }
    }
};

[...document.querySelectorAll('.forum_219 .bbc-block:not(.code)')].forEach(improveReply);

LP0 ON FIRE
Jan 25, 2006

beep boop


Wheany posted:

user scripts own

code:

// ==UserScript==
// @name        YOSPOS reply improver
// @namespace   qq
// @description improves discussion in YOSPOS
// @include     [url]https://forums.somethingawful.com/showthread.php*[/url]
// @include     [url]http://forums.somethingawful.com/showthread.php*[/url]
// @version     1
// @grant       none
// ==/UserScript==

const betterReplies = [
    "same",
    "its u",
    "dsyp",
    "agreed, idiot hell fucker",
    "i like how",
    "rule 36",
    "yospos bithc",
    "thants",
    "you're holding it wrong",
    "turn your monitor on"
];

const hashCode = function(text) {
  let hash = 0;
  for (let i = 0; i < text.length; i++) {
    let chr = text.charCodeAt(i);
    hash = ((hash << 5) - hash) + chr;
    hash |= 0; // Convert to 32bit integer
  }
  return hash;
};

const getReplyTo = function (post) {
    const betterPostIndex = Math.abs(hashCode(post.innerHTML)) % betterReplies.length;
    return betterReplies[betterPostIndex];
};

const improveReply = function (quote) {
    const betterReply = document.createTextNode(getReplyTo(quote));
    quote.parentNode.insertBefore(betterReply, quote.nextSibling);
    
    let currentSibling = betterReply.nextSibling;
    
    while(currentSibling) {
        if(!(currentSibling.className && currentSibling.className.includes('bbc-block'))) {
            let nodeToRemove = currentSibling;
            currentSibling = currentSibling.nextSibling;
            nodeToRemove.parentNode.removeChild(nodeToRemove);
        } else {
            return;
        }
    }
};

[...document.querySelectorAll('.forum_219 .bbc-block:not(.code)')].forEach(improveReply);



noice

LP0 ON FIRE fucked around with this message at 14:22 on Jul 14, 2017

Trig Discipline
Jun 3, 2008

Please leave the room if you think this might offend you.
Grimey Drawer
the most idiot project of all time award goes to

https://soundcloud.com/danwarren/yakety-sad

Doc Block
Apr 15, 2003
Fun Shoe


not all that impressive, but nifty looking. made a little visual debugger for a quadtree game level splitter/merger. the idea is it will take the tiled game level, merge identical areas into chunks that are efficient for visibility testing & rendering.

Doc Block fucked around with this message at 05:02 on Jul 23, 2017

Silver Alicorn
Mar 30, 2008

𝓪 𝓻𝓮𝓭 𝓹𝓪𝓷𝓭𝓪 𝓲𝓼 𝓪 𝓬𝓾𝓻𝓲𝓸𝓾𝓼 𝓼𝓸𝓻𝓽 𝓸𝓯 𝓬𝓻𝓮𝓪𝓽𝓾𝓻𝓮
guess I'll get back into classic Atari programming... where did I leave my mac/65 disks...

moron izzard
Nov 17, 2006

Grimey Drawer
is there an OS that support 1k+ controller inputs across 1 or more hid devices

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

moron izzard posted:

is there an OS that support 1k+ controller inputs across 1 or more hid devices

like >1000 keyboard buttons?

moron izzard
Nov 17, 2006

Grimey Drawer
any digital input really. 1000 unique inputs you could pick up in like a Unity engine game. There was someone who made a 100 button controller for an install this week at the Gallery Hop and mentioned in passing that they wanted to scale it up.

moron izzard fucked around with this message at 02:26 on Jul 24, 2017

Sagebrush
Feb 26, 2012

moron izzard posted:

is there an OS that support 1k+ controller inputs across 1 or more hid devices

windows directinput supports 128 buttons per controller, and you can have up to 127 devices per usb bus, so that's 16256 buttons i guess?

Luigi Thirty
Apr 30, 2006

Emergency confection port.

Silver Alicorn posted:

guess I'll get back into classic Atari programming... where did I leave my mac/65 disks...

my 6502 emulator is almost done then I can move on to adding a debugger and adding Apple 1 hardware

Corla Plankun
May 8, 2007

improve the lives of everyone

moron izzard posted:

is there an OS that support 1k+ controller inputs across 1 or more hid devices

i am pretty sure this is literally what midi was designed for

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Corla Plankun posted:

i am pretty sure this is literally what midi was designed for

yeah, and if not midi, osc

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