Pagi ini setelah subuhan kok masih kepengen melanjutkan project kemarin akhirnya masuk ke command centerku wkwkwk ini kamar yg kemudian dijadikan gudang dan sebagai sarangku mengembangkan ide dan utak atik arduino.
Masih melanjutkan project yang sebelumnya namun kali ini menggunakan ps3 controller, kalau ingin melihat menggunakan ps2 controller sebagai remote arduino silahkan search di blog ini.
Percobaan kali ini mencoba menggerakkan motor dc menggunakan dfrduino mega 1280, usb host shield untuk koneksi bluetooth ps3 controller dan motor shield 2A dari dfrobot untuk menggerakkan dc motor silahkan lihat video dibawah ini
Belum sempurna memang karena masih ingin menambahkan fungsi pwm untuk analog dc motor controlnya.
</pre> #include <SD.h> /* Example sketch for the PS3 Bluetooth library - developed by Kristian Lauszus For more information visit my blog: http://blog.tkjelectronics.dk/ or send me an e-mail: kristianl@tkjelectronics.com */ #include <PS3BT.h> #include <Servo.h> //servo Servo myservo1; int pos1 = 0; int servostep = 1; //motor int E1 = 5; int M1 = 4; int E2 = 6; int M2 = 7; USB Usb; BTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so /* You can create the instance of the class in two ways */ //PS3BT PS3(&Btd); // This will just create the instance PS3BT PS3(&Btd,0x00,0x1B,0x10,0x00,0x2A,0xEC); // This will also store the bluetooth address - this can be obtained from the dongle when running the sketch boolean printTemperature; boolean printAngle; void setup() { Serial.begin(57600); if (Usb.Init() == -1) { Serial.print(F("\r\nOSC did not start")); while(1); //halt } Serial.print(F("\r\nPS3 Bluetooth Library Started")); //servo myservo1.attach(9); //motor pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); } void loop() { Usb.Task(); if(PS3.PS3Connected || PS3.PS3NavigationConnected) { if(PS3.getAnalogHat(LeftHatX) == 255) { Serial.print(F("\r\nLeftHatX: ")); Serial.print(PS3.getAnalogHat(LeftHatX)); pos1 = pos1 + servostep; if (pos1 >180) pos1 = 180; myservo1.write(pos1); // tell servo to go to position in variable 'pos' delay(50); } if(PS3.getAnalogHat(LeftHatX) == 0) { Serial.print(F("\r\nLeftHatX: ")); Serial.print(PS3.getAnalogHat(LeftHatX)); pos1 = pos1 - servostep; if (pos1 < 0) pos1 = 0; myservo1.write(pos1); // tell servo to go to position in variable 'pos' delay(50); } if(PS3.getAnalogHat(LeftHatY) > 200) { Serial.print(F("\r\nLeftHatY: ")); Serial.print(PS3.getAnalogHat(LeftHatY)); } if(PS3.getAnalogHat(LeftHatY) < 50) { Serial.print(F("\r\nLeftHatY: ")); Serial.print(PS3.getAnalogHat(LeftHatY)); } if(PS3.getAnalogHat(LeftHatY) == 0) { Serial.print(F("")); }if(PS3.getAnalogHat(RightHatX) == 255) { Serial.print(F("\r\nRightHatX: ")); Serial.print(PS3.getAnalogHat(RightHatX)); int value=(PS3.getAnalogHat(RightHatX)); Serial.print(F("\r\nvalue: ")); digitalWrite(M1,HIGH); digitalWrite(M2,HIGH); analogWrite(E1, value); //PWM Speed Control analogWrite(E2, value); //PWM Speed Control delay(30); } if(PS3.getAnalogHat(RightHatX) == 128) { Serial.print(F("\r\nRightHatX: ")); Serial.print(PS3.getAnalogHat(RightHatX)); int value=0; Serial.print(F("\r\nvalue: ")); digitalWrite(M1,HIGH); digitalWrite(M2,HIGH); analogWrite(E1, value); //PWM Speed Control analogWrite(E2, value); //PWM Speed Control delay(30); } if(PS3.getAnalogHat(RightHatY) > 200) { Serial.print(F("\r\nRightHatY: ")); Serial.print(PS3.getAnalogHat(RightHatY)); } if(PS3.getAnalogHat(RightHatY) < 50) { Serial.print(F("\r\nRightHatY: ")); Serial.print(PS3.getAnalogHat(RightHatY)); } if(PS3.getAnalogHat(RightHatY) == 0) { Serial.print(F("")); } } //Analog button values can be read from almost all buttons if(PS3.getAnalogButton(L2) || PS3.getAnalogButton(R2)) { Serial.print(F("\r\nL2: ")); Serial.print(PS3.getAnalogButton(L2)); if(!PS3.PS3NavigationConnected) { Serial.print(F("\tR2: ")); Serial.print(PS3.getAnalogButton(R2)); } } if(PS3.getButtonClick(PS)) { Serial.print(F("\r\nPS")); PS3.disconnect(); } else { if(PS3.getButtonClick(TRIANGLE)) Serial.print(F("\r\nTraingle")); if(PS3.getButtonClick(CIRCLE)) Serial.print(F("\r\nCircle")); if(PS3.getButtonClick(CROSS)) Serial.print(F("\r\nCross")); if(PS3.getButtonClick(SQUARE)) Serial.print(F("\r\nSquare")); if(PS3.getButtonClick(UP)) { Serial.print(F("\r\nUp")); if(PS3.PS3Connected) { PS3.setAllOff(); PS3.setLedOn(LED4); } } if(PS3.getButtonClick(RIGHT)) { Serial.print(F("\r\nRight")); if(PS3.PS3Connected) { PS3.setAllOff(); PS3.setLedOn(LED1); } } if(PS3.getButtonClick(DOWN)) { Serial.print(F("\r\nDown")); if(PS3.PS3Connected) { PS3.setAllOff(); PS3.setLedOn(LED2); } } if(PS3.getButtonClick(LEFT)) { Serial.print(F("\r\nLeft")); if(PS3.PS3Connected) { PS3.setAllOff(); PS3.setLedOn(LED3); } } if(PS3.getButtonClick(L1)) Serial.print(F("\r\nL1")); if(PS3.getButtonClick(L3)) Serial.print(F("\r\nL3")); if(PS3.getButtonClick(R1)) Serial.print(F("\r\nR1")); if(PS3.getButtonClick(R3)) Serial.print(F("\r\nR3")); if(PS3.getButtonClick(SELECT)) { Serial.print(F("\r\nSelect - ")); Serial.print(PS3.getStatusString()); } if(PS3.getButtonClick(START)) { Serial.print(F("\r\nStart")); printAngle = !printAngle; } } if(printAngle) { Serial.print(F("\r\nPitch: ")); Serial.print(PS3.getAngle(Pitch)); Serial.print(F("\tRoll: ")); Serial.print(PS3.getAngle(Roll)); } else if(PS3.PS3MoveConnected) { if(PS3.getAnalogButton(T)) { Serial.print(F("\r\nT: ")); Serial.print(PS3.getAnalogButton(T)); } if(PS3.getButtonClick(PS)) { Serial.print(F("\r\nPS")); PS3.disconnect(); } else { if(PS3.getButtonClick(SELECT)) { Serial.print(F("\r\nSelect")); printTemperature = !printTemperature; } if(PS3.getButtonClick(START)) { Serial.print(F("\r\nStart")); printAngle = !printAngle; } if(PS3.getButtonClick(TRIANGLE)) { Serial.print(F("\r\nTriangle")); PS3.moveSetBulb(Red); } if(PS3.getButtonClick(CIRCLE)) { Serial.print(F("\r\nCircle")); PS3.moveSetBulb(Green); } if(PS3.getButtonClick(SQUARE)) { Serial.print(F("\r\nSquare")); PS3.moveSetBulb(Blue); } if(PS3.getButtonClick(CROSS)) { Serial.print(F("\r\nCross")); PS3.moveSetBulb(Yellow); } if(PS3.getButtonClick(MOVE)) { PS3.moveSetBulb(Off); Serial.print(F("\r\nMove")); Serial.print(F(" - ")); Serial.print(PS3.getStatusString()); } } if(printAngle) { Serial.print(F("\r\nPitch: ")); Serial.print(PS3.getAngle(Pitch)); Serial.print(F("\tRoll: ")); Serial.print(PS3.getAngle(Roll)); } else if(printTemperature) { Serial.print(F("\r\nTemperature: ")); Serial.print(PS3.getTemperature()); } } } <pre>