#include <Blynk.h>
#include <HCSR04.h>
UltraSonicDistanceSensor distanceSensor(D6, D7); // Initialize sensor that uses digital pins 13 and 12.
/*Wemos Sterownik
* D1 SCL
* D2 SDA
* 3V3 - VCC
* 5V - 5V
*/
#define WIFI_NAME "..."
#define WIFI_PASSWORD "..."
#define DEVICE_ID 1
#define DEVICE_NAME "..."
#define TOKEN "..."
#include <RemoteMe.h>
#include <RemoteMeSocketConnector.h>
#include <ESP8266WiFi.h>
RemoteMe& remoteMe = RemoteMe::getInstance(TOKEN, DEVICE_ID);
//*************** CODE FOR CONFORTABLE VARIABLE SET *********************
inline void setWave(int32_t i) {remoteMe.getVariables()->setInteger("wave", i); }
//*************** IMPLEMENT FUNCTIONS BELOW *********************
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN 150 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX 600 // this is the 'maximum' pulse length count (out of 4096)
#define MIN_PULSE_WIDTH 650
#define MAX_PULSE_WIDTH 2350
#define DEFAULT_PULSE_WIDTH 1500
#define FREQUENCY 50
// our servo # counter
uint8_t servonum = 0;
int zmiana=90;
int v0;
int v1;
int v2;
int v3;
int v4;
int v5;
int v6;
int v7;
int v8;
int v9;
int v10;
int v12;
int voice;
void onWaveChange(int32_t i) {
Serial.printf("onWaveChange: i: %d\n",i);
wave();
}
int lewezmiana=90;
int prawazmiana=90;
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "b522def33e9c427098a5f00019040395";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "RENIFER 2.4 ODU";
char pass[] = "Mjc4OEQ1";
void setup()
{
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
remoteMe.getVariables()->observeInteger("wave" ,onWaveChange);
remoteMe.setConnector(new RemoteMeSocketConnector());
remoteMe.sendRegisterDeviceMessage(DEVICE_NAME);
// Debug console
Serial.begin(9600);
Serial.begin(9600);
Serial.println("8 channel Servo test!");
pwm.begin();
pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates
ruch(5,115);
ruch(7,115);
ruch(9,115);
ruch(11,115);
//
lewezmiana=45;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(4, 0, lewezmiana); //45 przod 135 tyl
lewezmiana=135;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(6, 0, lewezmiana); //135 przod 45 tyl
lewezmiana=135;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(8, 0, lewezmiana); //45 przod 135 tyl
lewezmiana=45;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(10, 0, lewezmiana); //135 przod 45 tyl
//
delay(1000);
Blynk.begin(auth, ssid, pass);
}
// you can use this function if you'd like to set the pulse length in seconds
// e.g. setServoPulse(0, 0.001) is a ~1 millisecond pulse width. its not precise!
void setServoPulse(uint8_t n, double pulse) {
double pulselength;
pulselength = 1000000; // 1,000,000 us per second
pulselength /= 60; // 60 Hz //60
Serial.print(pulselength); Serial.println(" us per period");
pulselength /= 4096; // 12 bits of resolution //4096
Serial.print(pulselength); Serial.println(" us per bit");
pulse *= 1000000; // convert to us
pulse /= pulselength;
Serial.println(pulse);
pwm.setPWM(n, 0, pulse);
}
void lewosetpwm(int nrserwa,int kat,int opoznienie)
{
servonum=nrserwa;
lewezmiana=kat;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(servonum, 0, lewezmiana);
}
void prawosetpwm(int nrserwa,int kat,int opoznienie)
{
kat=180-kat;
servonum=nrserwa;
lewezmiana=kat;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(servonum, 0, lewezmiana);
}
void ruch(int servo,int kat)
{
if(servo==5||servo==4||servo==8||servo==11)
{
lewezmiana=kat;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(servo, 0, lewezmiana);
}
else
{
lewezmiana=180-kat;
lewezmiana = map(lewezmiana,0, 180, SERVOMIN, SERVOMAX);
pwm.setPWM(servo, 0, lewezmiana);
}
}
void przod()
{
ruch(6,90);
delay(90);
ruch(10,90);
delay(90);
ruch(7,45);
ruch(6,45);
delay(90);
ruch(7,115);
delay(90);
ruch(4,90);
ruch(10,135);
ruch(9,45);
delay(90);
ruch(8,90);
ruch(9,115);
//
delay(90);
//faza 2
ruch(5,45);
delay(90);
ruch(4,45);
delay(90);
ruch(5,115);
delay(90);
ruch(6,90);
ruch(8,135);
ruch(11,45);
delay(90);
ruch(10,90);
ruch(11,115);
delay(90);
}
void nowyprzod()
{
defaultpoz();
delay(90);
ruch(7,90);
ruch(9,90);
ruch(6,15);
ruch(8,105);
delay(90);
ruch(4,75);
ruch(10,165);
delay(90);
ruch(7,115);
ruch(9,115);
delay(90);
ruch(6,45);
ruch(8,135);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
//1 faza
ruch(5,90);
ruch(11,90);
delay(90);
ruch(4,15);
ruch(10,105);
delay(90);
ruch(6,75);
ruch(8,165);
delay(90);
ruch(5,115);
ruch(11,115);
delay(90);
ruch(6,45);
ruch(8,135);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
}
void tyl()
{
ruch(8,90);
delay(90);
ruch(4,90);
delay(90);
ruch(9,45);
ruch(8,135);
delay(90);
ruch(9,115);
delay(90);
ruch(10,90);
ruch(4,45);
ruch(7,45);
delay(90);
ruch(6,90);
ruch(7,115);
//
delay(90);
//faza 2
ruch(11,45);
delay(90);
ruch(10,135);
delay(90);
ruch(11,115);
delay(90);
ruch(8,90);
ruch(6,45);
ruch(5,45);
delay(90);
ruch(4,90);
ruch(5,115);
delay(90);
}
void nowytyl()
{
defaultpoz();
delay(90);
ruch(9,90);
ruch(7,90);
ruch(8,165);
ruch(6,75);
delay(90);
ruch(10,105);
ruch(4,15);
delay(90);
ruch(9,115);
ruch(7,115);
delay(90);
ruch(8,135);
ruch(6,45);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
//1 faza
ruch(5,90);
ruch(11,90);
delay(90);
ruch(10,165);
ruch(4,75);
delay(90);
ruch(8,105);
ruch(6,15);
delay(90);
ruch(5,115);
ruch(11,115);
delay(90);
ruch(8,135);
ruch(6,45);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
}
void defaultpoz()
{
ruch(4,45);
ruch(6,45);
ruch(8,135);
ruch(10,135);
ruch(5,115);
ruch(7,115);
ruch(9,115);
ruch(11,115);
}
void prawo()
{
defaultpoz();
delay(90);
ruch(10,90);
ruch(7,45);
delay(90);
ruch(6,90);
delay(90);
ruch(7,115);
delay(90);
ruch(4,90);
ruch(6,45);
ruch(8,180);
ruch(11,45);
delay(90);
ruch(10,180);
delay(90);
ruch(11,115);
delay(90);
ruch(9,45);
delay(90);
ruch(8,135);
delay(90);
ruch(9,115);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
}
void noweprawo()
{
defaultpoz();
delay(90);
ruch(6,15);
ruch(8,165);
delay(90);
ruch(5,90);
ruch(11,90);
delay(90);
ruch(4,15);
ruch(10,165);
delay(90);
ruch(5,115);
ruch(11,115);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
ruch(7,90);
ruch(9,90);
delay(90);
ruch(6,45);
ruch(8,135);
delay(90);
ruch(7,115);
ruch(9,115);
}
void nowelewo()
{
defaultpoz();
delay(90);
ruch(4,15);
ruch(10,165);
delay(90);
ruch(7,90);
ruch(9,90);
delay(90);
ruch(6,15);
ruch(8,165);
delay(90);
ruch(7,115);
ruch(9,115);
delay(90);
ruch(6,45);
ruch(8,135);
delay(90);
ruch(5,90);
ruch(11,90);
delay(90);
ruch(4,45);
ruch(10,135);
delay(90);
ruch(5,115);
ruch(11,115);
}
void lewo()
{
defaultpoz();
delay(90);
ruch(8,90);
ruch(5,45);
delay(90);
ruch(4,90);
delay(90);
ruch(5,115);
delay(90);
ruch(9,45);
delay(90);
ruch(4,45);
ruch(6,90);
ruch(10,180);
ruch(8,180);
delay(90);
ruch(9,115);
delay(90);
ruch(11,45);
delay(90);
ruch(10,135);
delay(90);
ruch(11,115);
delay(90);
ruch(8,135);
ruch(6,45);
delay(90);
}
void skladanie()
{
defaultpoz();
ruch(4,90);
ruch(6,90);
ruch(8,90);
ruch(10,90);
ruch(5,180);
ruch(7,180);
ruch(9,180);
ruch(11,180);
}
void lookup()
{
ruch(11,45);
delay(90);
ruch(10,170);
delay(90);
ruch(11,90);
delay(90);
ruch(9,45);
delay(90);
ruch(8,170);
delay(90);
ruch(11,45);
delay(90);
ruch(5,170);
ruch(7,170);
}
void wave()
{
ruch(8,90);
delay(90);
ruch(5,45);
delay(90);
ruch(4,5);
delay(90);
ruch(5,115);
delay(90);
ruch(7,45);
delay(90);
ruch(6,5);
delay(90);
ruch(6,45);
delay(90);
ruch(6,5);
delay(90);
ruch(6,45);
delay(90);
ruch(6,115);
}
void laydown()
{
ruch(5,45);
delay(100);
ruch(7,45);
delay(100);
ruch(9,45);
delay(100);
ruch(11,45);
delay(100);
}
void odleglosc()
{
}
BLYNK_WRITE(V0){
v0=param.asInt();
if(v0==1)
{
nowyprzod();
}
}
BLYNK_WRITE(V1){
v1=param.asInt();
if(v1==1)
{
nowelewo();
}
}
BLYNK_WRITE(V2){
v2=param.asInt();
if(v2==1)
{
noweprawo();
}
}
BLYNK_WRITE(V3){
v3=param.asInt();
if(v3==1)
{
skladanie();
}
}
BLYNK_WRITE(V4){
v4=param.asInt();
if(v4==1)
{
defaultpoz();
}
}
BLYNK_WRITE(V5){
v5=param.asInt();
if(v5==1)
{
nowytyl();
}
}
BLYNK_WRITE(V6){
v6=param.asInt();
if(v6==1)
{
lookup();
}
}
BLYNK_WRITE(V7){
v7=param.asInt();
if(v7==1)
{
wave();
}
}
BLYNK_WRITE(V8){
v8=param.asInt();
if(v8==1)
{
laydown();
}
}
BLYNK_WRITE(V10){
v10=param.asInt();
if(v10==1)
{
odleglosc();
}
}
BLYNK_WRITE(V12){
v12=param.asInt();
if(v12==1)
{
Blynk.virtualWrite(V11, distanceSensor.measureDistanceCm());
}
}
BLYNK_WRITE(V9){
v9=param.asInt();
if(v9==1)
{
voice=1;
}
else
{
voice=0;
}
}
void loop() {
Blynk.run();
float pomiar = distanceSensor.measureDistanceCm();
Blynk.virtualWrite(V11, pomiar);
if(v10==1)
{
// Serial.println(distanceSensor.measureDistanceCm());
if(pomiar<=15)
{
nowytyl();
}
if(pomiar>=50)
{
nowyprzod();
}
}
if(voice==1)
{
remoteMe.loop();
}
if(v0==0&&v1==0&&v2==0&&v3==0&&v5==0&&v6==0&&v8==0&&v12==0&&v10==0)
{
defaultpoz();
}
}
Comments