Nunchuk Controlled SainSmart 6-Axis Robotic Arm with Arduino

Vivian Liによって

Overview

 

Robotic arms are awesome! Factories all over the world have them, where they paint, solder and carry stuff with precision. They can also be found in space exploration, subsea remote operated vehicles, and even in medical applications!

And now you can have a cheaper version of them at your own home, office or lab! Tired of doing a repetitive job? Program your own robot to help you... or to mess things up! :D

In this tutorial I show you how to mount a robotic arm, and how to program it using an Arduino Mega. For this project I also wanted to experience a different method for controlling a robotic arm: using a Nintendo Nunchuk! They are cheap, easy to find, and have a bunch of sensors.

There are several ways you can use this tutorial. If you don't have a robotic arm kit (and doesn't want to buy or build one) you can still use it to learn something about Arduino programming, and how to interface an Wii Nunchuk to your own projects. You can also use it to practice your electronics and mechanic skills.

Step 1: Tools and Materials

   
  

The following tools and materials were used in this project:

Tools and materials:

  • Solder iron and wire. I had to solder some terminals to Nunchuk's wires in order to connect it to the Arduino;
  • Shrinking tube. Some pieces of shrinking tube were used for a better isolation of the conductors;
  • Screwdriver. The structure is mounted using some bolts and nuts;
  • 6-axis mechanical desktop robotic arm. This awesome kit already comes with several components as described bellow. It's reliable and easy to assemble;
  • 12V power supply (2A or more);
  • Nunchuk controller It interfaces to the Arduino board, and it's used to control the robotic arm;
  • Male jumper wires (4 wires);
  • Arduino Mega Notice that the robotic arm kit I've used also has a board and controller bundle that already comes with this Arduino board. If you you're not using on of those kits, you might use other Arduino boards as well;

I was informed later that there's a Nunchuk adapter that makes the connection to a breadboad easier. It's a good option if you want to same some time on soldering and doesn't want to destroy the original connector as described on Step 9.

Sain Smart 6-axis mechanical desktop arm already comes with the following components:

You might find other robotic arm kits online, or even design your own. There are some awesome projects you can 3D print, for instance.

In the following 7 steps I'll show you how to assemble the arm kit before wiring up the circuits. If you doesn't have a similar kit, feel free to jump some steps. You can use another robotic arm kit, assemble it and jump directly to the electronics and programming steps.

At each step, there is an animated gif, showing how my robotic arm was assembled. It only runs on website's desktop version.

Step 2: Assembling the Robotic Arm Pt1 - Base



 

The first part to be assembled is the base of the robot.

It's made of two U shaped brackets, joined back to back using four M3 bolts and nuts, as shown in the pictures. This is propably the easiest part to be mounted.

Step 3: Assembling the Robotic Arm Pt2 - Servo #1

 

The first servomotor is mounted perpendicular to the base, using a servo bracket. This profile is attached to the base using four M3 bolts and nuts, as it's shown in the pictures. Servo #1 is place on it's top, and attached using four M3 bolts and nuts.

A circular metal horn is attached to the servo axis. The kit comes with several plastic horns. They won't be used for assembling the robot.

Step 4: Assembling the Robotic Arm Pt3 - Servo #2




Another servo bracket is mounted perpendicular to the previous one. It's connected to servo #1 horn using four M3 bolts. Servo #2 is installed with four M3 bolts and nuts, and also uses a circular metal horn.

An U bracket is then attached to the horn using four bolts. Notice that a M3 bolt is used oposite the servo axis. It gives stability to the structure. A bearing fits on this bolt, and it's locked in position using another M3 nut. This way the U bracket is tightly attached to servo #2 center axis.

Step 5: Assembling the Robotic Arm Pt4 - Servo #3





 

 

Another U bracket is mounted using four M3 bolts and nuts.

On the other end, servo #3 is installed, using a circular metal horn and four bolts. A servo bracket is connected to the servo motor, and a L shaped profile is linked to the servo bracket using some bolts and nuts.

Notice that another bearing is used oposite to the servo axis, as described before.

Step 6: Assembling the Robotic Arm Pt4 - Servo #4



 

Another U bracket is connected to the L shaped profile using a set of four M3 bolts and nuts. Similarly to the previous step, servo #4 is mounter to the U bracket using four bolts. Another servo bracket is connected to the servo.

Step 7: Assembling the Robotic Arm Pt4 - Servo #5



 

The fifth servo is connected perpendicular to servo #4 using another servo bracket, installed using four M3 bolts and nut.

Step 8: Assembling the Robotic Arm Pt4 - Servo #6



 

The gripper is then connected to servo #5 axis. On it's top, servo #6 is connected using some bolts, nuts and a metal horn. The gripper has some gears, which will turn the rotation of the servo into a linear movement of the gripper.

Step 9: Preparing Nunchuk Controller

 

  

For this project I decided to use a Nintendo Nunchuk controller for a number of reasons:

  1. They are cheap! Replicas might have a inferior quality, but I didn't need a robust controller for this project;
  2. They are easy to find! There are several original and inexpensive replicas online.
  3. It has lots of sensors! Each controller has two buttons (Z and C buttons), a two axis joystick (X and Y) and a three axis accelerometer;
  4. It has an Arduino library. Robert Eisele designed an amazing and easy to use library for reading Nunchuk sensor. Check it out: https://www.xarg.org/2016/12/using-a-wii-nunchuk-with-arduino/

Unfortunatelly Nunchuk joysticks have a complicated connector, hard to interface with other electronics. In order to connect it to the Arduino, I had to cut its cable and expose it's wires. This way, it won't work with a Nintendo Wii anymore... :/

First I had to cut the connector of the joystick and remove the insulation of the wires. Using a multimeter, and based on the color of each wire, I determined the function of each wire (Vcc, GND, SCL and SDA) based on the schematic of the connector shown in the picture. The color of the wires has no standard. I've already heard of the following possibilities:

