Jump to content


  • Content Count

  • Joined

  • Last visited

1 Follower

About GuilleAcoustic

  • Rank

Profile Information

  • Gender
  • Location
  • Interests
    Programming, drawing and audio related electronics.
  1. Last modification: Added sowftware switch debouncingCode cleanup#include <Mouse.h>/* ================================================================================ Author : GuilleAcoustic Date : 2015-05-22 Revision: V1.1 Purpose : Opto-mechanical trackball firmware -------------------------------------------------------------------------------- Wiring informations: Sparkfun Pro micro (Atmega32u4) -------------------------------------------------------------------------------- - Red : Gnd | Pin: Gnd - Orange : Vcc (+5V) | Pin: Vcc - Yellow : X axis encoder / channel A | Pin: PD3 - (INT0) - Green : X axis encoder / channel B | Pin: PD2 - (INT1) - Blue : Y axis encoder / channel A | Pin: PD0 - (INT2) - Violet : Y axis encoder / channel B | Pin: PD1 - (INT3) - Grey : Switch 1 | Pin: PB3 - White : Switch 2 | Pin: PB2 - Black : Switch 3 | Pin: PB1 -------------------------------------------------------------------------------- Latest additions: - 2016-01-28: Software switch debouncing ================================================================================ */// =================================================================================// Type definition// =================================================================================#ifndef DEBOUNCE_THREASHOLD#define DEBOUNCE_THREASHOLD 50#endif// =================================================================================// Type definition// =================================================================================typedef struct ENCODER_{ int8_t coordinate; uint8_t index;} ENCODER_;typedef struct BUTTON_{ boolean state; boolean needUpdate; char button; byte bitmask; long lastDebounceTime;} BUTTON_;// =================================================================================// Constant definition// =================================================================================const int8_t lookupTable[] = {0, 1, -1, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, -1, 1, 0};// =================================================================================// Volatile variables// =================================================================================volatile ENCODER_ xAxis = {0, 0};volatile ENCODER_ yAxis = {0, 0};// =================================================================================// Global variables// =================================================================================BUTTON_ leftButton = {false, false, MOUSE_LEFT, 0b1000, 0};BUTTON_ middleButton = {false, false, MOUSE_MIDDLE, 0b0010, 0};BUTTON_ rightButton = {false, false, MOUSE_RIGHT, 0b0100, 0};// =================================================================================// Setup function// =================================================================================void setup(){ // Attach interruption to encoders channels attachInterrupt(0, ISR_HANDLER_X, CHANGE); attachInterrupt(1, ISR_HANDLER_X, CHANGE); attachInterrupt(2, ISR_HANDLER_Y, CHANGE); attachInterrupt(3, ISR_HANDLER_Y, CHANGE); // Start the mouse function Mouse.begin();}// =================================================================================// Main program loop// =================================================================================void loop(){ // Update mouse coordinates if (xAxis.coordinate != 0 || yAxis.coordinate != 0) { Mouse.move(xAxis.coordinate, yAxis.coordinate); xAxis.coordinate = 0; yAxis.coordinate = 0; } // --------------------------------- // Left mouse button state update // --------------------------------- ReadButton(leftButton); UpdateButton(leftButton); // --------------------------------- // Right mouse button state update // --------------------------------- ReadButton(rightButton); UpdateButton(rightButton); // --------------------------------- // Middle mouse button state update // --------------------------------- ReadButton(middleButton); UpdateButton(middleButton); // Wait a little before next update delay(10);}// =================================================================================// Interrupt handlers// =================================================================================void ISR_HANDLER_X(){ // Build the LUT index from previous and new data xAxis.index = (xAxis.index << 2) | ((PIND & 0b00000011) >> 0); xAxis.coordinate += lookupTable[xAxis.index & 0b00001111];}void ISR_HANDLER_Y(){ // Build the LUT index from previous and new data yAxis.index = (yAxis.index << 2) | ((PIND & 0b00001100) >> 2); yAxis.coordinate += lookupTable[yAxis.index & 0b00001111];}// =================================================================================// Functions// =================================================================================void ReadButton(BUTTON_& button){ // Variables long currentime; boolean switchState; boolean debounced; // Get current time currentime = millis(); debounced = (currentime - button.lastDebounceTime > DEBOUNCE_THREASHOLD); // Get current switch state switchState = !(PINB & button.bitmask); // Button state acquisition if ((switchState != button.state) && debounced) { button.lastDebounceTime = currentime; button.state = switchState; button.needUpdate = true; }}void UpdateButton(BUTTON_& button){ if (button.needUpdate) { (button.state) ? Mouse.press(button.button) : Mouse.release(button.button); button.needUpdate = false; }}
  2. Hi folks, I'm a happy user of an Apple M0110 keyboard that I converted using Hasu's TMK converter. While I love this keyboard, I really couldn't stand the physically locking Caps Lock (that I use as the Ctrl key). The switch used is the vintage Alps SKCC Lock, that has a physical locking mechanism: http://deskthority.net/wiki/Alps_SKCC_Lock Lowpoly observed that the SKCC Lock switch stem is shorter than the other switches stem and as a consequence the Caps Lock keycap as a longer mounting point to compensate: https://geekhack.org/index.php?topic=20898.0 [image courtesy of Lowpoly] [image courtesy of Lowpoly] If you want to use a standard SKCC in place of the SKCC Lock switch, you have to dremel the Caps Lock keycap ... I do not like the idea of damaging it :unsure: [image courtesy of Lowpoly] My idea is a very simple. This humble mod consists in opening the switch to remove the locking mechanism (the bended yellow wire and the small brown lug). The "big" easily noticable tabs are for the plate mounting. To open the switch you have to slightly release the very small tabs on the other sides (be careful as they are fragile). Then you just have to reassemble the switch. The real plus of this solution is that you can still reverse the mod and go back to the vanilla locking switch and the keycap remains untouched. Enjoy :P ! Note: I had to desolder the switch to open it as the plate blocks the tabs if you don't.
  3. Great day, I finaly got my Domino Pi and my Domino core. The Domino Pi is just a Core soldered onto a prototyping board. This is running openWRT embedded Linux and has WiFi and LAN. The idea is to use it to play web radios / shoutcasts. It has an I2S bus that I plan to connect to an I2S DAC board to feed a valve amplifier made from the 30's Philips TSF radio I found.
  4. I won't use it as computer not TV speaker. That is and I'm glad they still work. I'm impressed that they can produced "so much" sound out of an headphone output, but they are high efficiency speakers after all.
  5. This thread isn't dead. I'm currently repurposing an old Telefunken valve radio from the 60's. It was an all-in-one furniture with fullrange paper cone and alnico magnet drivers, electrostatic tweeter and valve receiver and amplifier. The fullranges are working, as you can see on the video below. They are driven from the headphone plug, with no amp nor cabinet, but they work and sounds nice as is. The electrostatic tweeters need refoaming before they can work. The amp and receiver will need recaping, as always with old electronics. The idea is to make a cabinet for the speakers and one for the receiver (and maybe just rebuild an amplifier from the components but with no receiver). https://youtu.be/7Pin79G444g
  6. Nothing really new, but I finally made an inline TTMK converter for my Apple M0110: The keyboard is yellowed, but it really matches the yellow from the ball (which is original colour). Next step it to make a definitive cable using a smaller AVR and a nicely sleeved cable.
  7. Thank you. This is very important for to use local and "green" materials. I remember this case, but not the design process. Sketchup is a great tool for the design phase, but it has a major drawback : The never ending drawing board ! At one point, I'll have to stop procrastinating and start building the thing :rolleyes:
  8. Lately, I've beem thinking about what this design would look if it was derivated into other form factor. Below is a first try at an mATX version of the case: It still features a slide-in inner skeleton, but now the chassis is opened back, in order for the two 180mm front fans to push the air outside the chassis. I spent very little time in this, it was only to have a rough idea of the volume and the overall look. I have several ideas that I'd like to model before going further. Important points: Materials MUST come from local industries (sawmill, metallurgist, etc.) Materials MUST be made from recycled ones, when possible Materials MUST be natural (metal, wood, coton sleeving, etc.) No plastic, no paint
  9. Thanks a lot everyone. Concerning the memory, I'm planning to use very low profile modules and I measured a 23mm clearance between the memory modules and the Macho Zero.
  10. Thanks a lot ! I've made some changes in order to use and waste as little material as possible. The chassis in now composed of 2 parts. The inner skeleton: This is a single rectangle of aluminium folded into a U shape. The 180mm fan is now a structural element of the chassis, being the fourth side attached to the top and bottom panel through 2 bended tabs. The outter shell: This is a wood case inside of which you slide the whole skeleton. You'll only have to secure the skeleton to it with a single screw at the back of the chassis. Edit: Been adding smaller decoupling spikes from Monacor. I think it looks far better than the bigger ones from Viablue. I'm wondering one thing. Should I orient the heatsink toward the fan (like on the left) or toward the exhaust grid (like on the right) ?
  11. New revision of the design:Front fan is mounted inside the chassis nowViablue HS Silver spikes are now modeled I have to work out a way to attach the side panels to the chassis. The spiky feet is a platform as I'd like the chassis to be stackable if you don't use the platform. Been thinking about adding a cork layer under the chassis to reduce vibrations. Again, all comments are welcomed :D. Edit: I also added a real wood texture to the side panels, this looks way better than the proxy color.[Cherry wood] [Chestnut wood] [Oak wood]
  12. I've been testing a front made out of lighter colored wooden blades. Also, I'm still hesitating between 1x 180mm front fan with passive HR-22 or a Noctua tower with 2x 120mm (but no 180mm front fan). I already have a spare Noctua NH-U12P from my previous Intel Q6600 and I have 2x 120mm Noctua PWM fans. Reusing them would lower the final bill and I'd have more to throw at the material (wood, alumiinum sheet, thoughed smoked glass, etc.).
  13. Thanks a lot, that matter a lot to me. Most of the ideas are sorted now and I'm only left with the details: assembly (probably dove tails or morteses), witch wood (cherry) and cpu / motherboard choice. The hardware parts are tied to the amount I'll get from my current parts.
  14. Another solution: I go the ITX way and I sell my Gryphon Z87. Heatsink is a Thermalright HR-22 and the chassis has a single 180mm fan blowing at it. Note: Front panel is not showed, but I'm thinking about vintage speaker cloth streched over a frame mounted to the chassis with small magnets or grill inserts : http://www.kldguitar.com/KLDguitar-English/KLDguitar-accessories/KLDguitar-British-Style-Speaker-Grill-Cloth.html Edit: I've added a quick vintage speaker cloth front panel. I can play with the pattern by simply changing the texture file linked to the material.
  15. Not sure to go with watercooling though as I have a few problem on my car :wallbash: (never buy a Renault). Another point, I'm really gaming anymore and I'm considering selling the GTX770. Computer usage will be my usual tinkering / hobby (digital painting, coding, writting, music). I'll keep the idea of a minimalist looking computer and thinking around that lines. Edit: Here is my idea, still need to be dressed beautifuly but those are the lines My idea is to sell my GTX770, my i5-4570 and my 2x 4GB to buy a 35W i7 and 16GB of very low profile DDR3 (ideally 1.2V). I'll trade the Noctua NH-C14 for a Noctua NH-D9L that will be run passively. Next step is the PSU. I'm very tempted in these 250W DC-DC from HDPlex: http://www.hd-plex.com/HDPLEX-250W-Hi-Fi-DC-ATX-Power-Supply-16V-24V-Wide-Range-Voltage-Input.html
  • Create New...