В настоящее время я работаю над контроллером PS3 с Arduino UNO, используя USB-хост и Bluetooth 4.0. До сих пор я успешно выполнял коммуникационную часть, а также сигнал переводится с контроллера PS3 на Arduino. Но когда я добавляю функцию analogWrite () для управления двигателями D C, arduino прекращает прием сигнала и переходит в бесконечное значение l oop и продолжает показывать последние обновленные значения сигнала. Вот мой код.
#include <usbhub.h>
// Satisfy the IDE, which needs to see the include statment in the ino too.
#ifdef dobogusinclude
#include <spi4teensy3.h>
#include <SPI.h>
#endif
#define enl 11
#define enr 10
#define l1 7
#define l2 8
#define r1 5
#define r2 6
USB Usb;
BTD Btd(&Usb); // You have to create the Bluetooth Dongle instance like so
PS3BT PS3(&Btd); // This will just create the instance
void forward(int val){
analogWrite(enl,val);
analogWrite(enr,val);
digitalWrite(l1,HIGH);
digitalWrite(l2,LOW);
digitalWrite(r1,HIGH);
digitalWrite(r2,LOW);
}
void setup() {
Serial.begin(115200);
#if !defined(__MIPSEL__)
while (!Serial);
#endif
if (Usb.Init() == -1) {
Serial.print(F("\r\nOSC did not start"));
while (1); //halt
}
}
void loop() {
Usb.Task();
if (PS3.PS3Connected || PS3.PS3NavigationConnected) {
if (PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117 || PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117 || PS3.getAnalogHat(RightHatX) > 137 || PS3.getAnalogHat(RightHatX) < 117 || PS3.getAnalogHat(RightHatY) > 137 || PS3.getAnalogHat(RightHatY) < 117) {
if(PS3.getAnalogHat(LeftHatY)>=137)
forward(PS3.getAnalogHat(LeftHatY));
}
else{
stopBot();
}
}}