Original:

  • SDA = green
  • SCL = yellow
  • 3V3 = red
  • GND = white

Replica #1:

  • SDA = yellow
  • SCL = white
  • 3V3 = green
  • GND = red

Replica #2:

  • SDA = blue
  • SCL = white
  • 3V3 = pink
  • GND = green

I soldered the wires to a male jumper , for an easier connection to the Arduino board. For that, I used a soldering iron, and some shrinking tube, as its shown on the pictures.

I was informed later that there's a Nunchuk adapter that makes the connection to a breadboad easier. It's a good option if you want to same some time on soldering and doesn't want to destroy the original connector.

Step 10: Wiring Up the Circuits



 

Once the structure is assembled, and Nunchuk connectors are finished, you'll be ready to wire up the circuits. I used the controll board shield that came along with my robotic arm kit. It makes the connection of the components easier, since it already comes with specific connectors for the servomotors, power supply, etc.

Connect the components as follows:

Nunchuk:

  • Nunchuk pin 6 (SCL) => Arduino Mega Pin 21 (SCL) (on the shield)
  • Nunchuk pin 1 (SDA) => Arduino Mega Pin 20 (SDA) (on the shield)
  • Nunchuk pin 3 (Vcc) => Ardino Mega Pin 3V3 (on the shield)
  • Nunchuk pin 4 (Gnd) => Arduino Mega Pin Gnd (on the shield)

If you're using an Arduino Uno, Nunchuk' SCL and SDA pins shall be connected to different Arduino pins, as follows:

  • Nunchuk pin 6 (SCL) => Arduino Uno Pin A5
  • Nunchuk pin 1 (SDA) => Arduino Uno Pin A4
  • Nunchuk pin 3 (Vcc) => Ardino Uno Pin 3V3
  • Nunchuk pin 4 (Gnd) => Arduino Uno Pin Gnd

Servos:

  • Control shield terminal 11 => Servo #1
  • Control shield terminal 12 => Servo #2
  • Control shield terminal 13 => Servo #3
  • Control shield terminal 8 => Servo #4
  • Control shield terminal 9 => Servo #5
  • Control shield terminal 10 => Servo #6

If you're not using the control shield, you should use the following pin configuration:

  • Arduino Pin 11 => Servo #1 (Sgn)
  • Arduino Pin 12 => Servo #2 (Sgn)
  • Arduino Pin 13 => Servo #3 (Sgn)
  • Arduino Pin 8 => Servo #4 (Sgn)
  • Arduino Pin 9 => Servo #5 (Sgn)
  • Arduino Pin 10 => Servo #6 (Sgn)
  • Arduino Gnd => Servos Gnd
  • 6V Power supply => Servos Vcc

You'll also need to connect an external 12V power supply. I suggest one with more than 2A output. The servos consume a lot of power, and if the power supply is not powerfull enough, the servos will vibrate and get really hot. They will also lose their strenght.

Don't connect the power source until you've uploaded the Arduino code (shown in later steps). There's a power button on the shield. Keep it on the off position.

Plug an USB cable on the Arduino and proceed to the next step.

Step 11: Setup Arduino IDE

 

Now that the hardware is ready, it's time to work on the Arduino code.

1. Download and install Arduino IDE latest version
You can find the latest version for Windows, Linux or MAC OSX on Arduino's website:https://www.arduino.cc/en/main/software

Download it for free, install it on your computer and launch it.

2. Adding the libraries

For this project I used Robert Eisele's amazing Nunchuk Arduino library! You can find more about it on his website:

https://www.xarg.org/2016/12/using-a-wii-nunchuk-with-arduino/

Download the library at https://github.com/infusion/Fritzing/tree/master/Wii-Nunchuk

Navigate to Sketch-> Include Library -> Manage Libraries... on your Arduino IDE for adding the library.

How does the library works?

Nunchuk library comes with a set of functions for reading controller's sensors:

  • nunchuk_buttonZ(): returns 1 if Z button is pressed, or 0 if it isn't;
  • nunchuk_buttonC(): returns 1 if C button is pressed, or 0 if it isn't;
  • nunchuk_joystickX(): returns x value of the joystick (between -127 and 127);
  • nunchuk_joystickY(): returns y value of the joystick (between -127 and 127);
  • nunchuk_pitch(): returns the angle of the controller in radians (between -180º and 180º);
  • nunchuk_roll(): returns the roll angle of the controller in radians (between -180º and 180º).

The angles are returned in radians. I converted those values to degrees in my Arduino code.

Step 12: Arduino Code


 
  

Download Arduino's sketch file.

Plug the USB cable on your computer's USB port and upload the code. Uploading the code takes some time. You can use that time to give a 'like' and 'share' this tutorial while you wait! :D

After the upload was complete, unplug the USB cable, connect the power supply and turn on the power button. The code will start running imediatly.

Warning: when the code starts running, the robotic arm will move really fast to it's initial position. Be careful not to get hurt or damage nearby equipment during startup!

You'll possibly have to replace the starting angle of each servomotor depending on how your servos where mounted.

Code explained:

Before the setup, the code imports the libraries used on the sketch (nunchuk.h, wire.h and servo.h).

Pins to be used are defined, and global variables are declared. The angle# integer variables store the initial position for each servo. If you want your robot to start at a different position, change the values on those variables.

servo#_speed variables define the speed of the movement of each servo. If you want a specific servo to move faster, increase its value. angle#min and angle#max variables are used to limit the maximun and minimun angle for each servo. You can set those variables in order to avoid colisions between consecutive joints of the robot.

//Include libraries
#include <nunchuk.h>
#include <wire.h>
#include <servo.h>

