Need help on my project

hi friend…i make 1 project to measure air flow sensor for my air conditioner. i use arduino uno and IR sensor + fan for air flow sensor ( i use RPM count to measure air flow ) and i use interrupter function to count rmp.
this project work fine. now i try upgrade this project with ADD blynk virtual LED , when i add blynk function this project not work…pls help this beginner hahaha…

here i attach my coding ( working coding first ).

// wiring : IR sensor =D2
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);  // 0x27 or 39 or 0x3F

//RPM--------------------------------------------------------------
//Configuration for the Tachometer variables
const int sensorPin = 2;
const int sensorInterrupt = 0;
volatile unsigned long lastPulseTime;
volatile unsigned long interval = 0;
//volatile int timeoutCounter;

int rpm;
int rpmlast = 3000;
int led1 = 6;
int led2 = 7;
int led3 = 8;
int led4 = 9;
int led5 = 10;
int led6 = 11;
int led7 = 12;



void setup()
{  
   Serial.begin(9600);
    pinMode(sensorPin, INPUT);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(led7, OUTPUT);
    
  attachInterrupt(sensorInterrupt, &sensorIsr, RISING);  //Isr = interrupt service routine
  lastPulseTime = 0;
  // sets the LCD's rows and colums:
  lcd.init();
  lcd.backlight();            
  lcd.begin(16, 2); 
  //lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("arduino RPM:");
  delay(1000);
  lcd.clear();

  digitalWrite(led1,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
} 
  
void loop()
{
  if(rpm >= 0) {  //Remove the error readings of minus values   
    
    //Let's keep this RPM value under control, between 0 and 9999
    rpm = constrain (rpm, 0, 9999); // make sure value on this range
  
    
   if ((micros() - lastPulseTime) < 5e6 ) {  // micro()= is time since arduino start running program
      rpm = rpm;
    }
   Serial.println(rpm);  
  if(rpm >=499 && rpm<=500){
    digitalWrite(led1,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    
  }
 if(rpm >=500 && rpm<=1000){
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    
 }
    if(rpm >=1000 && rpm<=1500){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=2500 && rpm<=3000){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=3500 && rpm<=4000 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4000 && rpm<=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,HIGH);
 }
 else {
   
      rpm =rpm;
    }
  }  

   
 // printRPM();
  Serial.println(rpm);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("___TACHOMETER___");
lcd.setCursor(0,1);
lcd.print(     rpm);
lcd.print(" RPM");
lcd.print("   ");
  delay(500);
}

void sensorIsr() {
  unsigned long now = micros();
  interval = now - lastPulseTime;
  if (interval > 5000){
     rpm = 61000000UL/(interval * 2);
     lastPulseTime = now;
  }
}

hi,

you have to provide the code for blynk, else we can’t help you :wink:

yes…here code i add with blnyk fucntion but not work haha…

// wiring : IR sensor =D2
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
LiquidCrystal_I2C lcd(0x3F,16,2);  // 0x27 or 39 or 0x3F
char auth[] = "xxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxx";
char pass[] = "xxx";
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);

//RPM--------------------------------------------------------------
//Configuration for the Tachometer variables
const int sensorPin = 2;
const int sensorInterrupt = 0;
volatile unsigned long lastPulseTime;
volatile unsigned long interval = 0;
//volatile int timeoutCounter;

int rpm;
int rpmlast = 3000;
int led1a = 6;
int led2 = 7;
int led3 = 8;
int led4 = 9;
int led5 = 10;
int led6 = 11;
int led7 = 12;

