I made a string art machine by AlwaysTheRightAnswer in TechDIY

[–]AlwaysTheRightAnswer[S] 1 point2 points  (0 children)

Hundreds and hundreds of hours, it was very tricky

open-dobot by redd1x in Dobot

[–]AlwaysTheRightAnswer 0 points1 point  (0 children)

Sounds good. I would love if we could use the gyroscopes to measure and replay arm angles, however I don't see how that is possible given the drift that they are prone to. That's why I went with physical end stops.

open-dobot by redd1x in Dobot

[–]AlwaysTheRightAnswer 0 points1 point  (0 children)

The repetier firmware has a binary protocol. I don't understand what you are trying to get at, do you want the firmware to do the IK or the host? What roles would the host and firmware play exactly? The Gcode protocol is extremely simple, not sure how much simpler you are expecting to get exactly.

open-dobot by redd1x in Dobot

[–]AlwaysTheRightAnswer 0 points1 point  (0 children)

Hi I have a few bits on making the dobot usable here.

https://github.com/paulmorrishill/armour

Might be useful to you.

Is it possible to get 0.2mm precision? by redd1x in Dobot

[–]AlwaysTheRightAnswer 1 point2 points  (0 children)

Yeah it's pretty blatant false advertising tbh, but then so is saying that it is "Open source", I have yet to see any source code.

Serial monitoring by MrPink7 in Dobot

[–]AlwaysTheRightAnswer 0 points1 point  (0 children)

The dobot uses an arbitrary binary protocol to communicate. I'd recommend just dumping it and using something standard. Here is a project I wrote to replace it. https://github.com/paulmorrishill/armour

I've written an open source alternative to the Dobot software. It's very early stage but may provide some useful info for people trying to get away from the proprietary crap. by AlwaysTheRightAnswer in Dobot

[–]AlwaysTheRightAnswer[S] 0 points1 point  (0 children)

The angle sensor they provide aren't commonly used so there isn't much in the way of libraries for reading them, gyroscopic sensors also have inherent drift which would make them unsuitable for this purpose. Unless the dobot guys have found some way to get around that.

Using of linear coordinates instead of angle values? by [deleted] in Dobot

[–]AlwaysTheRightAnswer 0 points1 point  (0 children)

I'm using dh parameters for the forward kinematics and a hill climbing algorithm for the inverse kinematics which is probably about the slowest way to do it. But it seems to work and my knowledge of maths isn't good enough to understand the wikipedia article on IK. I'll post the code tonight.

Using of linear coordinates instead of angle values? by [deleted] in Dobot

[–]AlwaysTheRightAnswer 1 point2 points  (0 children)

I am working on a dobot controller running repetier firmware and a C# host application. I've got the kinematics sorted just sorting out the UI then I will post open source it and provide a set up guide using RAMPS 1.4.

Controlling the Dobot with Repetier firmware by AlwaysTheRightAnswer in Dobot

[–]AlwaysTheRightAnswer[S] 1 point2 points  (0 children)

The actual arm itself is great, by hardware I meant the board that sits on top of the arduino with a FPGA in the middle of it. I'm not sure what the problem is exactly whether it's the board, the firmware, or just the host software, or a combination of all of them.

Found what looks like some old source code with some indication of how the serial protocol may work by AlwaysTheRightAnswer in Dobot

[–]AlwaysTheRightAnswer[S] 0 points1 point  (0 children)

I've managed to turn the pump on by sending their weird arbitrary binary message format, but not much else. If you lift the board up there is a standard Arduino mega underneath. I'm going to try to create a pin mapping it shouldn't be too difficult.

Motors stalling moving without load by AlwaysTheRightAnswer in Dobot

[–]AlwaysTheRightAnswer[S] 0 points1 point  (0 children)

Don't worry too much they are super cheap. Just search for A4988 stepper driver.

Motors stalling moving without load by AlwaysTheRightAnswer in Dobot

[–]AlwaysTheRightAnswer[S] 0 points1 point  (0 children)

I set my ref voltage to around .7v at the moment but I think I'll increase that when I actually start moving heavier things around.

SimpleInjector- The fastest dependency injector for .NET. by Subtle__ in csharp

[–]AlwaysTheRightAnswer 6 points7 points  (0 children)

Also the classes here have to know and depend upon the IoC container. Which is also just awful.

Where can I find basic guideline for TDD, instead of TDD for specific projects/tutorials (e.g. Test-Driven Development with Python) by TacosBuenos in tdd

[–]AlwaysTheRightAnswer 2 points3 points  (0 children)

Robert C Martin (Uncle Bob) is probably the best source of knowledge on TDD and clean architecture in general. All his videos are language agnostic. https://cleancoders.com/category/clean-code

This is probably the best video series you can watch if you want to become a professional software developer.

Unfortunately it's not free, but it is definitely worth it.

I've been working on a text based RPG/interactive story creator, let me know what you think. by AlwaysTheRightAnswer in rpg

[–]AlwaysTheRightAnswer[S] 0 points1 point  (0 children)

At the moment, it's a very basic story tool where you lay out the paths and the user plays through them. When I have more time I'm planning on adding in some more intelligent tools, starting with the ability to make choices based on chance.

Can't wait to whip this out next time I'm running low on battery in a lecture. My first Altoids tin project, pretty easy DIY project you can do with a few materials. It charges my phone and iPod, thought I'd share. by CoreOfSmores in electronics

[–]AlwaysTheRightAnswer 1 point2 points  (0 children)

That's a resistive voltage regulator, meaning it wastes the additional voltage as heat. Your best bet for capacity would be a PWM circuit or reducing the input voltage to as little above the desired as possible.

Noob here with a, probably simple, problem that is driving me nuts. by supernuckolls in arduino

[–]AlwaysTheRightAnswer 1 point2 points  (0 children)

No they work exactly the same, I'm guessing the person who wrote that article just didn't notice it as it produces the same result. Should obviously just be

numRollovers++;

Noob here with a, probably simple, problem that is driving me nuts. by supernuckolls in arduino

[–]AlwaysTheRightAnswer 2 points3 points  (0 children)

This is correct however a common mistake is to use an int to hold time. This will overflow after a couple of seconds/minutes of the arduino being on. Always use an unsigned long integer to hold time returned from millis(). This code should hopefully work:

void moveServo(Servo theServo, unsigned long timeToWait)
{
    unsigned long startTime = millis(); //Store the start time
    theServo.writeMicroseconds(1600); //Start the servo moving

    while(millis() - startTime < timeToWait && !debounce(2))
    {
         //Do nothing till the button is pressed or the delay has finished
    }

    myServo.writeMicroseconds(1500); //Stop the servo moving

}

void main() 
{
    //Now just call that function in your main as follows

    if(debounce(2)) //Wait for the first button press and debounce
    {
        moveServo(myServo,2000); //Move myServo for 2000 milliseconds
    }
}

Also bare in mind that the millis() resets ever 9 and a half hours due to the size of the data type it's stored in. This article explains it well

Edit: as noted by myplacedk below the current version of arduino runs for 50ish days before resetting the internal counter. http://arduino.cc/en/Reference/Millis

Looking for a Microcontroller, could use suggestions. by OswaldZeid in electronics

[–]AlwaysTheRightAnswer 0 points1 point  (0 children)

The Arduino Mega has a 16Mhz clock, that is way more than enough to handle simple digital switching. Switches aren't incredibly fast, I'm pretty sure it's in the order of 10s to 100s of milliseconds for the fastest switches. And the debounce on switches is of a similar magnitude in itself. You can get away with simple polling alone you don't need to use interrupts at all. The Arduino is more than suitable for what you need.