Arduino 101 - Lesson 3

Discussion in 'Welcome to the DARK side' started by paul_l, Nov 17, 2017.

  1. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    Firstly an apology for the delay in this next lesson, but due to work and his Lordships traversers this got put on the back burner, but were back :thumbs:.

    and next a big thanks to Colin, at the Elgin show he gave me some goodies to play with, including infra red detectors and a DF Player mini (a sound chip) :tophat: these will make for some interesting future projects.

    Back to the stepper motors

    Why use a stepper motor ?

    A standard DC motor has magnetic field on the outside (can or frame) and the coils on the armature. Power to the coils is via the brushes to the comutator supplying the coils. There is always an uneven number of coils, for model railways normally 3 or 5, as the coil is energised, it rotates to align with the magnetic field, however just as it aligns the power is no longer fed to that coil, it has now beig applied to the next coil causing the motor to spin - and spins quite fast, great for moving things, but is not good for exact positioning.

    A stepper motor is built the other way round, the permanent magnetic field is on the armature, and the coils arranged around the case. So when a coil is energized the armature aligns with the coil and stops, the coil is then de-energized and the next coil energized moving the armature to the next position - effectively stepping from one position to the next. Most stepper motors take 200 steps per revolution, or 1.8 degrees per full step, however there are other values available - 0.9 degree or 400 steps per rev are also common - check the motor data sheet and it will tell you the step angle.

    Now some may have spotted the "full step" comment, if you energize two coils at once the armature will align with the mid point, giving a "half step" the equivalent of 400 steps per rev. With fancy electronics in the stepper driver controller a 1/16th step can be achieved giving 3200 steps per rev. Another advantage of Half stepping is torque - by having two coils energized the torque doubles - so does the power consumption.

    For what we will be working with there are essentially two types Uni-Polar & Bi-Polar

    To save me waffling - and probably getting it wrong here is a link to explain the difference.

    The difference between Uni Polar & Bi Polar stepper motors

    The kit supplies a Uni-Polar 28BYJ-48 motor and driver card - just search ebay, amazon etc for a 28BYJ-48 stepper and you'll find lots of results from approx £1.25 upwards. Why so cheap, these motors are used for Air-con vanes and many small positional devices.

    28BJY-48 specifications

    These motors have a 64:1 gearbox attached so the step (or stride) angle is divided by 64.

    From the spec sheet we can see - Stride Angle = 5.625° /64 = 4096 steps per rev
    [​IMG]

    The top controller is the one supplied in the kit, the lower is a common one supplied with the motor online. A few differences but we cover both, but the differences are hardware based rather than software, so the sketches should be the same (I hope).

    So what are we going to make - well lets go for the jugular and try a turntable :scratchchin: :facepalm:

    Hardware

    Arduino
    28BJY-48 stepper motor
    Stepper Controller
    Limit switch
    Several push buttons - you will see why in a min.
    External power supply 5 to 12V DC (the kit has a 9V adapter)
    Actuator to drive the turntable and to strike the limit switch to set the zero position.

    Up until now the Arduino has been able to power the LED's from the usb port, adding motors and other higher current devices goes beyond what the usb port can provide, so we need an external power supply. The Arduinos power regulator can cope with input voltages upto 12V DC. Anything higer than 12V runs the risk of damaging the Arduino - the 12V aux out from many Model Railway transformers unloaded is closer to 16V, better to use a switch mode power supply - a 5/9/12V 2A wall wart supply would be fine.

    The actuator can be just a couple of cable ties - one to show the position the other to actuate the limit switch. I my case I've printed a 3d one.

    [​IMG]

    Which just slips over the motor shaft.

    OK - just need to print it off and set up the circuit

    Back later

    Paul
     
    steve likes this.
  2. Keith M

    Keith M Staff Member Moderator

    Messages:
    4,460
    Likes Received:
    2,911
    Joined:
    Dec 16, 2015
    I can see this one generating quite a bit of interest......waiting with bated breath!:giggle:

    Keith.
     
  3. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    We'll start simple, and connect up the Stepper to the controller - just plug it in, it only goes in one way unless you're using Toto's hammer.

    Connect the arduino to the controller
    Arduino Pin D8 to INA (or IN1)
    Arduino Pin D9 to INB (or IN2) * if using the 28BYJ-48 stepper change the connection to
    Arduino Pin D10 to INC (or IN3) * D9 to INC & D10 to INB
    Arduino Pin D11 to IND (or IN4)

    Arduino Gnd to controller Ground or 0V
    Arduino 5V to controller 5V

    Finally connect the power - but not just yet, disconnect the stepper motor, and connect the arduino to your PC, open the Arduino software and enter the following code (cut and paste)

    ================================================================

    /*
    Stepper Motor Control - one step at a time

    This program drives a unipolar or bipolar stepper motor.
    The motor is attached to digital pins 8 - 11 of the Arduino.

    The motor will step one step at a time, very slowly. You can use this to
    test that you've got the four wires of your stepper wired to the correct
    pins. If wired correctly, all steps should be in the same direction.

    Use this also to count the number of steps per revolution of your motor,
    if you don't know it. Then plug that number into the oneRevolution
    example to see if you got it right.

    Created 30 Nov. 2009
    by Tom Igoe

    */

    #include <Stepper.h>

    const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
    // for your motor

    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

    int stepCount = 0; // number of steps the motor has taken

    void setup() {
    // initialize the serial port:
    Serial.begin(9600);
    }

    void loop() {
    // step one step:
    myStepper.step(1);
    Serial.print("steps:");
    Serial.println(stepCount);
    stepCount++;
    delay(500);
    }

    ====================================================================

    Compile the sketch, then if no errors upload to the arduino, if all is ok, power off

    Reconnect the stepper motor

    Reconnect the power - the stepper should slowly start to rotate, if everything is ok it should rotate in the same direction

    Pictures to follow after tea

    Paul
     
  4. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    As promised

    Connect Pins 8 to 11

    [​IMG]

    To INA to IND .....

    [​IMG]

    And the 5V and GND connections

    Appologies for the camera work - I can't find my quick release plate for the tripod, so had to hand hold.

    https://youtu.be/E-fSGEBE5OQ



    I have set the delay to 5 from 500 in the sketch otherwise you wouldn't see the motor turning.

    Paul
     
  5. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    The code is quite straight forward, but does have a few things we haven't covered before.

    =====================================================================

    */

    #include <Stepper.h>

    =====================================================================

    the #include command tells the software to load the <Stepper.h> library. The library extends the capabilities of the Arduino to be adle to control the stepper motor.

    The Stepper library is very basic, later we will use the AccelStepper library instead, this library will calculate acceleration and deceleration with you only needing to provide the start and stop positions, acceleration rate and top speed.

    ====================================================================

    const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
    // for your motor

    ====================================================================

    Defines a constant whole number (integer) stepsPerRevolution, this is one of the values required to define the setup of the stepper motor. 200 is incorrect - your mission should you accept it is to determine the value, and change the sketch to the correct value fore your stepper motor, and post it up in the tread - how to do it will be become obvious a little later - patience grasshopper.

    ====================================================================

    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);


    ====================================================================

    Tells the arduino which pins you are using to control the stepper motor controller and defines the Stepper motor as myStepper

    ====================================================================

    int stepCount = 0; // number of steps the motor has taken

    ====================================================================

    Sets a counter to 0

    ====================================================================

    void setup() {
    // initialize the serial port:
    Serial.begin(9600);
    }

    ====================================================================

    Something else we haven't seen is the monitor window

    With the usb cable connected between the PC and arduino

    In the Arduino software go to the tools menu and select the Serial Monitor option.

    This will cause the current sketch to reset

    A window will pop up

    The above lines sets up the serial connection between the Arduino and the PC

    =====================================================================

    void loop() {
    // step one step:
    myStepper.step(1);
    Serial.print("steps:");
    Serial.println(stepCount);
    stepCount++;
    delay(500);
    }


    =====================================================================

    The main loop where all the work is done.

    Each time the loop is run the following happens

    myStepper.step(1) the arduino tells the controller to step 1 full step

    Serial.print("steps:"); the arduino prints "steps:" to the serial monitor (if its connected)

    Serial.println(stepCount); the arduino prints the value of the counter stepCount to the serial monitor followed by a line feed

    stepCount++; the arduino adds 1 to the value of the counter stepCount

    delay(500); the arduino waits for 500 milli seconds (0.5 sec), before starting the loop again.

    For those accepting the challenge, attach something to the shaft, and place a mark for the start point. Start up the sketch, and using the serial monitor record the steps value when you complete 360 degrees.

    Good luck :thumbup:

    Paul
     
    steve likes this.
  6. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    OK - next step pardon the pun, lets go the other way

    Here's the code - open a new sketch and cut and paste.

    ======================================================================

    /*
    Stepper Motor Control - one revolution

    This program drives a unipolar or bipolar stepper motor.
    The motor is attached to digital pins 8 - 11 of the Arduino.

    The motor should revolve one revolution in one direction, then
    one revolution in the other direction.

    Created 11 Mar. 2007
    Modified 30 Nov. 2009
    by Tom Igoe

    */

    #include <Stepper.h>

    const int stepsPerRevolution = 2048; // change this to fit the number of steps per revolution
    // for your motor

    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

    void setup() {
    // set the speed at 4 rpm:
    myStepper.setSpeed(4);
    // initialize the serial port:
    Serial.begin(9600);
    }

    void loop() {
    // step one revolution in one direction:
    Serial.println("clockwise");
    myStepper.step(stepsPerRevolution);
    delay(500);

    // step one revolution in the other direction:
    Serial.println("counterclockwise");
    myStepper.step(-stepsPerRevolution);
    delay(500);
    }

    ====================================================================

    I have changed values provided by Tom Igoe who wrote the original Sketches (those who bought the kits and downloaded / installed the software will have these sketches in the Examples menu.

    Two problems exist with the settings

    1. It looks like the sketch was written for a different stepper motor, with a stepsPerRevolution = 200, not the 2048 I have with the 28BYJ-48 stepper we are using -nuts just given the answer away for the previous post :facepalm:

    This gives an issue with this part of the code

    // set the speed at 60 rpm:
    myStepper.setSpeed(4);

    The setting in the example is 60, I have had to reduce it to 4 - with the number of steps per revolution being 2048 the motor / controller / arduino cannot complete the number of steps per min.

    200 (steps per rev) x 60 (rev per min) = 12,000 steps per min This seems to work ok

    2048 (steps per rev) x 60 (rev per min) = 122880 steps per min - the motor doesn't move it just buzzes.

    So working the other way 12000 steps per min / 2048 steps per rev = 5.8 rev per min

    I have set the speed to 4 just to be on the safe side.

    2. The motor only moves in a clockwise direction - another known issue - so I've found out on the internet.

    This is a quick fix, the coils have been wired up in the factory in the wrong order, seeminly a common fault.

    The fix swap the connection for pin 9 & 10, so you should now have

    Arduino Pin 8 to INA
    Arduino Pin 10 to INB
    Arduino Pin 9 to INC
    Arduino Pin 11 to IND

    And all works correctly, the stepper should rotate clockwise 360 degrees, stop for 0.5 sec, then rotate anti-clockwise 360 degrees stop for 0.5 sec and start again.

    I will post a video up tomorrow

    Paul

     
  7. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    I've done a bit of playing - as you do :thumbs:

    I increased the revs per min from 4 as per the sketch, in increments of 2

    Worked upto 18, failed to move at 20, tried 19 and it worked, so the max speed looks like 19 rev per min, way too fast for a turntable, so reset it back to 4 rpm for the moment.

    Paul
     
  8. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    Again sorry for the video quality, still hand hels on a high zoom.

    https://youtu.be/ldn1lQYcZSY



    So lets take a quick look at the code

    ======================================================================

    /*
    Stepper Motor Control - one revolution

    This program drives a unipolar or bipolar stepper motor.
    The motor is attached to digital pins 8 - 11 of the Arduino.

    The motor should revolve one revolution in one direction, then
    one revolution in the other direction.

    Created 11 Mar. 2007
    Modified 30 Nov. 2009
    by Tom Igoe

    */

    ======================================================================

    /* ............... */ any thing between the /* & */ ios comments and should be used to explain the sketch's function and any setup requirements

    ======================================================================

    #include <Stepper.h>

    const int stepsPerRevolution = 2048; // change this to fit the number of steps per revolution
    // for your motor

    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

    ======================================================================

    Adds the stepper library

    Define any variables required for the sketch to run, in this case stepsPerRevolution

    Finally configure the Stepper driver

    ======================================================================

    void setup() {
    // set the speed at 4 rpm:
    myStepper.setSpeed(4);
    // initialize the serial port:
    Serial.begin(9600);
    }

    ======================================================================

    Setup

    Define the stepper motor speed, in the last example we just sent a step command, had a delay then sent the next step command, this time we are defining a rotation speed in revs per min, using the .setSpeed(rpm) command

    Next we open the serial port to send messages to the serial monitor

    ======================================================================

    void loop() {
    // step one revolution in one direction:
    Serial.println("clockwise");
    myStepper.step(stepsPerRevolution);
    delay(500);

    // step one revolution in the other direction:
    Serial.println("counterclockwise");
    myStepper.step(-stepsPerRevolution);
    delay(500);
    }

    ====================================================================

    And the working end of the sketch

    First we send a message to the serial monitor "clockwise"

    Then send the command to move 1 revolution clockwise .... myStepper.step(stepsPerRevolution);

    and once complete delay for 0.5 seconds

    Next we send a message to the serial monitor "counterclockwise"

    Then send the command to move 1 revolution clockwise .... myStepper.step(-stepsPerRevolution);

    and once complete delay for 0.5 seconds

    then repeat until you switch off the arduino.

    Note the only difference between the clockwise and counterclockwise moves is the - sign before the stepsPerRevolution.

    Those wanting to play can change the stepps per rev value (e.g. setting to 512 for me gave 90 degree movement) or change the revs per minute value for me 19 was the max value before the motor / controller refused to move.

    Enjoy

    Paul
     
    steve likes this.
  9. Keith M

    Keith M Staff Member Moderator

    Messages:
    4,460
    Likes Received:
    2,911
    Joined:
    Dec 16, 2015
    My brain's beginning to hurt with all this coding!:avatar::avatar::avatar:

    Keith.
     
  10. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    Keith M wrote:
    But the cut and paste should save the fingers from RSI :avatar:

    I believe Ianvolvo has a solution for the head nipping - plenty of vino tinto - gives a permanent headache, so the extra pain from the code is less severe - seemingly :avatar:

    Paul
     
  11. gormo

    gormo Staff Member Administrator

    Messages:
    6,037
    Likes Received:
    4,247
    Joined:
    Dec 5, 2015
    This is the other end of the spectrum,

    I`ve just been looking at Ian`s Chrissy Comp. entry taster picture and now I`m reading this.......Oh boy....my head is spinning.....:confused:

    http://www.click:tophat:Gormo
     
  12. Keith M

    Keith M Staff Member Moderator

    Messages:
    4,460
    Likes Received:
    2,911
    Joined:
    Dec 16, 2015
    paul_l wrote:
     
  13. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    See I can give you an alcohol free headache - I aim to please :avatar:
     
  14. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    So we have a motor that can spin in either direction - wow

    Now lets take control of the situation

    We are going to make the turntable rotate 180 degrees when you press a push button.

    Hardware

    Arduino
    28BYJ-48 Stepper motor and controller
    Pushbutton
    Jumper wires

    As before connect stepper motor to the controller

    Connect the Arduino Pins D8 - INA, D9 - INC, D10 - INB, D11 - IND

    Connect one side of the Pushbutton to Arduino Pin D6, and the other to GND

    On my PC the usb port has enough power to run this example, so my work for you with out an external power supply.

    The code

    =====================================================================

    /*
    Stepper Motor Control - Turntable 01 - turn 180 degrees

    This program drives a unipolar 28BYJ-48 stepper motor with built in 64:1 gearbox.
    The motor is attached to digital pins 8 - 11 of the Arduino.
    Push button attached to digital pin 6 of the Arduino

    The when the button is prerssed the motor should revolve 180 degrees.

    Created 19 Nov. 2017

    by Paul Lancaster

    */

    #include <Stepper.h>

    const int stepsPerRevolution = 1024; // change this to fit the number of steps per revolution divide by 2
    // for your motor
    const int buttonPin = 6; // the number of the pushbutton pin
    int buttonState = 0; // variable for reading the pushbutton status
    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

    void setup() {
    // set the speed at 4 rpm:
    myStepper.setSpeed(4);
    // initialize the serial port:
    Serial.begin(9600);
    pinMode(buttonPin, INPUT_PULLUP);
    }

    void loop() {
    // Press button to rotate 180 degrees:
    buttonState = digitalRead(buttonPin);
    if (buttonState == LOW) {
    Serial.println("Moving");
    myStepper.step(stepsPerRevolution);
    delay(500);
    Serial.println("Stopped");
    }
    }


    =====================================================================

    The code is very similar to the last example, so you can either make the changes to the last sketch or cut and paste this into a new one.

    The video first then we'll go through the code.

    https://youtu.be/1vJ_vNEGHrs



    The code explained

    Definitions & Libraries

    =====================================================================

    #include <Stepper.h>

    const int stepsPerRevolution = 1024; // change this to fit the number of steps per revolution divide by 2
    // for your motor
    const int buttonPin = 6; // the number of the pushbutton pin
    int buttonState = 0; // variable for reading the pushbutton status
    // initialize the stepper library on pins 8 through 11:
    Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

    =====================================================================

    Load the Stepper.h library

    Set the value of stepsPerRevolution - as we are only rotating by 180 degrees divide the value you determine in the first example - in my case the stepsPerRevolution = 2048 so the value in the sketch is 2048/2 = 1024

    We are using Pin D6 for the pushbutton input, so to make easier reading we define a constant integer called buttonPin = 6
    We also define a variable called buttonState, this is used to hold the value of the pushbutton
    Finally we initialise the stepper motor.

    The setup routine

    =====================================================================

    void setup() {
    // set the speed at 4 rpm:
    myStepper.setSpeed(4);
    // initialize the serial port:
    Serial.begin(9600);
    pinMode(buttonPin, INPUT_PULLUP);
    }


    =====================================================================

    First up set the stepper motor speed - 4 rpm = approx 15 sec to complete the rotation - shows up one of the quirks of the library, for those thinking 1 full revolution = 360 degrees, 4 rpm = 15 sec per rev, so 180 degrees will take 7.5 sec, correct. However the stepper motor deals in steps not degrees, and we told it that there are 1024 steps per rev, and not the 2048 actually required to complete the 360 rotation. It works so no need to worry.

    Next we initialize the serial port

    And finally setup Pin D6 as an input, the pullup option places an internal pullup resistor on the pin so it reads as a 1 or HIGH, when we ground the pin through the pushbutton it changes state.

    Main Loop

    =====================================================================


    void loop() {
    // Press button to rotate 180 degrees:
    buttonState = digitalRead(buttonPin);
    if (buttonState == LOW) {
    Serial.println("Moving");
    myStepper.step(stepsPerRevolution);
    delay(500);
    Serial.println("Stopped");
    }
    }

    =====================================================================

    First up we read the status of the pushbutton buttonState = digitalRead(buttonPin); and store it in the variable called ButtonState

    Remember if the pushbutton is not pressed then the value of the pushbutton (Pin D6) is HIGH because of the PULLUP option.

    We now check the value of buttonState if the value is LOW then we will carry out the following actions

    print on the serial monitor "Moving"
    Instruct the stepper to move the number of steps stored in the constant stepsPerRevolution
    When the move has been completed delay for 0.5 sec
    Then print to the serial monitor "Stopped"

    We then repeat the loop.

    However if the value of Button state is HIGH - i.e. the push button is not pressed, then we do nothing, and just repeat the loop, until the push button is pressed again.

    Simples :avatar:

    There is more ............. :facepalm:

    Paul
     
  15. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    OK and why would there be more .......

    Well there are two potential issues I see with the Simple Turntable Sketch

    1/. Because we keep rotating 180 degrees clockwise, if there is any discrepancy, then we can get cumulative errors, it would be far better to rotate clockwise 1024 steps, then rotate counterclockwise 1024 steps, we should then always return to the same spot. This is be difficult to implement as we can rotate in both directions.

    2/. Everything will be OK providing we don't get a power cut mid rotation, as we will no longer line up with the entry / exit roads.

    Point 2 will need some form of Homing routine, that when ever the turntable starts, it will rotate slowly to a home position, reset its position to zero, then rotate to the entry position for the turntable - sounds harder than it actually is. We will use a limit switch, unfortunately these are not part of the arduino kit.

    Point 1 again fairly straight forward to fix, but we will make a few changes to allow us to add additional entry exit roads.

    Now to try and code it :whatever:

    Back later

    Paul
     
  16. Ron

    Ron Full Member

    Messages:
    3,342
    Likes Received:
    788
    Joined:
    Dec 5, 2015
    [size=Paul, I have the small green PCB with my kit and although I can see I can join the boards directly 1N1 to 8 etc I have no physical means of joining the power connection as I have no 'plugs' just the wires with the 'wire' ends, if that makes sense??]
    [​IMG]

    [size=But I have been practicing :][size=
    ][size=[MEDIA=youtube]HijUeLvnTQ4[/MEDIA]][size=
    ][size=Ron ]
     
  17. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    Aaaaah - Nuts :avatar:

    I have some male to male jumper cables and some male to female jumper cables - these are the ones I used.

    You can insert the controller board into the breadboard, the pitch should be the same and use the male to male jumpers to connect between the breadboard and the arduino.

    Paul
     
  18. Ron

    Ron Full Member

    Messages:
    3,342
    Likes Received:
    788
    Joined:
    Dec 5, 2015
    I'll give it a try, but not today :)
     
  19. paul_l

    paul_l Staff Member Administrator

    Messages:
    9,866
    Likes Received:
    5,929
    Joined:
    Dec 5, 2015
    Sorry Ron - just tried it and yes the pitch is correct to use the breadboard but there isn't enough clearance :facepalm:

    These are the sort of things you are looking for......

    https://www.ebay.co.uk/itm/40pcs-20cm-female-to-male-Dupont-Dupont-Wire-Color-Jumper-Cable-For-Arduino-UK/263029230605?hash=item3d3dc38c0d:g:ON0AAOSwjvJZOwCc

    Paul
     
  20. Ron

    Ron Full Member

    Messages:
    3,342
    Likes Received:
    788
    Joined:
    Dec 5, 2015
    Just ordered some F-F and some M-F wires, should be here during the week, I'll catch up then! :thumbs:
     

Share This Page