Throw out your breadboard! Dr. Duino: An Arduino Shield for debugging and developing

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 พ.ค. 2024
  • 🤩 How much Arduino can you learn in 7 Days? 👇
    bit.ly/7_Day_Arduino_Challenge
    **If you like this, I think you'll like the premium Arduino training we offer. Check it out here** bit.ly/3nSBPUs
    Click Below to Read About This Topic on Our Website
    programmingelectronics.com/th...
    Description:
    In the last couple of episodes we have talked about Arduino shields and breakout boards. In this video, we will review a specific Arduino shield that makes developing projects and debugging sketches on the Arduino extremely easy - it's called Dr. Duino.
    An Arduino Shield for Arduino Shields
    The Dr. Duino is an Arduino Shield. As would expect, it fits snuggly on top of the Arduino headers and has pin headers of it's own, which can easily accept a shield on top.
    The first thing you notice about Dr. Duino is that it's built like a doughnut - it's got a giant hole in the middle! (FYI - It does not taste like said pastry…)
    There are a couple reasons for this form factor, but foremost is that even after you stack another shield on top of Dr. Duino, you still have easy physical access to all its resources.
    Dr. Duino Hardware Resources
    What resources are we talking about? Dr. Duino has 4 momentary pushbuttons, 5 LEDs, 6 potentiometers, an RS232 connector, and a bunch of access points for 5 volts, 3.3 volts and ground, oh yeah, and a siren (piezo buzzer).
    So how do you access these resources and why would you even care to? Both great questions!
    The core feature that allows us to use all the hardware I just talked about are groups of three “jumper” pins that surround the board.
    Almost every pin on the Arduino is associated with a set of these jumper pins. The middle pin is connected directly to the Arduino pin.
    The pin on the left is connected to the pin header on top of the Dr. Duino. The pin on the right is connected to the one of the hardware resources on the Dr. Duino board.
    With each set of these three jumper pins we get a plastic encased "jumper" - it fits snug on top 2 pins, and electrically connects them together.
    For every Arduino pin that has associated Dr. Duino jumper pins we have 2 decisions:
    1) We can route the Arduino pin to the shield above by connecting the center pin to the jumper pin on the left. This passes the Arduino pin directly up to the shield if you have one attached, bypassing the Dr. Duino.
    2) Or, we can route the Arduino pin to the resource on the Dr. Duino shield, bypassing the shield above. Each pin has a different "resource" or piece of hardware that you can use.
    Here is a quick mnemonic for remembering how to place the “jumper” on the “jumper pins” - Left goes Up (to the shield above), Right goes to Down (to the Dr. Duino).
    Digital pins 5, 6, 10, 11, and 13 have LEDs attached. Digital Pins 7, 8, 9 and 12 have momentary pushbuttons attached. Analog pins A0 - A5 have potentiometers attached and digital pin 3 is attached to the piezo buzzer.
    All these asset are extremely helpful.
    For example, let's say I am prototyping with a motor shield. What I want is for every time I press a button, then a servo moves 180 degrees. Instead of having to bust out a breadboard and jumper wires, I simply move a jumper on the Dr. Duino and I now have a preinstalled button. As long as the shield is not using that pin for anything, it's fair game to route that pin to the Dr. Duino.
    Or, maybe I want to turn a potentiometer to get the servo to move. Once again - scrap the breadboard - just move a jumper on one of the analog pins and you have a built in potentiometer - in fact, every analog pin has its own dedicated potentiometer! Trying to put 6 potentiometers on a breadboard and run jumpers is a major pain - having these built right in and so compact is great.
    Potentiometers are great for simulating sensor inputs too. Say you are developing a project that lights up LEDs based on inputs from a pressure sensor - but you don't have the sensor yet. No worries - just use the potentiometer built in to the Dr. Duino to simulate the input from the pressure sensor.
    Another great resource is the piezo buzzer. Most of us get used to using the serial window to debug our sketches. For example - we use the Serial .print() function to send a value to the serial monitor window when some threshold is met.
    Read more at...
    opensourcehardwaregroup.com/d...
    About Us:
    This Arduino tutorial was created by Open Source Hardware Group. We are an education company who seek to help people learn about electronics and programming through the ubiquitous Arduino development board.
    Have an awesome day!