void setup()
{  
   Serial.begin(9600);
   
    pinMode(sensorPin, INPUT);
    pinMode(led1a, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(led7, OUTPUT);


   EspSerial.begin(ESP8266_BAUD);
  delay(10);
 Blynk.begin(auth, wifi, ssid, pass);
    
  attachInterrupt(sensorInterrupt, &sensorIsr, RISING);  //Isr = interrupt service routine
  lastPulseTime = 0;
  // sets the LCD's rows and colums:
  lcd.init();
  lcd.backlight();            
  lcd.begin(16, 2); 
  //lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("arduino RPM:");
  delay(1000);
  lcd.clear();

  digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
   
} 
  
void loop()
{
 Blynk.run();   
  if(rpm >= 0) {  //Remove the error readings of minus values   
    
    //Let's keep this RPM value under control, between 0 and 9999
    rpm = constrain (rpm, 0, 9999); // make sure value on this range
  
    if ((micros() - lastPulseTime) < 5e6 ) {  // micro()= is time since arduino start running program
      rpm = rpm;
    }
   Serial.println(rpm);  
  if(rpm >=499 && rpm<=500){
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    led1.on(); // turn on V1
  }
 if(rpm >=500 && rpm<=1000){
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    
 }
    if(rpm >=1000 && rpm<=1500){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=2500 && rpm<=3000){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=3500 && rpm<=4000 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4000 && rpm<=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,HIGH);
 }
 else {
   
      rpm =rpm;
      led1.off(); // turn off V1
    }
  
  }  

   
 // printRPM();
  Serial.println(rpm);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("___TACHOMETER___");
lcd.setCursor(0,1);
lcd.print(     rpm);
lcd.print(" RPM");
lcd.print("   ");
  delay(500);
}

void sensorIsr() {
  unsigned long now = micros();
  interval = now - lastPulseTime;
  if (interval > 5000){
     rpm = 61000000UL/(interval * 2);
     lastPulseTime = now;
  }
}

will be somthing like that


/***************** widget declaration *********************/
WidgetLED led1(Vx); // where Vx is the virtual pin
WidgetLED led2(Vx);
WidgetLED led3(Vx);
WidgetLED led4(Vx);
WidgetLED led5(Vx);
WidgetLED led6(Vx);
WidgetLED led7(Vx);
.
.
.
..
 if(rpm >=499 && rpm<=500){
    led1.on();
    led2.off();
    led3.off();
   ....
  
    
  }

yes…widgetled i just put 1 for testing only…
the problem is, when i add blynk function my working coding not work…no RPM reading and it’s look like arduino interrupt function not working…

@awegadget

please show us the code, I think you are flooding blynk with your loop !!
you have to use timers, and remove all code in the loop.
loop should be like this, no more code in the loop

void loop() {
  Blynk.run();
  timer.run();
  }

@awegadget

void setup()
{  
.
.
.
.
timer.setInterval(10000L, PulseLevel); // every 10 seconds you can change that
}

void(PulseLevel){
 if(rpm >= 0) {  //Remove the error readings of minus values   
    
    //Let's keep this RPM value under control, between 0 and 9999
    rpm = constrain (rpm, 0, 9999); // make sure value on this range
  
    if ((micros() - lastPulseTime) < 5e6 ) {  // micro()= is time since arduino start running program
      rpm = rpm;
    }
   Serial.println(rpm);  
  if(rpm >=499 && rpm<=500){
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    led1.on(); // turn on V1
  }
 if(rpm >=500 && rpm<=1000){
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    
 }
    if(rpm >=1000 && rpm<=1500){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=2500 && rpm<=3000){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=3500 && rpm<=4000 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4000 && rpm<=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,HIGH);
 }
 else {
   
      rpm =rpm;
      led1.off(); // turn off V1
    }
  
  }  
}

ooo…i not use timer…let me try remove code form loop and follow your way…thanks bro…

2 Likes

you are welcome:wink:

