Pada tutorial kali ini KlinikRobot akan mengulas cara merakit Arduino Shield Joystick (ASJ) dengan cara melakukan solder. Produk yang sedang diulas dapat dilihat pada halaman berikut ini :
-
KR07109 Industrial Buzzer SFM-27 (3 ~ 24 Volt DC)
Rp5.000 Add to cart -
KR07113 Arduino Shield Joystick Board
Rp50.000 Add to cart -
Arduino Shield Joystick V2.0
Rp73.200 Add to cart -
Arduino Shield Joystick V1.0 (unsoldered)
Rp64.400 Add to cart -
TowerPro SG92R Carbon Gear Mini Servo
Rp46.900 Add to cart
Adapun peralatan kerja yang diperlukan adalah alat solder, timah solder, tang jepit/ tang kombinasi untuk memegang pcb.
Berikut langkah-langkah melakukan perakitan ASJ :
Setelah kit berhasil kita rakit, langkah selanjutnya adalah melakukan test program bersama Arduino. Adapun contoh pemrograman ASJ ini yang kami himpun sebagai berikut :
Cara penggunaan bersama Arduino dapat dilihat pada script Arduino berikut ini :
1. Pembacaan Joystick arah X, arah Y, push Z switch, Up, Down, Left, Right
const int PIN_BUTTON_SELECT = 2; // Select button is triggered when joystick is pressed const int PIN_BUTTON_RIGHT = 3; const int PIN_BUTTON_UP = 4; const int PIN_BUTTON_DOWN = 5; const int PIN_BUTTON_LEFT = 6; const int PIN_ANALOG_X = 0; const int PIN_ANALOG_Y = 1; void setup() { Serial.begin(9600); // Specify each pin connected to a pushbutton as an input. // Also enable the Arduino's internal "pull-up" resistors // for each pushbutton we want to read--this means the shield // doesn't need to have resistors on it. // Note that when a pull-up resistor is used on a pin the // meaning of the values read are reversed compared to their // usual meanings: // * HIGH = the button is not pressed // * LOW = the button is pressed /* old method to turn on the pull-up resistor for the SEL line before Arduino IDE v1.01 (see http://arduino.cc/en/Tutorial/DigitalPins) /*pinMode(PIN_BUTTON_RIGHT, INPUT); digitalWrite(PIN_BUTTON_RIGHT, HIGH); pinMode(PIN_BUTTON_LEFT, INPUT); digitalWrite(PIN_BUTTON_LEFT, HIGH); pinMode(PIN_BUTTON_UP, INPUT); digitalWrite(PIN_BUTTON_UP, HIGH); pinMode(PIN_BUTTON_DOWN, INPUT); digitalWrite(PIN_BUTTON_DOWN, HIGH); pinMode(PIN_BUTTON_SELECT, INPUT); digitalWrite(PIN_BUTTON_SELECT, HIGH);*/ pinMode(PIN_BUTTON_RIGHT, INPUT_PULLUP); pinMode(PIN_BUTTON_LEFT, INPUT_PULLUP); pinMode(PIN_BUTTON_UP, INPUT_PULLUP); pinMode(PIN_BUTTON_DOWN, INPUT_PULLUP); pinMode(PIN_BUTTON_SELECT, INPUT_PULLUP); } void loop() { // Print the current values of the inputs (joystick and // buttons) to the console. Serial.print("l:"); Serial.print(digitalRead(PIN_BUTTON_LEFT)); Serial.print(" "); Serial.print("r:"); Serial.print(digitalRead(PIN_BUTTON_RIGHT)); Serial.print(" "); Serial.print("u:"); Serial.print(digitalRead(PIN_BUTTON_UP)); Serial.print(" "); Serial.print("d:"); Serial.print(digitalRead(PIN_BUTTON_DOWN)); Serial.print(" "); Serial.print("x:"); Serial.print(analogRead(PIN_ANALOG_X)); Serial.print(" "); Serial.print("y:"); Serial.print(analogRead(PIN_ANALOG_Y)); Serial.print(" "); Serial.print("s:"); Serial.print(digitalRead(PIN_BUTTON_SELECT)); Serial.print(" "); Serial.println(); }
2. Pembacaan Joystick arah X, arah Y, push Z switch, Up, Down, Left, Right (langsung)
char button0=3, button1=4, button2=5, button3=6; char sel=2; void setup(void) { pinMode(sel, INPUT); //Set the Joystick 'Select'button as an input digitalWrite(sel, HIGH); //Enable the pull-up resistor on the select button pinMode(button0, INPUT); //Set the Joystick button 0 as an input digitalWrite(button0, HIGH); //Enable the pull-up resistor on button 0 pinMode(button1, INPUT); //Set the Joystick button 1 as an input digitalWrite(button1, HIGH); //Enable the pull-up resistor on button 1 pinMode(button2, INPUT); //Set the Joystick button 2 as an input digitalWrite(button2, HIGH); //Enable the pull-up resistor on button 2 pinMode(button3, INPUT); //Set the Joystick button 3 as an input digitalWrite(button3, HIGH); //Enable the pull-up resistor on button 3 Serial.begin(9600); //Turn on the Serial Port at 9600 bps } void loop(void) { Serial.print(analogRead(0)); //Read the position of the joysticks X axis and print it on the serial port. Serial.print(","); Serial.print(analogRead(1)); //Read the position of the joysticks Y axis and print it on the serial port. Serial.print(","); Serial.print(digitalRead(sel)); //Read the value of the select button and print it on the serial port. Serial.print(digitalRead(button0)); //Read the value of the button 0 and print it on the serial port. Serial.print(digitalRead(button1)); //Read the value of the button 1 and print it on the serial port. Serial.print(digitalRead(button2)); //Read the value of the button 2 and print it on the serial port. Serial.println(digitalRead(button3)); //Read the value of the button 3 and print it on the serial port. //Wait for 100 ms, then go back to the beginning of 'loop' and repeat. delay(100); }
3. Penggunaan Joystick bersamaan dengan pengaturan melodi suara sederhana
const int PIN_ANALOG_X = 0; const int PIN_ANALOG_Y = 1; const int speakerPin = 9; int length = 15; // the number of notes char notes[] = "ccggaagffeeddc "; // a space represents a rest int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 }; int tempo = 300; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { // We modify the pitch of the note to be played based on the vertical position // of the joystick: playTone(tones[i] + map(analogRead(PIN_ANALOG_Y), 0, 1023, 959, -959), duration); } } } void setup() { pinMode(speakerPin, OUTPUT); } void loop() { for (int i = 0; i < length; i++) { // We set the tempo based on the horizontal position of the joystick: tempo = map(analogRead(PIN_ANALOG_X), 0, 1023, 500, 100); if (notes[i] == ' ') { delay(beats[i] * tempo); // rest } else { playNote(notes[i], beats[i] * tempo); } // pause between notes delay(tempo / 2); } }
Berikut ini video demonstari pemrogaman nya dengan Arduino :
Post Comment
You must be logged in to post a comment.