blynk APP
没有编码在应用程序方面。App之间的“对话”(blynk)和微控制器(wemos)是由“虚拟销”基本上是用于发送和接收信息的渠道,这两者之间。虚拟销例如用来发送选定的歌曲从blynk APP WeMos的行数,和wemos处理休息,即发送命令到plotclock伺服。
wemos代码
/**************************************************************
Table widget at V2
**************************************************************/
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Servo.h>
char auth[] = "--YOUR AUTH CODE--"; //Jukebox project
char ssid[] = "--YOUR SSID--";
char pass[] = "--YOUR WIFI PASSWORD--";
int c[50]; //Array for Jukebox record positions (100-299)
Servo myservo1; //lifting
Servo myservo2; //left arm
Servo myservo3; //right arm
int pos1 = 0;
int pos2 = 0;
int pos3 = 0;
int btn=0;
void setup()
{
myservo1.attach(2); // pin D4, lift
myservo2.attach(14); // pin D5, left
myservo3.attach(12); // pin D6, right
myservo1.write(140);
myservo2.write(90);
myservo3.write(90);
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
// Notify immediately on startup
//String msg = "Jukebox WeMos connected to: ";
//Blynk.notify(msg + ssid);
//clear table at start
Blynk.virtualWrite(V2, "clr");
populateTable();
}
BLYNK_WRITE(V2) //Receive commands from Table widget V2
{
String cmd = param[0].asStr(); //param[0]="select" or "deselect", param[1]=row
Serial.print("\nTable: BLYNK_WRITE(V2) cmd: ");
Serial.print(cmd);
int selection = c[param[1].asInt()]; //Selected row number is in param[1]
Serial.println("\nSelection: ");
Serial.println(selection);
process_selection(selection);
}
void populateTable()
{
int i = 0;
Serial.println("Populating table...") ;
Blynk.virtualWrite(V2, "add", 0, "Be My Baby - The Supremes", 112); c[i] = 112;
Blynk.virtualWrite(V2, "add", 1, "Number One - Jerry Williams", 176); i++; c[i] = 176;
Blynk.virtualWrite(V2, "add", 2, "All My Loving - The Beatles", 184); i++; c[i] = 184;
Blynk.virtualWrite(V2, "add", 3, "In the Summertime - Mungo Jerry", 236); i++; c[i] = 236;
Blynk.virtualWrite(V2, "add", 4, "Black Cloud - Chubby Checker", 155); i++; c[i] = 155;
Blynk.virtualWrite(V2, "add", 5, "Mamy Blue - Pop-Tops", 260); i++; c[i] = 260;
Blynk.virtualWrite(V2, "add", 6, "It's Gonna Be Alright - Gerry & Pacemakers", 145); i++; c[i] = 145;
Blynk.virtualWrite(V2, "add", 7, "My Way - Tom Jones", 193); i++; c[i] = 193;
Blynk.virtualWrite(V2, "add", 8, "San Bernadino - Christie", 149); i++; c[i] = 149;
Blynk.virtualWrite(V2, "add", 9, "The Twist - Chubby Checker", 169); i++; c[i] = 169;</p><p> delay(1000);
}
void process_selection (int selection)
{
//parse 3-digit selection (eg. 178) to 3 buttons:
int btn1 = int(selection/100); //first button
Serial.println("\nBtn1: ");
Serial.println(btn1);
if (btn1 == 1 || btn1 == 2) //first button must be 1 or 2 - otherwise do the reset
{
push_button(btn1);
selection = selection - (btn1 * 100);
int btn2 = int(selection/10); //second button
Serial.println("\nBtn2: ");
Serial.println(btn2);
push_button(btn2);
selection = selection - (btn2 * 10);
int btn3 = int(selection); //third button
Serial.println("\nBtn3: ");
Serial.println(btn3);
push_button(btn3);
} else
{
push_button(11); //reset button
}
//reset servo positions when all done
delay(2000);
myservo1.write(140);
myservo2.write(90);
myservo3.write(90);}
void push_button(int btn)
{
//this is called 3 times for each selection
//actual button push is done after each button (find 'actual button push')
switch (btn) {
case 1:
set_servo_angles (134, 136); //1
break;
case 2:
set_servo_angles (128,110); //2
break;
case 3:
set_servo_angles (112,88); //3
break;
case 4:
set_servo_angles (89,68); //4
break;
case 5:
set_servo_angles (62,55); //5
break;
case 6:
set_servo_angles (172,131); //6
break;
case 7:
set_servo_angles (163,106); //7
break;
case 8:
set_servo_angles (140,83); //8
break;
case 9:
set_servo_angles (104,58); //9
break;
case 0:
set_servo_angles (75,36); //0
break;
case 11:
set_servo_angles (36, 30); //11
break;
}
//end switch
}
void set_servo_angles(int pos2, int pos3)
{
myservo2.write(pos2);
myservo3.write(pos3);
//Servo positions ready - perform the actual button push:
delay(500);
myservo1.write(60); //down
delay(500);
myservo1.write(140); //up
delay(500);
}
void loop()
{
Blynk.run();
}