hi friend…i try to remove all code from loop but it come out 1 error…
a function- definition is not allowed here before ‘{’ token

here my code:

// wiring : IR sensor =D2
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
LiquidCrystal_I2C lcd(0x3F,16,2);  // 0x27 or 39 or 0x3F
char auth[] = "xxxxxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxx";
char pass[] = "xxxx";
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

WidgetLED led1(V1);
BlynkTimer timer;

//RPM--------------------------------------------------------------
//Configuration for the Tachometer variables
const int sensorPin = 2;
const int sensorInterrupt = 0;
volatile unsigned long lastPulseTime;
volatile unsigned long interval = 0;
//volatile int timeoutCounter;

int rpm;
int rpmlast = 3000;
int led1a = 6;
int led2 = 7;
int led3 = 8;
int led4 = 9;
int led5 = 10;
int led6 = 11;
int led7 = 12;

void PulseLevel()
{
 if(rpm >= 0) {  //Remove the error readings of minus values   
    
    //Let's keep this RPM value under control, between 0 and 9999
    rpm = constrain (rpm, 0, 9999); // make sure value on this range
  
    
   if ((micros() - lastPulseTime) < 5e6 ) {  // micro()= is time since arduino start running program
      rpm = rpm;
    }
 }
   Serial.println(rpm);  
  if(rpm >=499 && rpm<=500){
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    led1.on();
  }
 if(rpm >=500 && rpm<=1000){
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    
 }
    if(rpm >=1000 && rpm<=1500){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=2500 && rpm<=3000){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=3500 && rpm<=4000 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4000 && rpm<=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,LOW);
 }
 if(rpm >=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1a,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,HIGH);
 }
 else {
   
      rpm =rpm;
      led1.off();
    }
    
void sensorIsr() 
{
  unsigned long now = micros();
  interval = now - lastPulseTime;
  if (interval > 5000) //{
     rpm = 61000000UL/(interval * 2);
     lastPulseTime = now;
  }  

void setup()
{  
   Serial.begin(9600);
   
   


  EspSerial.begin(ESP8266_BAUD);
  delay(10);

 Blynk.begin(auth, wifi, ssid, pass);
    
  attachInterrupt(sensorInterrupt, &sensorIsr, RISING);  //Isr = interrupt service routine
  lastPulseTime = 0;
 
 pinMode(sensorPin, INPUT);
    pinMode(led1a, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(led7, OUTPUT);
    
    digitalWrite(led1a,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);

timer.setInterval(10000L, PulseLevel); // every 10 seconds you can change that   
} 
   
void loop()
{
  Blynk.run();
  timer.run();
}

Programming 101… watch your syntax and count your brackets. Looks like you are missing a closing bracket in this function :stuck_out_tongue_winking_eye:

1 Like

hahaha…to many time i check and check still not found hahaha…let me finish my cappuccino first hahaha…

The IDE will highlight what it thinks is the “closing” bracket when you click on the “start” bracket… you can use this to count your way through to make sure each start has a proper close.

image

yes i notice that…it come 1 pair… but this one hahahaha…need more cappuccino hahaha…

yes…done hahaha…solve problem “}” hahaha…but coding not test yet…thanks all friends…

hi friend…my coding not work huhuhu…blynk app connected ( online ) but not data receive from arduino…LED 1 to 7 also not work…

// wiring : IR sensor =D2

#define BLYNK_PRINT Serial
#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
char auth[] = "xxxxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxx";
char pass[] = "xxxx";
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(4, 5); // RX, TX

// Your ESP8266 baud rate:
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);

WidgetLED ledv1(V1);
WidgetLED ledv2(V2);
WidgetLED ledv3(V3);
WidgetLED ledv4(V4);
WidgetLED ledv5(V5);
WidgetLED ledv6(V6);
WidgetLED ledv7(V7);

BlynkTimer timer;

//RPM--------------------------------------------------------------
//Configuration for the Tachometer variables
const int sensorPin = 2;
const int sensorInterrupt = 0;
volatile unsigned long lastPulseTime;
volatile unsigned long interval = 0;
//volatile int timeoutCounter;

int rpm;
int rpmlast = 3000;
int led1 = 6;
int led2 = 7;
int led3 = 8;
int led4 = 9;
int led5 = 10;
int led6 = 11;
int led7 = 12;

