Topic: hc-06
Привет
Пытался зацепить IOS к данному модулю
никак
IPAD iphone не видит в упор модуль
С Android все OK
Была собрана машинка на 4 реле и нано
Переделали под управление RemoteXY - спасибо за проект
Подскажите как инвертировать право лево?
Скетч с мигающими светодиодами/
/////////////////////////////////////////////
// RemoteXY include library //
/////////////////////////////////////////////
/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__SOFTWARESERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
#include "TimerOne.h"
/* настройки соединения */
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 9600
uint8_t blink_loop = 0;
uint8_t blink_mode = 0;
uint8_t modes_count = 0;
void timerIsr()
{
if ( blink_mode & 1 << (blink_loop & 0x07) ) digitalWrite(11, HIGH), digitalWrite(12, HIGH);
else digitalWrite(11, LOW), digitalWrite(12, LOW);
blink_loop++;
}
/* конфигурация интерфейса */
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 2,0,10,0,6,13,0,5,32,58
,13,37,37,2 };
/* структура определяет все переменные вашего интерфейса управления */
struct {
/* input variable */
int8_t joystick_1_x; /* =-100..100 координата x положения джойстика */
int8_t joystick_1_y; /* =-100..100 координата y положения джойстика */
/* other variable */
uint8_t connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
/* определяем пины управления правым мотором */
#define PIN_MOTOR_RIGHT_UP 7
#define PIN_MOTOR_RIGHT_DN 8
//#define PIN_MOTOR_RIGHT_SPEED 10
/* определяем пины управления левым мотором */
#define PIN_MOTOR_LEFT_UP 10
#define PIN_MOTOR_LEFT_DN 9
//#define PIN_MOTOR_LEFT_SPEED 9
/* определяем пин управления светодиодом */
//#define PIN_LED 12
//#define PIN_LED 11
/* определяем два массива с перечислением пинов для каждого мотора */
unsigned char RightMotor[3] =
{PIN_MOTOR_RIGHT_UP, PIN_MOTOR_RIGHT_DN};
unsigned char LeftMotor[3] =
{PIN_MOTOR_LEFT_UP, PIN_MOTOR_LEFT_DN};
/*
управление скоростью мотора
motor - ссылка на массив пинов
v - скорость мотора, может принимать значения от -100 до 100
*/
void Wheel (unsigned char * motor, int v)
{
if (v>100) v=100;
if (v<-100) v=-100;
if (v>0) {
digitalWrite(motor[0], HIGH);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], v*2.55);
}
else if (v<0) {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], HIGH);
analogWrite(motor[2], (-v)*2.55);
}
else {
digitalWrite(motor[0], LOW);
digitalWrite(motor[1], LOW);
analogWrite(motor[2], 0);
}
}
void setup()
{
/* инициализация пинов */
pinMode (PIN_MOTOR_RIGHT_UP, OUTPUT);
pinMode (PIN_MOTOR_RIGHT_DN, OUTPUT);
pinMode (PIN_MOTOR_LEFT_UP, OUTPUT);
pinMode (PIN_MOTOR_LEFT_DN, OUTPUT);
// pinMode (PIN_LED, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
blink_mode = 0B00000000;
Timer1.initialize(125000);
Timer1.attachInterrupt( timerIsr );
/* инициализация модуля RemoteXY */
RemoteXY_Init ();
}
void loop()
{
blink_mode = 0B00001111;
/* обработчик событий модуля RemoteXY */
RemoteXY_Handler ();
/* управляем пином светодиода */
// digitalWrite (PIN_LED, (RemoteXY.switch_1==0)?LOW:HIGH);
/* управляем правым мотором */
Wheel (RightMotor, RemoteXY.joystick_1_y - RemoteXY.joystick_1_x);
/* управляем левым мотором */
Wheel (LeftMotor, RemoteXY.joystick_1_y + RemoteXY.joystick_1_x);
}