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;
}
}