void PulseLevel()
{
 if(rpm >= 0) {  //Remove the error readings of minus values   
    
    //Let's keep this RPM value under control, between 0 and 9999
    rpm = constrain (rpm, 0, 9999); // make sure value on this range
  
    
   if ((micros() - lastPulseTime) < 5e6 ) {  // micro()= is time since arduino start running program
      rpm = rpm;
    }
 

   Serial.println(rpm);  
  if(rpm >=499 && rpm<=500){
    digitalWrite(led1,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    ledv1.on();
    ledv2.off();
    ledv3.off();
    ledv4.off();
    ledv5.off();
    ledv6.off();
    ledv7.off();
  }
 if(rpm >=500 && rpm<=1000){
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    ledv1.on();
    ledv2.on();
    ledv3.off();
    ledv4.off();
    ledv5.off();
    ledv6.off();
    ledv7.off();
    
 }
    if(rpm >=1000 && rpm<=1500){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    ledv1.on();
    ledv2.on();
    ledv3.on();
    ledv4.off();
    ledv5.off();
    ledv6.off();
    ledv7.off();
 }
 if(rpm >=2500 && rpm<=3000){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    ledv1.on();
    ledv2.on();
    ledv3.on();
    ledv4.on();
    ledv5.off();
    ledv6.off();
    ledv7.off();
 }
 if(rpm >=3500 && rpm<=4000 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);
    ledv1.on();
    ledv2.on();
    ledv3.on();
    ledv4.on();
    ledv5.on();
    ledv6.off();
    ledv7.off();
 }
 if(rpm >=4000 && rpm<=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,LOW);
    ledv1.on();
    ledv2.on();
    ledv3.on();
    ledv4.on();
    ledv5.on();
    ledv6.on();
    ledv7.off();
 }
 if(rpm >=4700 ){
    digitalWrite(led3,HIGH);
    digitalWrite(led2,HIGH);
    digitalWrite(led1,HIGH);
    digitalWrite(led4,HIGH);
    digitalWrite(led5,HIGH);
    digitalWrite(led6,HIGH);
    digitalWrite(led7,HIGH);
    ledv1.on();
    ledv2.on();
    ledv3.on();
    ledv4.on();
    ledv5.on();
    ledv6.on();
    ledv7.on();
 }
 else {
   
      rpm =rpm;
    ledv1.off();
    ledv2.off();
    ledv3.off();
    ledv4.off();
    ledv5.off();
    ledv6.off();
    ledv7.off();
      
    }
}
}
    
void sensorIsr() 
{
  unsigned long now = micros();
  interval = now - lastPulseTime;
  if (interval > 5000) //{
     rpm = 61000000UL/(interval * 2);
     lastPulseTime = now;
  }  

void setup()
{  
 Serial.begin(9600);
 EspSerial.begin(ESP8266_BAUD);
 delay(10);
 Blynk.begin(auth, wifi, ssid, pass); 
    
 attachInterrupt(sensorInterrupt, &sensorIsr, RISING);  //Isr = interrupt service routine
 lastPulseTime = 0;
  
    pinMode(sensorPin, INPUT);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    pinMode(led5, OUTPUT);
    pinMode(led6, OUTPUT);
    pinMode(led7, OUTPUT);
    
    digitalWrite(led1,HIGH);
    digitalWrite(led3,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led4,LOW);
    digitalWrite(led5,LOW);
    digitalWrite(led6,LOW);
    digitalWrite(led7,LOW);

//timer.setInterval(10000L, PulseLevel); // every 10 seconds you can change that  
timer.setInterval(300L, PulseLevel); // every 1 seconds you can change that  
} 
   
void loop()
{
  Blynk.run();
  timer.run();
}

I’m not really clear about the logic of your code.
Shouldn’t the function that’s triggered by the interrupt be keeping a count of how many interruptions occur. Every so often (say once a second) you could see what the interrupt count is, then reset it to zero.
You’ll then know what the number of pulses was for that second, and be able to calculate revs per minute from that.

Pete.