// this is esp32 and blynk code
// please note here I have used multiple devices and motor drivers
#define BLYNK_PRINT Serial
// Include Libraries
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32_Servo.h>
//pins for motor driver1 inputs
const int input1=32;
const int input2=33;
const int input3=25;
const int input4=26;
//pins for motor driver2 inputs
const int input11=27;
const int input22=14;
const int input33=12;
const int input44=13;
//pins for motor driver3 inputs
const int MotorLeft[2] = {23,22};
const int MotorRight[2] = {1,3};
//pins for limit (brake) switches
const int upper_limit=36;
const int lower_limit=39;
//pins for other components
const int buzzer_pin=4;
// Pin Definitions for servos
#define SERVOMD2_2_PIN_SIG 5
#define SERVOMD4_4_PIN_SIG 18
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "khaNno_d_PlPu9JRoLDk8mOyCzYmO_ec";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "lgq6";
char pass[] = "avanish307";
WidgetLED led1(2);
BlynkTimer timer;
// 2 LED Widget is blinking
void blinkLedWidget()
{
if (led1.getValue()) {
led1.on();
}
else {
led1.off();
}
}
Servo servoMD2_2;
Servo servoMD4_4;
BLYNK_WRITE(V0)
{
servoMD2_2.write(param.asInt());
}
BLYNK_WRITE(V1)
{
servoMD4_4.write(param.asInt());
}
int arm_brake1=0;
int arm_brake2=0;
void setup() {
// Setup Serial which is useful for debugging
// Use the Serial Monitor to view printed messages
Serial.begin(9600);
while (!Serial) ; // wait for serial port to connect. Needed for native USB
Serial.println("start");
Blynk.begin(auth, ssid, pass);
MotorInit();
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
servoMD2_2.attach(SERVOMD2_2_PIN_SIG);
servoMD4_4.attach(SERVOMD4_4_PIN_SIG);
pinMode(36,INPUT);
pinMode(39,INPUT);
pinMode(32,OUTPUT);
pinMode(33,OUTPUT);
pinMode(25,OUTPUT);
pinMode(26,OUTPUT);
pinMode(27,OUTPUT);
pinMode(14,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(4,OUTPUT);
timer.setInterval(1000L, blinkLedWidget);
}
void loop() {
arm_brake1=digitalRead( upper_limit);
arm_brake2=digitalRead( lower_limit);
if (arm_brake1==1){
lower_joint_brake();
Serial.print(" arm_brake 1=");
Serial.println(arm_brake1);
}
else if
(arm_brake2==1){
upper_joint_brake();
Serial.print(" arm_brake 2=");
Serial.println(arm_brake2);
}
else{
arm_stable_mode();
}
Blynk.run();
timer.run();
}
//Intialize the motor
void MotorInit()
{
int i;
for(i=0 ; i<2; i++)
{
pinMode(MotorLeft[i],OUTPUT);
pinMode(MotorRight[i],OUTPUT);
}
}
//Robot Driving Functions
void Robot_Forward()
{
digitalWrite(MotorLeft[0],0);
digitalWrite(MotorLeft[1],1);
digitalWrite(MotorRight[0],1);
digitalWrite(MotorRight[1],0);
}
void Robot_Backward()
{
digitalWrite(MotorLeft[0],1);
digitalWrite(MotorLeft[1],0);
digitalWrite(MotorRight[0],0);
digitalWrite(MotorRight[1],1);
}
void Robot_Left()
{
digitalWrite(MotorLeft[0],1);
digitalWrite(MotorLeft[1],0);
digitalWrite(MotorRight[0],1);
digitalWrite(MotorRight[1],0);
}
void Robot_Right()
{
digitalWrite(MotorLeft[0],0);
digitalWrite(MotorLeft[1],1);
digitalWrite(MotorRight[0],0);
digitalWrite(MotorRight[1],1);
}
void Robot_Stop()
{
digitalWrite(MotorLeft[0],0);
digitalWrite(MotorLeft[1],0);
digitalWrite(MotorRight[0],0);
digitalWrite(MotorRight[1],0);
}
//arm joint movement functions
void lower_joint_forward(){
digitalWrite(32,1);
digitalWrite(33,0);
}
void lower_joint_backward(){
digitalWrite(32,0);
digitalWrite(33,1);
}
void lower_joint_brake(){
digitalWrite(32,0);
digitalWrite(33,0);
}
void upper_joint_forward(){
digitalWrite(25,1);
digitalWrite(26,0);
}
void upper_joint_backward(){
digitalWrite(25,0);
digitalWrite(26,1);
}
void upper_joint_brake(){
digitalWrite(25,0);
digitalWrite(26,0);
}
void arm_stable_mode(){
digitalWrite(32,0);
digitalWrite(33,0);
digitalWrite(25,0);
digitalWrite(26,0);
digitalWrite(27,0);
digitalWrite(14,0);
digitalWrite(12,0);
digitalWrite(13,0);
}
void output1_1(){
digitalWrite(27,1);
digitalWrite(14,0);
}
void output2_1(){
digitalWrite(14,1);
digitalWrite(27,0);
}
void output3_1(){
digitalWrite(12,1);
digitalWrite(13,0);
}
void output4_1(){
digitalWrite(13,1);
digitalWrite(12,0);
}
BLYNK_WRITE(V2)
{
int value = param.asInt(); // Get value as integer
Serial.println("Going Forward");
if(value)
{
Robot_Forward();
}
}
BLYNK_WRITE(V3)
{
int value = param.asInt(); // Get value as integer
Serial.println("Moving Right");
if(value)
{
Robot_Right();
delay(200);
Robot_Stop();
}
}
BLYNK_WRITE(V4)
{
int value = param.asInt(); // Get value as integer
Serial.println("Going back");
if(value)
{
Robot_Backward();
}
}
BLYNK_WRITE(V5)
{
int value = param.asInt(); // Get value as integer
Serial.println("Taking Left");
if(value)
{
Robot_Left();
delay(200);
Robot_Stop();
}
}
BLYNK_WRITE(V6)
{
int value = param.asInt(); // Get value as integer
Serial.println("Braking!!");
if(value)
{
Robot_Stop();
}
}
BLYNK_WRITE(V7)
{
int value = param.asInt(); // Get value as integer
Serial.println("lower_joint_forward");
if(value==1)
{
lower_joint_forward();
}
}
BLYNK_WRITE(V8)
{
int value = param.asInt(); // Get value as integer
Serial.println("lower_joint_backward");
if(value)
{
lower_joint_backward();
}
}
BLYNK_WRITE(V9)
{
int value = param.asInt(); // Get value as integer
Serial.println("upper_joint_forward");
if(value)
{
upper_joint_forward();
}
}
BLYNK_WRITE(V10)
{
int value = param.asInt(); // Get value as integer
Serial.println("upper_joint_backward");
if(value)
{
upper_joint_backward();
}
}
BLYNK_WRITE(V11)
{
int value = param.asInt(); // Get value as integer
Serial.println("output1_1");
if(value)
{
output1_1();
}
}
BLYNK_WRITE(V12)
{
int value = param.asInt(); // Get value as integer
Serial.println("output2_1");
if(value)
{
output2_1();
}
}
BLYNK_WRITE(V13)
{
int value = param.asInt(); // Get value as integer
Serial.println("output3_1");
if(value)
{
output3_1();
}
}
BLYNK_WRITE(V14)
{
int value = param.asInt(); // Get value as integer
Serial.println("output4_1");
if(value)
{
output4_1();
}
}
BLYNK_WRITE(V15)
{
int value = param.asInt(); // Get value as integer
Serial.println("BUZZER IS ON");
if(value)
{
digitalWrite(4,1);
}
}