ความคิดเห็น • 17

  • @fpvrcstuff
    @fpvrcstuff 5 ปีที่แล้ว +4

    I think for beginners the breadboard is a great tool for learning circuits. This shield takes away that learning process!

  • @moniiiiiiiiii
    @moniiiiiiiiii 7 ปีที่แล้ว

    Dr. Duino + Ruggeduino = pure awesomeness and protection

  • @user-qr4jf4tv2x
    @user-qr4jf4tv2x ปีที่แล้ว

    Dr. Duino + Ruggeduino should be available in Arduino kits online but they sadly not cheap for everyone

  • @SunnyWu
    @SunnyWu 7 ปีที่แล้ว

    Dang really cool and useful shield.

  • @bonilla2022
    @bonilla2022 5 ปีที่แล้ว

    Great video , Thanks!!! :-)

  • @gimmieliberty6514
    @gimmieliberty6514 3 ปีที่แล้ว

    i put my breadboard in the bin, getting the soldering iron out,going to solder resistors to leds, leads to all pins going to 6 amp connector blocks,all components going to 6 amp blocks and a breadboard made of connector blocks

  • @Life--and--Living
    @Life--and--Living 5 ปีที่แล้ว

    how many MPU6050 sensors can be connect to uno? Can those sensors be able to send their respective data?
    Typically Arduino UNO

  • @jameselliott9397
    @jameselliott9397 5 ปีที่แล้ว

    Is there a doctor code library?

  • @kalidabdul6862
    @kalidabdul6862 3 ปีที่แล้ว

    Where do I buy dr. Duino

  • @programmingelectronics
    @programmingelectronics  3 ปีที่แล้ว +1

    ****If you like this, I think you'll like the premium Arduino training we offer. You can check it out here**** bit.ly/3lHyzcB

  • @NMrick505
    @NMrick505 9 ปีที่แล้ว +1

    Uh-Oh....page not found using link

  • @JerryEricsson
    @JerryEricsson 8 ปีที่แล้ว

    Gotta say thanks, suddenly my ESP8266 programmers board which has no directions in English that I have found looks a lot like your dr duino perhaps the comparison can make them useful.

  • @CaraAmar
    @CaraAmar 7 ปีที่แล้ว +1

    the best shield! this is what im lf! problem solved :v

  • @mattroh7248
    @mattroh7248 7 ปีที่แล้ว +1

    Ok, Dr.duino is good, but why throw out our breadboard?

    • @CaraAmar
      @CaraAmar 7 ปีที่แล้ว

      for people who using a breadboard in their arduino robot car, why you so.....lol jk

  • @whiemp5620
    @whiemp5620 5 ปีที่แล้ว

    PLEASE DEBUG THIS UNO OR MEGA CODE: /* Mini CNC Plotter code */
    #include
    #include
    #define LINE_BUFFER_LENGTH 512
    char STEP = MICROSTEP ;
    // Servo position for Up and Down
    const int penZUp = 95;
    const int penZDown = 83;
    // Servo on PWM pin 10
    const int penServoPin =10 ;
    // Should be right for DVD steppers, but is not too important here
    const int stepsPerRevolution = 48;
    // create servo object to control a servo
    Servo penServo;
    // Initialize steppers for X- and Y-axis using this Arduino pins for the L293D H-bridge
    AF_Stepper myStepperY(stepsPerRevolution,1);
    AF_Stepper myStepperX(stepsPerRevolution,2);
    /* Structures, global variables */
    struct point {
    float x;
    float y;
    float z;
    };
    // Current position of plothead
    struct point actuatorPos;
    // Drawing settings, should be OK
    float StepInc = 1;
    int StepDelay = 0;
    int LineDelay =0;
    int penDelay = 50;
    // Motor steps to go 1 millimeter.
    // Use test sketch to go 100 steps. Measure the length of line.
    // Calculate steps per mm. Enter here.
    float StepsPerMillimeterX = 100.0;
    float StepsPerMillimeterY = 100.0;
    // Drawing robot limits, in mm
    // OK to start with. Could go up to 50 mm if calibrated well.
    float Xmin = 0;
    float Xmax = 40;
    float Ymin = 0;
    float Ymax = 40;
    float Zmin = 0;
    float Zmax = 1;
    float Xpos = Xmin;
    float Ypos = Ymin;
    float Zpos = Zmax;
    // Set to true to get debug output.
    boolean verbose = false;
    // Needs to interpret
    // G1 for moving
    // G4 P300 (wait 150ms)
    // M300 S30 (pen down)
    // M300 S50 (pen up)
    // Discard anything with a (
    // Discard any other command!
    /**********************
    * void setup() - Initialisations
    ***********************/
    void setup() {
    // Setup
    Serial.begin( 9600 );
    penServo.attach(penServoPin);
    penServo.write(penZUp);
    delay(100);
    // Decrease if necessary
    myStepperX.setSpeed(600);
    myStepperY.setSpeed(600);
    // Set & move to initial default position
    // TBD
    // Notifications!!!
    Serial.println("Mini CNC Plotter alive and kicking!");
    Serial.print("X range is from ");
    Serial.print(Xmin);
    Serial.print(" to ");
    Serial.print(Xmax);
    Serial.println(" mm.");
    Serial.print("Y range is from ");
    Serial.print(Ymin);
    Serial.print(" to ");
    Serial.print(Ymax);
    Serial.println(" mm.");
    }
    /**********************
    * void loop() - Main loop
    ***********************/
    void loop()
    {
    delay(100);
    char line[ LINE_BUFFER_LENGTH ];
    char c;
    int lineIndex;
    bool lineIsComment, lineSemiColon;
    lineIndex = 0;
    lineSemiColon = false;
    lineIsComment = false;
    while (1) {
    // Serial reception - Mostly from Grbl, added semicolon support
    while ( Serial.available()>0 ) {
    c = Serial.read();
    if (( c == '
    ') || (c == '
    ') ) { // End of line reached
    if ( lineIndex > 0 ) { // Line is complete. Then execute!
    line[ lineIndex ] = '\0'; // Terminate string
    if (verbose) {
    Serial.print( "Received : ");
    Serial.println( line );
    }
    processIncomingLine( line, lineIndex );
    lineIndex = 0;
    }
    else {
    // Empty or comment line. Skip block.
    }
    lineIsComment = false;
    lineSemiColon = false;
    Serial.println("ok");
    }
    else {
    if ( (lineIsComment) || (lineSemiColon) ) { // Throw away all comment characters
    if ( c == ')' ) lineIsComment = false; // End of comment. Resume line.
    }
    else {
    if ( c = LINE_BUFFER_LENGTH-1 ) {
    Serial.println( "ERROR - lineBuffer overflow" );
    lineIsComment = false;
    lineSemiColon = false;
    }
    else if ( c >= 'a' && c