//define variables
#define SERV1 8    //servo 1 on digital port 8
#define SERV2 9    //servo 2 on digital port 9
#define SERV3 10   //servo 3 on digital port 10
#define SERV4 11   //servo 4 on digital port 11
#define SERV5 12   //servo 5 on digital port 12
#define SERV6 13   //servo 6 on digital port 13

Servo s1; //servo 1
Servo s2; //servo 2
Servo s3; //servo 3
Servo s4; //servo 4
Servo s5; //servo 5
Servo s6; //servo 6

//define starting angle for each servo
//choose a safe position to start from
//it will try to move instantaniously to that position when powered up!
//those angles will depend on the angle of each servo during the assemble
int angle1 = 90; //servo 1 current angle
int angle2 = 30; //servo 2 current angle
int angle3 = 0;  //servo 3 current angle
int angle4 = 90; //servo 4 current angle
int angle5 = 90; //servo 5 current angle
int angle6 = 45; //servo 6 current angle
int servo1_speed = 3; //servo 1 speed
int servo2_speed = 3; //servo 2 speed
int servo3_speed = 3; //servo 3 speed
int servo4_speed = 1; //servo 4 speed
int servo5_speed = 1; //servo 5 speed

//define restrictions for each servo
//those angles will depend on the angle of each servo during the assemble
int angle1min = 0;   //servo 1 minimum angle
int angle1max = 180; //servo 1 maximum angle
int angle2min = 0;   //servo 2 minimum angle
int angle2max = 180; //servo 2 maximum angle
int angle3min = 0;   //servo 3 minimum angle
int angle3max = 180; //servo 3 maximum angle
int angle4min = 0;   //servo 4 minimum angle
int angle4max = 180; //servo 4 maximum angle
int angle5min = 0;   //servo 5 minimum angle
int angle5max = 180; //servo 5 maximum angle
int angle6min = 0;   //servo 6 minimum angle
int angle6max = 180; //servo 6 maximum angle

boolean display_angles = true; //boolean used to update the angle of each servo on Serial Monitor

During the setup, each servo is attached to an especific pin, and its position is started.

Serial communication (to Serial monitor) and I2C communication with the Nunchuk are also started here.

//SETUP

void setup() {
    //attach each servo to a pin and start its position
    s1.attach(SERV1);
    s1.write(angle1);
    s2.attach(SERV2);
    s2.write(angle2);
    s3.attach(SERV3);
    s3.write(angle3);
    s4.attach(SERV4);
    s4.write(angle4);
    s5.attach(SERV5);
    s5.write(angle5);
    s6.attach(SERV6);
    s6.write(angle6);

    //start serial communication
    Serial.begin(9600);

    //start Nunchuk
    Wire.begin();
    nunchuk_init();
}

The main loop is repeated over and over. Nunchuk status is read at each cycle. Depending on the readings, different commands are performed.

