Как использовать библиотеку со сторонним кодом для подключения к WiFi?
Хороший вопрос, но я пока даже не понял как подключится к роутеру этим модулем, тут только как точка доступа используется, хотя в последней версии обещали что и к роутеру можно.Как использовать библиотеку со сторонним кодом для подключения к WiFi?
Вот ответ на этот вопрос:Хороший вопрос, но я пока даже не понял как подключится к роутеру этим модулем, тут только как точка доступа используется, хотя в последней версии обещали что и к роутеру можно.
Ну раз так , то проверю. Проэкт реально имеет право на жизнь. Но нужно еще приложения на все версии OS.Вот ответ на этот вопрос:
//////////////////////////////////////////////
// RemoteXY include library //
// use library version 2.2.2 or up //
// use ANDROID app version 3.4.1 or up //
//////////////////////////////////////////////
/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__ESP8266_SOFTSERIAL
#include <SoftwareSerial.h>
#include <RemoteXY.h>
/* настройки соединения */
#define REMOTEXY_SERIAL_RX 2
#define REMOTEXY_SERIAL_TX 3
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "мой ссид"
#define REMOTEXY_WIFI_PASSWORD "мой пароль"
#define REMOTEXY_SERVER_PORT 6377
/* конфигурация интерфейса */
unsigned char RemoteXY_CONF[] =
{ 7,5,144,0,4,0,4,128,5,7
,52,5,4,4,128,5,17,52,5,1
,4,128,5,27,52,5,6,1,0,10
,47,7,7,4,208,146,208,186,208,187
,32,49,0,1,0,26,47,7,7,1
,208,146,209,139,208,186,208,187,32,49
,0,1,0,58,47,7,7,4,208,146
,208,186,208,187,32,50,0,1,0,74
,47,7,7,1,208,146,209,139,208,186
,208,187,32,50,0,65,2,19,40,5
,5,2,65,1,67,39,5,5,2,66
,131,66,3,18,8,4,66,131,67,14
,16,7,1,66,131,67,24,16,7,6
,130,1,3,36,86,20,9,129,0,21
,2,9,4,9,82,71,66,0 };
/* структура определяет все переменные вашего интерфейса управления */
struct {
/* input variable */
signed char slider_1; /* =0..100 положение слайдера */
signed char slider_2; /* =0..100 положение слайдера */
signed char slider_3; /* =0..100 положение слайдера */
unsigned char button_1; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_2; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_3; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_4; /* =1 если кнопка нажата, иначе =0 */
/* output variable */
unsigned char led_1_g; /* =0..255 яркость зеленого цвета индикатора */
unsigned char led_2_b; /* =0..255 яркость синего цвета индикатора */
signed char level_1; /* =0..100 положение уровня */
signed char level_2; /* =0..100 положение уровня */
signed char level_3; /* =0..100 положение уровня */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_BUTTON_1 8
#define PIN_BUTTON_2 8
#define PIN_BUTTON_3 9
#define PIN_BUTTON_4 9
int Led_R = 10;
int Led_G = 5;
int Led_B = 6;
int val_1;
int val_2;
int val_3;
int val_4;
int val_5;
int val_6;
void setup()
{
RemoteXY_Init ();
pinMode (PIN_BUTTON_1, OUTPUT);
pinMode (PIN_BUTTON_2, OUTPUT);
pinMode (PIN_BUTTON_3, OUTPUT);
pinMode (PIN_BUTTON_4, OUTPUT);
pinMode (Led_R, OUTPUT);
pinMode (Led_G, OUTPUT);
pinMode (Led_B, OUTPUT);
// TODO you setup code
}
void loop()
{
val_1 = map(1)(RemoteXY.slaider_1, 0, 100, 0, 255);
analogWrite(Led_R,val_1 );
val_2 = map(2)(RemoteXY.slaider_2, 0, 100, 0, 255);
analogWrite(Led_G,val_2 );
val_3 = map(3)(RemoteXY.slaider_3, 0, 100, 0, 255);
analogWrite(Led_B,val_3 );
val_4 = map(4)(analogRead(Led_R), 0, 255, 0, 100);
RemoteXY.level_1 = val_4;
val_5 = map(5)(analogRead(Led_G), 0, 255, 0, 100);
RemoteXY.level_2 = val_5;
val_6 = map(6)(analogRead(Led_B), 0, 255, 0, 100);
RemoteXY.level_3 = val_6;
RemoteXY_Handler ();
digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_2, (RemoteXY.button_2==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_3, (RemoteXY.button_3==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_4, (RemoteXY.button_4==0)?LOW:HIGH);
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
}
Ошибка в имени переменной: RemoteXY.slaider_1Что то ни как ни могу преобразовать диапазоны значений от слайдеров с 0 до 100 в с 0 до 255 для ШИМ.
Код:val_1 = map(1)(RemoteXY.slaider_1, 0, 100, 0, 255); analogWrite(Led_R,val_1 ); val_2 = map(2)(RemoteXY.slaider_2, 0, 100, 0, 255); analogWrite(Led_G,val_2 ); val_3 = map(3)(RemoteXY.slaider_3, 0, 100, 0, 255); analogWrite(Led_B,val_3 ); val_4 = map(4)(analogRead(Led_R), 0, 255, 0, 100); RemoteXY.level_1 = val_4; val_5 = map(5)(analogRead(Led_G), 0, 255, 0, 100); RemoteXY.level_2 = val_5; val_6 = map(6)(analogRead(Led_B), 0, 255, 0, 100); RemoteXY.level_3 = val_6;
val_1 = map(RemoteXY.slider_1, 0, 100, 0, 255);
analogWrite(Led_R,val_1 );
val_2 = map(RemoteXY.slider_2, 0, 100, 0, 255);
analogWrite(Led_G,val_2 );
val_3 = map(RemoteXY.slider_3, 0, 100, 0, 255);
analogWrite(Led_B,val_3 );
val_4 = map(analogRead(Led_R), 0, 255, 0, 100);
RemoteXY.level_1 = val_4;
val_5 = map(analogRead(Led_G), 0, 255, 0, 100);
RemoteXY.level_2 = val_5;
val_6 = map(analogRead(Led_B), 0, 255, 0, 100);
RemoteXY.level_3 = val_6;
Да, спасибо, я уже заметил эту ошибку, все равно не компилит. Сделал проще:Ошибка в имени переменной: RemoteXY.slaider_1
Должно быть: RemoteXY.slider_1
откуда map(1) и т.д.
Получится так:
Код:val_1 = map(RemoteXY.slider_1, 0, 100, 0, 255); analogWrite(Led_R,val_1 ); val_2 = map(RemoteXY.slider_2, 0, 100, 0, 255); analogWrite(Led_G,val_2 ); val_3 = map(RemoteXY.slider_3, 0, 100, 0, 255); analogWrite(Led_B,val_3 ); val_4 = map(analogRead(Led_R), 0, 255, 0, 100); RemoteXY.level_1 = val_4; val_5 = map(analogRead(Led_G), 0, 255, 0, 100); RemoteXY.level_2 = val_5; val_6 = map(analogRead(Led_B), 0, 255, 0, 100); RemoteXY.level_3 = val_6;
slider_1 = RemoteXY.slider_1 * 255 / 100 ;
analogWrite(Led_R, slider_1);
slider_2 = RemoteXY.slider_2 * 255 / 100 ;
analogWrite(Led_R, slider_2);
slider_3 = RemoteXY.slider_3 * 255 / 100 ;
analogWrite(Led_R, slider_3);
RemoteXY.level_1 = analogRead(Led_R) * 100 / 255 ;
RemoteXY.level_2 = analogRead(Led_G) * 100 / 255 ;
RemoteXY.level_3 = analogRead(Led_B) * 100 / 255 ;
Все компилит, я проверил прежде чем писать.Да, спасибо, я уже заметил эту ошибку, все равно не компилит.
И как то с кнопками не понятно.Да, спасибо, я уже заметил эту ошибку, все равно не компилит. Сделал проще:
Код:slider_1 = RemoteXY.slider_1 * 255 / 100 ; analogWrite(Led_R, slider_1); slider_2 = RemoteXY.slider_2 * 255 / 100 ; analogWrite(Led_R, slider_2); slider_3 = RemoteXY.slider_3 * 255 / 100 ; analogWrite(Led_R, slider_3); RemoteXY.level_1 = analogRead(Led_R) * 100 / 255 ; RemoteXY.level_2 = analogRead(Led_G) * 100 / 255 ; RemoteXY.level_3 = analogRead(Led_B) * 100 / 255 ;
digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_2, (RemoteXY.button_2==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_3, (RemoteXY.button_3==0)?LOW:HIGH);
digitalWrite(PIN_BUTTON_4, (RemoteXY.button_4==0)?LOW:HIGH);
Выражение со знаком ? возвращает значение до знака ":" если условие до знака "?" выполняется, если условие не выполняется, будет возвращено значение после знака ":". Это написано по "С++ ински"))) .И как то с кнопками не понятно.
как то не по Ардуински это написано, не понятно как они работают? Нажал - состояние пина инвертировалось, нажал еще раз опять инвертировалось или же нажал - появился High уровень на пине, отпустил кнопку - low уровень.Код:digitalWrite(PIN_BUTTON_1, (RemoteXY.button_1==0)?LOW:HIGH); digitalWrite(PIN_BUTTON_2, (RemoteXY.button_2==0)?LOW:HIGH); digitalWrite(PIN_BUTTON_3, (RemoteXY.button_3==0)?LOW:HIGH); digitalWrite(PIN_BUTTON_4, (RemoteXY.button_4==0)?LOW:HIGH);
Не совсем понял вопроса. Отвечу как понял.Евгений, спасибо за разработку!
Мой вопрос остался без ответа:
Как использовать библиотеку со сторонним кодом для подключения к WiFi?
Я имею в виду когда в скетче уже есть код для подключения к WiFi. Нужно просто вставить сам интерфейс. Но библиотека требует наличияНе совсем понял вопроса. Отвечу как понял.
.
В этом случае уберите код подключения к WiFi, который уже есть в скетче. Библиотека RemoteXY сама все подключит.Я имею в виду когда в скетче уже есть код для подключения к WiFi. Нужно просто вставить сам интерфейс. Но библиотека требует наличия
[HASHTAG]#define[/HASHTAG] REMOTEXY_MODE__ESP8266WIFI_LIB.
Так этого мне как раз и не нужно. Мне нужно гибко настраивать подключение в разных режимах без пере компиляции скетча.В этом случае уберите код подключения к WiFi, который уже есть в скетче. Библиотека RemoteXY сама все подключит.
Нет, такую штуку не получится реализовать, используя тот функционал, который имеется. Т.к. библиотека RemoteXY сама поднимает WiFi. В теории это возможно, вам потребуются изменения в библиотеке RemoteXY.Так этого мне как раз и не нужно. Мне нужно гибко настраивать подключение в разных режимах без пере компиляции скетча.
#include <RemoteReceiver.h>
//////////////////////////////////////////////
// RemoteXY include library //
// use library version 2.2.2 or up //
// use ANDROID app version 3.5.1 or up //
//////////////////////////////////////////////
/* определение режима соединения и подключение библиотеки RemoteXY */
#define REMOTEXY_MODE__ESP8266_HARDSERIAL
#include <RemoteXY.h>
/* настройки соединения */
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 115200
#define REMOTEXY_WIFI_SSID "мой ссид"
#define REMOTEXY_WIFI_PASSWORD "мой пароль"
#define REMOTEXY_SERVER_PORT 6377
/* конфигурация интерфейса */
unsigned char RemoteXY_CONF[] =
{ 7,5,185,0,5,3,1,4,128,6
,49,52,5,6,4,128,6,56,52,5
,4,4,128,6,63,52,5,1,1,0
,7,86,7,7,4,208,146,208,186,208
,187,32,49,0,1,0,17,86,7,7
,1,208,146,209,139,208,186,208,187,32
,49,0,1,0,37,86,7,7,4,208
,146,208,186,208,187,32,50,0,1,0
,47,86,7,7,1,208,146,209,139,208
,186,208,187,32,50,0,65,2,13,76
,5,5,2,65,1,43,76,5,5,2
,66,129,9,9,16,6,6,66,129,9
,19,16,7,4,66,129,9,29,16,7
,1,130,1,4,74,56,22,9,129,0
,5,2,22,4,0,82,71,66,32,76
,101,118,101,108,115,0,130,2,3,1
,26,38,8,130,2,3,42,57,29,5
,129,0,22,44,18,3,0,82,71,66
,32,67,111,110,116,114,111,108,0 };
/* структура определяет все переменные вашего интерфейса управления */
struct {
/* input variable */
signed char slider_1; /* =0..100 положение слайдера */
signed char slider_2; /* =0..100 положение слайдера */
signed char slider_3; /* =0..100 положение слайдера */
unsigned char button_1; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_2; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_3; /* =1 если кнопка нажата, иначе =0 */
unsigned char button_4; /* =1 если кнопка нажата, иначе =0 */
/* output variable */
unsigned char led_1_g; /* =0..255 яркость зеленого цвета индикатора */
unsigned char led_2_b; /* =0..255 яркость синего цвета индикатора */
signed char level_1; /* =0..100 положение уровня */
signed char level_2; /* =0..100 положение уровня */
signed char level_3; /* =0..100 положение уровня */
/* other variable */
unsigned char connect_flag; /* =1 if wire connected, else =0 */
} RemoteXY;
/////////////////////////////////////////////
// END RemoteXY include //
/////////////////////////////////////////////
#define PIN_BUTTON_1 8
#define PIN_BUTTON_2 8
#define PIN_BUTTON_3 9
#define PIN_BUTTON_4 9
int Led_R = 10;
int Led_G = 5;
int Led_B = 6;
long slider_1; //переменные для преоброзования показаний слайдера в ШИМ
long slider_2;
long slider_3;
long count_showCode_1;
long count_showCode_2;
unsigned long eventTime=0;
void setup()
{
RemoteXY_Init ();
pinMode (PIN_BUTTON_1, OUTPUT);
pinMode (PIN_BUTTON_2, OUTPUT);
pinMode (PIN_BUTTON_3, OUTPUT);
pinMode (PIN_BUTTON_4, OUTPUT);
pinMode (Led_R, OUTPUT);
pinMode (Led_G, OUTPUT);
pinMode (Led_B, OUTPUT);
// TODO you setup code
RemoteReceiver::init(0, 0, showCode);
count_showCode_1 = 0;
count_showCode_2 = 0;
}
void loop()
{
RemoteXY_Handler ();
if(RemoteXY.button_1==1)digitalWrite(PIN_BUTTON_1, HIGH);
if(RemoteXY.button_2==1)digitalWrite(PIN_BUTTON_1, LOW);
if(RemoteXY.button_3==1)digitalWrite(PIN_BUTTON_3, HIGH);
if(RemoteXY.button_4==1)digitalWrite(PIN_BUTTON_3, LOW);
if(digitalRead(8) == HIGH) RemoteXY.led_1_g = 255;
if(digitalRead(8) == LOW) RemoteXY.led_1_g = 0;
if(digitalRead(9) == HIGH) RemoteXY.led_2_b = 255;
if(digitalRead(9) == LOW) RemoteXY.led_2_b = 0;
slider_1 = RemoteXY.slider_1 * 255 / 100 ;
analogWrite(Led_R, slider_1);
slider_2 = RemoteXY.slider_2 * 255 / 100 ;
analogWrite(Led_G, slider_2);
slider_3 = RemoteXY.slider_3 * 255 / 100 ;
analogWrite(Led_B, slider_3);
RemoteXY.level_1 = RemoteXY.slider_1 ;
RemoteXY.level_2 = RemoteXY.slider_2 ;
RemoteXY.level_3 = RemoteXY.slider_3 ;
}
void showCode(unsigned long receivedCode, unsigned int period){
if(receivedCode == 272242) {
count_showCode_1 = count_showCode_1 + 1;
RemoteReceiver::disable();
if(count_showCode_1 == 1){
digitalWrite(PIN_BUTTON_1, HIGH);
RemoteXY.slider_1 = 25;
eventTime=millis();
}
if(count_showCode_1 == 2){
RemoteXY.slider_1 = 50;
eventTime=millis();
}
if(count_showCode_1 == 3){
RemoteXY.slider_1 = 75;
eventTime=millis();
}
if(count_showCode_1 == 4){
RemoteXY.slider_1 = 100;
eventTime=millis();
}
if(count_showCode_1 == 5){
RemoteXY.slider_1 = 0;
digitalWrite(PIN_BUTTON_1, LOW);
count_showCode_1 = 0;
eventTime=millis();
}
}
if(receivedCode == 272268){
count_showCode_2 = count_showCode_2 + 1;
RemoteReceiver::disable();
if(count_showCode_2 == 1){
eventTime=millis();
digitalWrite(PIN_BUTTON_3, HIGH);
RemoteXY.slider_2 = 25;
}
if(count_showCode_2 == 2)
{
RemoteXY.slider_2 = 50;
eventTime=millis();
}
if(count_showCode_2 == 3){
RemoteXY.slider_2 = 75;
eventTime=millis();
}
if(count_showCode_2 == 4){
RemoteXY.slider_2 = 100;
eventTime=millis();
}
if(count_showCode_2 == 5){
RemoteXY.slider_2 = 0;
digitalWrite(PIN_BUTTON_3, LOW);
count_showCode_2 = 0;
eventTime=millis();
}
//if(millis()-eventTime > 500) RemoteReceiver::enable();
//eventTime = millis();
}
//if(count_showCode_1 >= 0 && count_showCode_1 < 7 || count_showCode_2 >= 0 && count_showCode_2 < 7)eventTime=millis();
if(millis()-eventTime>500) RemoteReceiver::enable(); // это условие не выполняется почему то
}
#define PIN_BUTTON_RED D2
#define PIN_BUTTON_YELLOW D1
#define PIN_BUTTON_BLUE D0