I tried communicating between Wi-Fi devices using Blynk's Bridge widget!
http://docs.blynk.cc/#widgets-other-bridge
ConstitutionSend the value of the Nunchaku controller's joystick to the Blynk server via Wi-Fi.
Part BReceive the joystick values sent to the Blynk server and move the LED eyeball.
Blynk settingCreate two projects and acquire two Auth Tokens. Since the application is not used directly, detailed setting is not necessary at all.
This is the Blynk library for Arduino.
Arduino IDE ProgramPart AI used the following Wii Nunchaku library for microcomputer.
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Wire.h>
#include "nunchuck_funcs.h"
// You should get Auth Token in the Blynk App.
char auth[] = "AuthToken for A";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
// Bridge widget on virtual pin 0
WidgetBridge bridge1(V0);
byte joyx,joyy;
void setup() {
// Debug console
Serial.begin(115200);
nunchuck_init();
Blynk.begin(auth, ssid, pass);
}
BLYNK_CONNECTED() {
// Token of the hardware B
bridge1.setAuthToken("AuthToken for B");
}
void loop() {
nunchuck_get_data();
joyx = nunchuck_joyx(); // range 29 - 226
joyy = nunchuck_joyy(); // range 29 - 226
Serial.print("joyx: "); Serial.print((byte)joyx,DEC);
Serial.print("\tjoyy: "); Serial.println((byte)joyy,DEC);
//Send Joystick's values to B(Virtual pin V1)
bridge1.virtualWrite(V1, joyx, joyy);
Blynk.run();
}
Part BThe library for the LED used the following.
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Adafruit_NeoPixel.h>
#define PIN D4
Adafruit_NeoPixel led = Adafruit_NeoPixel(68, PIN, NEO_GRB + NEO_KHZ800);
int blackNum = 24;
int pupilNum = 12;
uint32_t color;
int brightness = 40;
byte eyeColor;
int LR =0;
//Black eye L&R animation
int blackLED[15][24] = {{12,32,35,55,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{12,13,31,36,54,55,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{11,13,14,30,37,53,54,56,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{10,11,14,15,29,38,52,53,56,57,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{ 9,10,11,12,15,16,28,33,34,39,51,52,55,56,57,58,68,68,68,68,68,68,68,68},
{ 0, 8, 9,10,11,12,13,16,17,27,32,35,40,50,51,54,55,56,57,58,59,67,68,68},
{ 0, 1, 7, 8, 9,10,13,14,17,18,26,31,36,41,49,50,53,54,57,58,59,60,66,67},
{ 1, 2, 6, 7, 8, 9,14,15,18,19,25,30,37,42,48,49,52,53,58,59,60,61,65,66},
{ 2, 3, 5, 6, 7, 8,15,16,19,20,24,29,38,43,47,48,51,52,59,60,61,62,64,65},
{ 3, 4, 5, 6, 7,16,17,20,21,23,28,39,44,46,47,50,51,60,61,62,63,64,68,68},
{ 4, 5, 6,17,18,21,22,27,40,45,46,49,50,61,62,63,68,68,68,68,68,68,68,68},
{ 4, 5,18,19,26,41,48,49,62,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{ 4,19,20,25,42,47,48,63,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{20,21,24,43,46,47,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68},
{21,23,44,46,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}};
//pupil L&R animation
int pupilLED[15][12] = {{33,34,68,68,68,68,68,68,68,68,68,68},
{32,33,34,35,68,68,68,68,68,68,68,68},
{12,31,32,33,34,35,36,55,68,68,68,68},
{12,13,30,31,32,33,34,35,36,37,54,55},
{13,14,29,30,31,32,35,36,37,38,53,54},
{14,15,28,29,30,31,36,37,38,39,52,53},
{15,16,27,28,29,30,37,38,39,40,51,52},
{16,17,26,27,28,29,38,39,40,41,50,51},
{17,18,25,26,27,28,39,40,41,42,49,50},
{18,19,24,25,26,27,40,41,42,43,48,49},
{19,20,23,24,25,26,41,42,43,44,47,48},
{20,21,22,23,24,25,42,43,44,45,46,47},
{21,22,23,24,43,44,45,46,68,68,68,68},
{22,23,44,45,68,68,68,68,68,68,68,68},
{22,45,68,68,68,68,68,68,68,68,68,68}};
//Blink animation
int eyelid = 0;
int eyelidNum[8] = {0,4,8,16,24,34,44,56};
int eyelidLED[56] = {64,65,66,67,58,59,60,61,56,57,62,63,49,50,51,52,47,48,53,54,38,39,40,41,46,55,36,37,42,43,26,27,28,29,35,44,24,25,30,31,15,16,17,18,34,45,23,32,13,14,19,20,6,7,8,9};
int x, y;
// You should get Auth Token in the Blynk App.
char auth[] = "AuthToken for B";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
void setup() {
// Debug console
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
led.begin();
led.setBrightness(brightness); // Initial Brightness 40
led.show(); // Initialize all pixels to 'off'
color = led.Color(0, 177, 55); //pupil color
}
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return led.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return led.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return led.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
void blink(int eyelid, int LR) {
if (eyelid != 8){
//White eye
for(uint16_t i=0; i<led.numPixels(); i++) {
led.setPixelColor(i, led.Color(66, 66, 66));
}
//Black eye
for(uint16_t i=0; i<blackNum; i++) {
led.setPixelColor(blackLED[LR][i], color);
}
//pupil
for(uint16_t i=0; i<pupilNum; i++) {
led.setPixelColor(pupilLED[LR][i], led.Color(0, 0, 66));
}
//eyelid
for(int i=0; i < eyelidNum[eyelid]; i++) {
led.setPixelColor(eyelidLED[i], 0);
}
} else if (eyelid == 8){
led.clear();
}
led.show();
}
BLYNK_WRITE(V1){
x = param[0].asInt();
y = param[1].asInt();
Serial.print("joyx: "); Serial.print(x);
Serial.print(" joyy: "); Serial.println(y);
//Blink on joystick y axis
eyelid = map(y, 29, 130, 8, 0);
if (eyelid > 8) {
eyelid = 8;
}
if (eyelid < 0) {
eyelid = 0;
}
//Joystick x-axis pupil left and right
LR = map(x, 29, 226, 0, 14);
if (LR > 14) {
LR = 14;
}
if (LR < 0) {
LR = 0;
}
blink(eyelid, LR);
}
void loop() {
Blynk.run();
}
Operation:
Comments
Please log in or sign up to comment.