void loop() {

    //read Nunchuk sensors
    if (nunchuk_read()) {        
        int x = nunchuk_joystickX();    //joystick X position
        int y = nunchuk_joystickY();    //joystick Y position
        boolean z = nunchuk_buttonZ();  //z button status
        boolean c = nunchuk_buttonC();  //c button status
        float pitch = nunchuk_pitch();  //pitch angle
        float roll = nunchuk_roll();    //roll angle

Joystick X will be used to move the servo #1.

The following block of code was used. First it checks if the value of the joystick is large enough. This way, noise and small variations are disregarded. If the value meet the requirements, the angle of the servo will be increased/decreased at a given speed.

//Turn left/right (at a fixed speed)
        //Turn left
        if (x > 90) {
          angle1 -= servo1_speed;
          display_angles = true;
          if (angle1 < angle1min) {
            angle1 = angle1min;
          }
        }
        //Turn right
        if (x < -90) {
          angle1 += servo1_speed;
          display_angles = true;
          if (angle1 > angle1max) {
            angle1 = angle1max;
          }
        }
        s1.write(angle1); //update servo position

A similar block is used for joystick y. It's used for changing the angle of servo #3. Servo #2 is kept fixed in this code.

Rotation of the gripper is given by the roll and pitch angles of the controller, measured by it's accelerometer. In order to make the control of the arm easier, the angle of the gripper is only updated when C or Z buttons are pressed.

When only C button is pressed, the code reads roll angle and use it as a set point. servo #5 is rotated until it reaches the set point. It's speed is proportional to the error between actual and desired position. A similar code is used for servo #4, which tracks Nunchuk's pitch angle.

// Enable accelerometer only when the buttons are pressed
        // Rotate gripper (only Z button pressed)
        if (c && !z) {
          roll = roll * 57.0 + 90.0; //convert do degrees
          servo5_speed = abs(angle5 - roll)/10 + 1; //speed proportional do the error between actual and desired angle
          if (roll > angle5) {
            angle5 += servo5_speed;
            display_angles = true;
          }
          if (roll < angle5) {
            angle5 -=servo5_speed;
            display_angles = true;
          }
          s5.write(angle5); //update servo position
        }

The gripper is closed whenever both C and Z buttons are pressed. When any of those buttons is released, the robot will open its gripper.

//Open/close gripper (both buttons pressed)
      if(z && c) {
        s6.write(90); //close gripper
        display_angles = true;
      }
      else {
        s6.write(45); //open gripper
      }

There's a block of code by the end of the sketch. It will display on the Serial Monitor the actual angle of each servomotor. It might be helpfull for choosing the starting angle of each motor.

Attachment: nunchuk.ino

Step 13: Usage

  

 

Now that everything is ready, power up the robot and have fun!

The Nunchuk is used to control the five movements shown in the pictures: right/left rotation, up/down movement, gripper rotation, gripper up/down movement, and gripper open/close movements. You can combine those movements for perfoming different tasks.

You can modify the code for having different movements based on a combination of the buttons and angles of the joystick.

If you enjoy this article, please visit the original post in Instructables or Hackster.io.

$1 日数
$2 時間
$3
$4
{"en":"New","fr":"Nouveau"} {"en":"Best Selling","fr":"Best Selling"} {"en":"Trending","fr":"Tendance"} {"en":"Deal","fr":"Traiter"}
{ "en":{ "general": { "field": { "required": "Required", "actions": "Actions", "top_btn": "Top" }, "accessibility": { "skip_to_content": "Skip to content", "close_modal": "Close (esc)" }, "meta": { "tags": "Tagged \"[[ tags ]]\"", "page": "Page [[ page ]]" }, "404": { "title": "404 Page Not Found", "subtext": "The page you requested does not exist.", "link": "Continue shopping" }, "pagination": { "previous": "Previous", "next": "Next", "current_page": "Page [[ current ]] of [[ total ]]" }, "password_page": { "opening_soon": "Opening Soon", "login_form_heading": "Enter store using password", "login_form_password_label": "Password", "login_form_password_placeholder": "Your password", "login_form_submit": "Enter", "signup_form_email_label": "Email", "signup_form_success": "We will send you an email right before we open!", "password_link": "Enter using password", "powered_by_shopify_html": "This shop will be powered by [[ shopify ]]" }, "social": { "share_on_facebook": "Share", "share_on_twitter": "Tweet", "share_on_pinterest": "Pin it", "alt_text": { "share_on_facebook": "Share on Facebook", "share_on_twitter": "Tweet on Twitter", "share_on_pinterest": "Pin on Pinterest" } }, "search": { "no_results_html": "Your search for \"[[ terms ]]\" did not yield any results.", "results_with_count": { "one": "[[ count ]] result for \"[[ terms ]]\"", "other": "[[ count ]] results for \"[[ terms ]]\"" }, "title": "Search our site", "placeholder": "Search", "submit": "Submit", "close": "Close search" }, "newsletter_form": { "newsletter_email": "Join our mailing list", "email_placeholder": "Email address", "confirmation": "Thanks for subscribing", "submit": "Subscribe", "show_me_text": "Do not show me again" }, "filters": { "show_more": "Show More", "show_less": "Show Less" }, "breadcrumbs": { "home": "Home", "create_account": "Create account", "account": "Account", "addresses": "Addresses" }, "item": { "remove": "Remove Item" } }, "sections": { "header": { "top_header_login": "Login", "top_header_register": "Register", "top_header_wishlist": "Wish list", "register_dropdown": "No account? Create one here", "forgot": "Forgot password", "all_collection": "All Collections", "world_wide_delivery": "Worldwide delivery", "shipping_text": "Free UK Delivery on orders over £ 100", "hot_line": "Hot line" }, "menu": { "mobile_menu_tab": "Menu", "mobile_account_tab": "Account", "mobile_settings_tab": "Settings" }, "slideshow": { "next_slide": "Next slide", "previous_slide": "Previous slide", "pause_slideshow": "Pause slideshow", "play_slideshow": "Play slideshow", "play_video": "Play video", "close_video": "Close video" }, "map": { "get_directions": "Get directions", "address_error": "Error looking up that address", "address_no_results": "No results for that address" } }, "blogs": { "article": { "view_all": "View all", "all_topics": "All topics", "by_author": "by [[ author ]]", "posted_in": "Posted in", "read_more": "Read more", "back_to_blog": "Back to [[ title ]]" }, "comments": { "title": "Leave a comment", "name": "Name", "email": "Email", "message": "Message", "post": "Post comment", "moderated": "Please note, comments must be approved before they are published", "success_moderated": "Your comment was posted successfully. We will publish it in a little while, as our blog is moderated.", "success": "Your comment was posted successfully! Thank you!", "comments_with_count": { "one": "[[ count ]] comment", "other": "[[ count ]] comments" } } }, "cart": { "general": { "title": "Your cart", "note": "Add a note to your order", "remove": "Remove", "subtotal": "Subtotal", "savings": "You're saving", "shipping_at_checkout": "Shipping & taxes calculated at checkout", "update": "Update", "checkout": "Process Check out", "empty": "Your cart is currently empty.", "cookies_required": "Enable cookies to use the shopping cart", "edit": "Edit", "cancel": "Cancel", "continue_shopping": "Continue shopping", "recently_added_item": "Recently added item(s)", "remove_item": "Remove This Item", "view_and_edit_cart": "View and edit cart", "clear": "Clear cart", "empty_page_title": "Shopping Cart is Empty", "here": "here", "empty_continue_html": "Click here to continue shopping.", "processing": "Processing...", "items_count_label" : "[[ count ]] item(s) in your cart", "ok" : "Ok" }, "label": { "product": "Product", "price": "Price", "quantity": "Quantity", "total": "Total", "total_item": "Total item", "sub_total_top": "Cart Subtotal" } }, "collections": { "general": { "view_all": "View all", "clear_all": "Clear All", "no_matches": "Sorry, there are no products in this collection", "items_with_count": { "one": "[[ count ]] product", "other": "[[ count ]] products" }, "load_more": "Load More", "sidebar_btn": "Filter by" }, "sorting": { "title": "Sort by", "manual": "Featured", "best_selling": "Best Selling", "title_ascending": "Alphabetically, A-Z", "title_descending": "Alphabetically, Z-A", "price_ascending": "Price, low to high", "price_descending": "Price, high to low", "created_descending": "Date, new to old", "created_ascending": "Date, old to new" }, "filters": { "title_tags": "Filter", "all_tags": "All products", "categories": "categories", "title": "Filter", "color": "Color", "size": "Size", "brand": "Brand", "price": "Price", "green": "Green", "blue": "Blue", "red": "Red", "pink": "Pink", "black": "Black", "purple": "Purple", "white": "White", "orange": "Orange" }, "product_item": { "quick_shop": "Quick View", "compare": "Compare", "wishlist": "Add to Wishlist" } }, "contact": { "form": { "name": "Name", "email": "Email", "phone": "Phone Number", "message": "Message", "submit": "Submit", "post_success": "Thanks for contacting us. We'll get back to you as soon as possible.", "address": "Address", "telephone": "Telephone", "title": "Write us", "required": "Required" } }, "customer": { "account": { "title": "My Account", "details": "Account Details", "view_addresses": "View Addresses", "return": "Return to Account Details" }, "activate_account": { "title": "Activate Account", "subtext": "Create your password to activate your account.", "password": "Password", "password_confirm": "Confirm Password", "submit": "Activate Account", "cancel": "Decline Invitation" }, "addresses": { "title": "Your Addresses", "default": "Default", "add_new": "Add a New Address", "edit_address": "Edit address", "first_name": "First Name", "last_name": "Last Name", "company": "Company", "address1": "Address1", "address2": "Address2", "city": "City", "country": "Country", "province": "Province", "zip": "Postal\/Zip Code", "phone": "Phone", "set_default": "Set as default address", "add": "Add Address", "update": "Update Address", "cancel": "Cancel", "edit": "Edit", "delete": "Delete", "delete_confirm": "Are you sure you wish to delete this address?" }, "login": { "title": "Login", "desc": "If you have an account, sign in with your email address.", "email": "Email", "password": "Password", "forgot_password": "Forgot your password?", "sign_in": "Sign In", "guest_title": "Continue as a guest", "guest_continue": "Continue" }, "orders": { "title": "Order History", "order_number": "Order", "date": "Date", "payment_status": "Payment Status", "fulfillment_status": "Fulfillment Status", "total": "Total", "none": "You haven't placed any orders yet." }, "order": { "title": "Order [[ name ]]", "date": "Placed on [[ date ]]", "cancelled": "Order Cancelled on [[ date ]]", "cancelled_reason": "Reason: [[ reason ]]", "billing_address": "Billing Address", "payment_status": "Payment Status", "shipping_address": "Shipping Address", "fulfillment_status": "Fulfillment Status", "discount": "Discount", "shipping": "Shipping", "tax": "Tax", "product": "Product", "sku": "SKU", "price": "Price", "quantity": "Quantity", "total": "Total", "fulfilled_at": "Fulfilled [[ date ]]", "subtotal": "Subtotal" }, "recover_password": { "title": "Reset your password", "email": "Email", "submit": "Submit", "cancel": "Cancel", "subtext": "We will send you an email to reset your password.", "success": "We've sent you an email with a link to update your password." }, "reset_password": { "title": "Reset account password", "subtext": "Enter a new password for [[ email ]]", "password": "Password", "password_confirm": "Confirm Password", "submit": "Reset Password" }, "register": { "title": "Create Account", "first_name": "First Name", "last_name": "Last Name", "email": "Email", "password": "Password", "submit": "Create", "desc": "Creating an account is easy. Just fill in the form below." } }, "homepage": { "onboarding": { "product_title": "Your product's name", "product_description": "This area is used to describe your product’s details. Tell customers about the look, feel, and style of your product. Add details on color, materials used, sizing, and where it was made.", "collection_title": "Your collection's name", "blog_title": "Your post's title", "blog_excerpt": "Your store hasn’t published any blog posts yet. A blog can be used to talk about new product launches, tips, or other news you want to share with your customers. You can check out Shopify’s ecommerce blog for inspiration and advice for your own store and blog.", "blog_author": "Author name", "no_content": "This section doesn’t currently include any content. Add content to this section using the sidebar." } }, "layout": { "navigation": { "search": "Search", "toggle": "expand\/collapse", "expand": "expand", "collapse": "collapse", "all_categories": "All Categories" }, "cart": { "title": "Cart", "items_count": { "one": "item", "other": "items" } }, "customer": { "account": "Account", "log_out": "Log out", "logout": "Log out", "log_in": "Log in", "create_account": "Create account", "sign_up": "Sign up", "wishlist": "Wishlist" }, "footer": { "social_platform": "[[ name ]] on [[ platform ]]" }, "list_page": { "grid": "Grid", "list": "List" } }, "products": { "product": { "regular_price": "Regular price", "sold_out": "Sold out", "unavailable": "Unavailable", "on_sale": "Sale", "quantity": "Quantity", "add_to_cart": "Add to cart", "back_to_collection": "Back to [[ title ]]", "related_title": "Related Products", "qty_increase": "Increase", "qty_decrease": "Decrease", "deal_days": "Days", "deal_hours": "Hours", "deal_minutes": "Minutes", "deal_second": "Seconds", "select_option": "Select Option", "add_to_wishlist": "Add to Wishlist", "add_to_review": "Add to review", "compare_success_msg": "[[ product_title ]] has been added to comparing box successful", "compare_exist_msg": "[[ product_title ]] is exist in comparing box", "compare_cart_msg": "[[ product_title ]] has been added to shopping cart", "compare_remove_msg": "[[ product_title ]] has been removed from comparing box", "comparing_box": "Comparing box", "compare_no_items": "There is no items in comparing box", "wishlist_success_msg": "[[ product_title ]] ウィッシュリストに成功しました", "wishlist_exist_msg": "[[ product_title ]] ウィッシュリストに存在する", "wishlist_cart_msg": "[[ product_title ]] has been added to shopping cart", "wishlist_box": "Wishlist", "wishlist_remove_msg": "[[ product_title ]] ウィッシュリストから削除されました", "wislist_no_items": "ウィッシュリストにはアイテムがない", "upsell_cart_msg": "\"[[ product_title ]]\" has been added to shopping cart", "upsell_block_title": "Frequently bought with \"[[ product_title ]]\"", "upsell_cart_qty": "[[ count ]] item(s)", "upsell_product_page_title": "You may also like these products", "upsell_checkout_btn": "Checkout", "share": "Share product", "share_on_facebook": "Share on Facebook", "share_on_twitter": "Share on Twitter", "share_on_pinterest": "Share on Pinterest", "share_on_google": "Share on Google+", "share_on_linkedin": "Share on LinkedIn", "availability": "Availability", "in_stock": "In Stock", "out_of_stock": "Out of stock", "quick_overview": "Quick Overview", "details": "Details", "reviews": "Reviews", "first_review": "Be the first review", "tags": "Product Tags", "size_chart": "Size Chart", "options": "Options", "vendor": "Vendor", "features": "Features", "sale_left_text": "[[ sales ]] SOLD. HURRY! ONLY A FEW LEFT!", "checkout_text": "Secured and trusted checkout with", "quick_view_details": "View details", "open_light_gallery": "Click here to open gallery images" }, "upsell": { "recommend_text": "Someone purchased a", "minute_ago": "minutes ago" } }, "gift_cards": { "issued": { "title_html": "Here's your [[ value ]] gift card for [[ shop ]]!", "subtext": "Your gift card", "disabled": "Disabled", "expired": "Expired on [[ expiry ]]", "active": "Expires on [[ expiry ]]", "redeem_html": "Use this code at checkout to redeem your [[ value ]] gift card", "shop_link": "Start shopping", "print": "Print this gift card", "remaining_html": "[[ balance ]] left", "add_to_apple_wallet": "Add to Apple Wallet" } }, "date_formats": { "month_day_year": "%B %d, %Y" } }, "fr":{ "general": { "field": { "required": "Requis", "actions": "Les actes", "top_btn": "Haut" }, "accessibility": { "skip_to_content": "Passer au contenu", "close_modal": "Fermer (Esc)" }, "meta": { "tags": "Mots clés \"[[ tags ]]\"", "page": "Page [[ page ]]" }, "404": { "title": "404 - Page non trouvée", "subtext": "Cette page n'est pas disponible.", "link": "Retourner au magasinage" }, "pagination": { "previous": "Précédent", "next": "Suivant", "current_page": "Page [[ current ]] sur [[ total ]]" }, "password_page": { "opening_soon": "Bientôt ouvert", "login_form_heading": "Accéder à la boutique à l'aide d'un mot de passe", "login_form_password_label": "Mot de passe", "login_form_password_placeholder": "Votre mot de passe", "login_form_submit": "Entrer", "signup_form_email_label": "Courriel", "signup_form_success": "Nous vous ferons parvenir un courriel juste avant l'ouverture!", "password_link": "Entrer avec un mot de passe", "powered_by_shopify_html": "Cette boutique sera propulsée par [[ shopify ]]" }, "social": { "share_on_facebook": "Partager", "share_on_twitter": "Tweeter", "share_on_pinterest": "Épingler", "alt_text": { "share_on_facebook": "Partager sur Facebook", "share_on_twitter": "Tweeter sur Twitter", "share_on_pinterest": "Épingler sur Pinterest" } }, "search": { "no_results_html": "Votre recherche pour \"[[ terms ]]\" n'a pas généré de résultats.", "results_with_count": { "one": "[[ count ]] résultat pour \"[[ terms ]]\"", "other": "[[ count ]] résultats pour \"[[ terms ]]\"" }, "title": "Effectuez une recherche", "placeholder": "Recherche", "submit": "Recherche", "close": "Fermer (esc)" }, "newsletter_form": { "newsletter_email": "Join our mailing list", "email_placeholder": "Adresse courriel", "confirmation": "Merci pour votre abonnement", "submit": "S'inscrire", "show_me_text": "Ne me montre plus" }, "filters": { "show_more": "Voir plus", "show_less": "Afficher moins" }, "breadcrumbs": { "home": "Accueil", "create_account": "Créer un compte", "account": "Compte", "addresses": "Adresses" }, "item": { "remove": "Retirer l'objet" } }, "sections": { "header": { "top_header_login": "S'identifier", "top_header_register": "Registre", "top_header_wishlist": "Liste de souhaits", "register_dropdown": "Pas de compte? Créer un ici", "forgot": "Mot de passe oublié", "all_collection": "Toutes les collections", "world_wide_delivery": "Livraison à l'échelle mondiale", "shipping_text": "Livraison gratuite au Royaume-Uni sur des commandes de plus de 100 £", "hot_line": "Hot line" }, "menu": { "mobile_menu_tab": "Menu", "mobile_account_tab": "Compte", "mobile_settings_tab": "Paramètres" }, "slideshow": { "next_slide": "Diapositive suivante", "previous_slide": "Diapositive précédente", "pause_slideshow": "Mettre en pause le diaporama", "play_slideshow": "Jouer le diaporama", "play_video": "Lire la vidéo", "close_video": "Fermer la vidéo" }, "map": { "get_directions": "Obtenir des directions", "address_error": "Vous ne trouvez pas cette adresse", "address_no_results": "Aucun résultat pour cette adresse" } }, "blogs": { "article": { "view_all": "Voir toutes", "all_topics": "Tous les sujets", "by_author": "par [[ author ]]", "posted_in": "Publié dans", "read_more": "Plus", "back_to_blog": "Retour à [[ title ]]" }, "comments": { "title": "Laissez un commentaire", "name": "Nom", "email": "Courriel", "message": "Message", "post": "Publier le commentaire", "moderated": "Veuillez noter que les commentaires doivent être approvés avant d'être affichés", "success_moderated": "Votre commentaire a été soumis avec succès. Nous le publierons sous peu, suite à notre processus de modération.", "success": "Votre commentaire a été publié avec succès!", "comments_with_count": { "one": "[[ count ]] commentaire", "other": "[[ count ]] commentaires" } } }, "cart": { "general": { "title": "Panier", "note": "Ajouter une note à votre commande", "remove": "Retirer", "subtotal": "Sous-total", "savings": "Vous économisez", "shipping_at_checkout": "Frais de port et remises calculés à la caisse", "update": "Mettre à jour", "checkout": "Procéder au paiement", "empty": "Votre panier est vide.", "cookies_required": "Activer les cookies pour utiliser le panier", "cancel": "Annuler", "edit": "Éditer", "continue_shopping": "Continuer vos achats", "view_and_edit_cart": "Afficher et modifier le panier", "processing": "En traitement...", "items_count_label" : "[[ count ]] article(s) dans votre panier", "ok" : "D'accord", "empty_page_title": "Le panier d'achat est vide", "empty_continue_html": "Cliquer ici pour poursuivre vos achats.", "clear": "Vider le panier", "recently_added_item": "Article (s) récemment ajouté (s)", "remove_item": "Enlever cet article", "here": "ici" }, "label": { "product": "Produit", "price": "Prix", "quantity": "Quantité", "total": "Total", "total_item": "Total de l'élément", "sub_total_top": "Sous-total du panier" } }, "collections": { "general": { "view_all": "Voir toutes", "clear_all": "Tout Supprimer", "no_matches": "Aucun produit ne correspond à votre recherche.", "items_with_count": { "one": "[[ count ]] item", "other": "[[ count ]] items" }, "load_more": "Charger plus", "sidebar_btn": "Filtrer par" }, "sorting": { "title": "Trier par", "manual": "En vedette", "best_selling": "Meilleurs vendeurs", "title_ascending": "A-Z", "title_descending": "Z-A", "price_ascending": "Prix: faible à élevé", "price_descending": "Prix: élevé à faible", "created_descending": "Date: récent à ancien", "created_ascending": "Date: ancien à récent" }, "filters": { "title_tags": "Filtrer", "all_tags": "Tous les produits", "categories": "Les catégories", "title": "Filtre", "color": "Couleur", "size": "Taille", "brand": "Marque", "price": "Prix", "green": "Vert", "blue": "Bleu", "red": "Rouge", "pink": "Rose", "black": "Noir", "purple": "Violet", "white": "Blanc", "orange": "Orange" }, "product_item": { "quick_shop": "Aperçu rapide", "compare": "Comparer", "wishlist": "Ajouter à la liste de souhaits" } }, "contact": { "form": { "name": "Nom", "email": "Courriel", "phone": "Téléphone", "message": "Message", "submit": "Envoyer", "post_success": "Merci de nous avoir avoir contacté. Nous vous reviendrons le plus rapidement possible.", "address": "Adresse", "telephone": "Téléphone", "title": "Écrivez-nous", "required": "Requis" } }, "customer": { "account": { "title": "Mon compte", "details": "Détails du compte", "view_addresses": "Voir les adresses", "return": "Retour aux détails du compte" }, "activate_account": { "title": "Activer le compte", "subtext": "Créez votre mot de passe pour activer le compte.", "submit": "Activer le compte", "cancel": "Refuser l'invitation", "password": "Mot de passe", "password_confirm": "Confirmer le mot de passe" }, "addresses": { "title": "Votre adresse", "default": "Par défaut", "add_new": "Ajouter une nouvelle adresse", "edit_address": "Éditer l'adresse", "first_name": "Prénom", "last_name": "Nom", "company": "Compagnie", "address1": "Adresse 1", "address2": "Adresse 2", "city": "Ville", "country": "Pays", "province": "Province", "zip": "Code postal", "phone": "Téléphone", "set_default": "Définir comme adresse par défaut", "add": "Ajouter l'adresse", "update": "Mettre à jour l'adresse", "cancel": "Annuler", "edit": "Éditer", "delete": "Supprimer", "delete_confirm": "Êtes-vous certain(e) de vouloir supprimer cette adresse?" }, "login": { "title": "Connexion", "desc": "Si vous avez un compte, connectez-vous avec votre adresse e-mail.", "email": "Courriel", "password": "Mot de passe", "forgot_password": "Mot de passe oublié?", "sign_in": "Se connecter", "guest_title": "Continuer en tant qu'invité", "guest_continue": "Continuer" }, "orders": { "title": "Historique des commandes", "order_number": "Commande", "date": "Date", "payment_status": "Statut du paiement", "fulfillment_status": "Statut du traitement de la commande", "total": "Total", "none": "Vous n'avez pas placé de commande à ce jour." }, "order": { "title": "Commande [[ name ]]", "date": "Placée le [[ date ]]", "cancelled": "Commande annulée le [[ date ]]", "cancelled_reason": "Motif: [[ reason ]]", "billing_address": "Adresse de facturation", "payment_status": "Statut du paiement", "shipping_address": "Adresse de livraison", "fulfillment_status": "Statut du traitement de la commande", "discount": "Rabais appliqué", "shipping": "Livraison", "tax": "Taxes", "product": "Produit", "sku": "SKU", "price": "Prix", "quantity": "Quantité", "total": "Total", "fulfilled_at": "Traitée le [[ date ]]", "subtotal": "Sous-total" }, "recover_password": { "title": "Réinitialiser votre mot de passe", "email": "Courriel", "submit": "Soumettre", "cancel": "Annuler", "subtext": "Nous vous ferons parvenir un courriel pour réinitialiser votre mot de passe.", "success": "Nous vous avons fait parvenir un courriel pour réinitialiser votre mot de passe." }, "reset_password": { "title": "Réinitialiser le mot de passe du compte", "subtext": "Entrez un nouveau mot de passe pour [[ email ]]", "submit": "Réinitialiser le mot de passe", "password": "Mot de passe", "password_confirm": "Confirmer le mot de passe" }, "register": { "title": "Créer un compte", "first_name": "Prénom", "last_name": "Nom", "email": "Courriel", "submit": "Créer", "password": "Mot de passe", "desc": "La création d'un compte est simple. Remplissez le formulaire ci-dessous." } }, "homepage": { "onboarding": { "product_title": "Le nom de votre produit", "product_description": "Cette partie est utilisée pour la fiche du produit. Parlez aux clients de l'allure, du ressenti et du style de votre produit. Ajoutez des détails sur la couleur, les matériaux utilisés, le dimensionnement, et où il a été fabriqué.", "collection_title": "Le nom de votre collection", "blog_title": "Le titre de votre publication", "blog_excerpt": "Votre magasin n'a encore rien bloggué. Un blog peut être utilisé pour parler des lancements de nouveaux produits, d'astuces, ou d'autres nouvelles que vous voulez partager avec vos clients. Vous pouvez regarder le blog d'e-commerce de Shopify pour trouver de l'inspiration et des conseils pour votre propre magasin et blog.", "blog_author": "Nom de l'auteur", "no_content": "Cette section ne contient actuellement aucun contenu. Ajoutez-en en utilisant la barre latérale." } }, "layout": { "navigation": { "search": "Recherche", "toggle": "développer\/réduire", "expand": "révéler", "collapse": "fermer", "all_categories": "toutes catégories" }, "cart": { "title": "Panier", "items_count": { "one": "item", "other": "items" } }, "customer": { "account": "Compte", "log_out": "Se déconnecter", "logout": "Se déconnecter", "log_in": "Se connecter", "create_account": "Créer un compte", "sign_up": "S'inscrire", "wishlist": "Liste de souhaits" }, "footer": { "social_platform": "[[ name ]] sur [[ platform ]]" }, "list_page": { "grid": "La grille", "list": "Liste" } }, "products": { "product": { "regular_price": "Prix régulier", "sold_out": "Épuisé", "unavailable": "Non disponible", "on_sale": "Solde", "quantity": "Quantité", "add_to_cart": "Ajouter au panier", "back_to_collection": "Retour à [[ title ]]", "related_title": "Produits connexes", "qty_increase": "Augmenter", "qty_decrease": "Diminution", "deal_days": "Journées", "deal_hours": "Heures", "deal_minutes": "Minutes", "deal_second": "Seconde", "select_option": "Sélectionner une option", "add_to_wishlist": "Ajouter à la liste de souhaits", "add_to_review": "Ajouter à la critique", "first_review": "Soyez le premier avis", "compare_success_msg": "[[ product_title ]] a ajouté à la boîte de comparaison réussie", "compare_exist_msg": "[[ product_title ]] existe dans la boîte de comparaison", "compare_cart_msg": "[[ product_title ]] a ajouté à la liste de souhaits réussie", "compare_remove_msg": "[[ product_title ]] a été supprimé de la boîte de comparaison", "comparing_box": "Boîte de comparaison", "compare_no_items": "Il n'y a aucun élément dans la boîte de comparaison", "wishlist_success_msg": "[[ product_title ]] a ajouté à la liste de souhaits réussie", "wishlist_exist_msg": "[[ product_title ]] existe dans la liste de souhaits", "wishlist_cart_msg": "[[ product_title ]] a ajouté au panier", "wishlist_box": "Liste de souhaits", "wishlist_remove_msg": "[[ product_title ]] a été retiré de la liste de souhaits", "wislist_no_items": "Il n'y a aucun élément dans la liste de souhaits", "upsell_cart_msg": "\"[[ product_title ]]\" a ajouté à la liste de souhaits réussie", "upsell_block_title": "Souvent acheté avec \"[[ product_title ]]\"", "upsell_cart_qty": "[[ count ]] article", "upsell_product_page_title": "Vous aimerez peut-être aussi ces produits", "upsell_checkout_btn": "Caisse", "share": "Partager le produit", "share_on_facebook": "Partager sur Facebook", "share_on_twitter": "Partager sur Twitter", "share_on_pinterest": "Partager sur Pinterest", "share_on_google": "Partager sur Google+", "share_on_linkedin": "Partager sur LinkedIn", "availability": "Disponibilité", "in_stock": "En stock", "out_of_stock": "En rupture de stock", "quick_overview": "Rapide vue d'ensemble", "details": "Détails", "reviews": "Avis", "tags": "Tags du produit", "options": "Les options", "vendor": "Vendeur", "features": "Les traits", "size_chart": "Tableau des tailles", "sale_left_text":"[[ sales ]] VENDU. SE DÉPÊCHER! SEULEMENT QUELQUES GAUCHE!", "checkout_text": "Paiement sécurisé et approuvé avec", "quick_view_details": "Voir les détails", "open_light_gallery": "Cliquez ici pour ouvrir les images de la galerie" }, "upsell": { "recommend_text": "Quelqu'un a acheté un", "minute_ago": "il y a quelques minutes" } }, "gift_cards": { "issued": { "title_html": "Votre carte-cadeau [[ shop ]] d'une valeur de [[ value ]]!", "subtext": "Voici votre carte-cadeau!", "disabled": "Désactivée", "expired": "Expirée le [[ expiry ]]", "active": "Expire le [[ expiry ]]", "redeem_html": "Entrez ce code lors du paiement pour utiliser votre [[ value ]] carte-cadeau", "shop_link": "Boutique", "print": "Imprimer ce bon d'achat", "remaining_html": "[[ balance ]] restant", "add_to_apple_wallet": "Ajouter à Apple Wallet" } }, "date_formats": { "month_day_year": "%d %B, %Y" } }, "jp":{} }