Controllo bottone e esecuzione programma con Blynk

Buongiorno,

chiedo aiuto per un programma che sto creando per il sistema di controllo dell'air ride della mia auto.

praticamente vorrei tramite un sensore analogico di pressione controllare le sospensioni e nel momento in cui premo il pulsante di Blynk mi deve eseguire un controllo del sensore, se ha una pressione inferiore eseguire il relè che comanda il solenoide di pompaggio e se invece ha una pressione superiore eseguire il relè che comanda il solenoide di sgonfiaggio altrimenti se la pressione è uguale a un determinato valore non fare nulla.

ora tutto questo non riesco a farlo tramite l'applicazione blynk perchè devo scrivere il BLYNK_WRITE su void setup e non su void loop... quindi non esegue questo programma...

sapete aiutarmi?

//**{PRESSURE}**//
const int ROADF = 70;
const int ROADR = 50;
const int FULL = 70;
const int EMPTY = 45;
//***************//

#include <Wire.h>
#include <LiquidCrystal.h>
#include <Fishino.h>
#include <SPI.h>
#include <BlynkSimpleFishino.h>
#include "Adafruit_MCP23017.h"

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "wlan-ap";
char pass[] = "xxxxxxxxxxxxxxx";

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Adafruit_MCP23017 mcp;

float mapFloat(float x, float in_min, float in_max, float out_min, float out_max) {
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
float volts1, psi1, volts2, psi2, volts3, psi3, volts4, psi4, volts5, psi5;

int FH = 0;
int FL = 1;
int RH = 2;
int RL = 3;
int TANK = 4;

int psiForLCD1;
int psiForLCD2;
int psiForLCD3;
int pinValue;
int pinValue1;
int pinValue2;

int lcd_key     = 0;
int adc_key_in  = 0;
#define ALTO     0
#define ALZA     1
#define ABBASSA  2
#define BASSO    3
#define ULTRALOW 4
#define btnNONE  5

int read_LCD_buttons() {
  adc_key_in = analogRead(0);      // read the value from the sensor

  if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
  if (adc_key_in < 60)   return ALTO;
  if (adc_key_in < 200)  return ALZA;
  if (adc_key_in < 400)  return ABBASSA;
  if (adc_key_in < 600)  return BASSO;
  if (adc_key_in < 800)  return ULTRALOW;

  return btnNONE;  // when all others fail, return this...
}

void setup() {

  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.setCursor(5, 0);
  lcd.print("AVVIO");
  lcd.setCursor(3, 1);
  lcd.print("AIR.LEVEL");
  delay(3000);
  lcd.clear();
  mcp.begin(0x27);
  mcp.pinMode(FH, OUTPUT);
  mcp.pinMode(FL, OUTPUT);
  mcp.pinMode(RH, OUTPUT);
  mcp.pinMode(RL, OUTPUT);
  mcp.pinMode(TANK, OUTPUT);
  mcp.digitalWrite(FH, LOW);
  mcp.digitalWrite(FL, LOW);
  mcp.digitalWrite(RH, LOW);
  mcp.digitalWrite(RL, LOW);
  mcp.digitalWrite(TANK, LOW);

  Blynk.begin(auth, ssid, pass);

}

BLYNK_WRITE(V3) {
  if (param.asInt()) {
    mcp.digitalWrite(FH, HIGH);

  } else {
    mcp.digitalWrite(FH, LOW);
  }
}

BLYNK_WRITE(V4) {
  if (param.asInt()) {
    mcp.digitalWrite(FL, HIGH);

  } else {
    mcp.digitalWrite(FL, LOW);
  }
}

BLYNK_WRITE(V5) {
  if (param.asInt()) {
    mcp.digitalWrite(RH, HIGH);

  } else {
    mcp.digitalWrite(RH, LOW);
  }
}

BLYNK_WRITE(V6) {
  if (param.asInt()) {
    mcp.digitalWrite(RL, HIGH);

  } else {
    mcp.digitalWrite(RL, LOW);
  }
}

BLYNK_WRITE(V1) {
}

BLYNK_WRITE(V7)
{
  pinValue = param.asInt();
}

BLYNK_WRITE(V8)
{
  pinValue1 = param.asInt();
}

BLYNK_WRITE(V9)
{
  pinValue2 = param.asInt();
}

void loop() {

  Blynk.run();

  if (psiForLCD3 < EMPTY) {
    mcp.digitalWrite(TANK, HIGH);
  } else if (psiForLCD3 >= FULL) {
    mcp.digitalWrite(TANK, LOW);
  }

//Manca il tasto di selezione su blynk
  if (psiForLCD1 < ROADF) {
    mcp.digitalWrite(FH, HIGH);
    mcp.digitalWrite(FL, LOW);
  } else if (psiForLCD1 > ROADF) {
    mcp.digitalWrite(FH, LOW);
    mcp.digitalWrite(FL, HIGH);
  } else if (psiForLCD1 == ROADF) {
    mcp.digitalWrite(FL, LOW);
    mcp.digitalWrite(FH, LOW);
  }

//Manca il tasto di selezione su Blynk
    if (psiForLCD2 < ROADR) {
    mcp.digitalWrite(RH, HIGH);
    mcp.digitalWrite(RL, LOW);
  } else if (psiForLCD2 > ROADR) {
    mcp.digitalWrite(RH, LOW);
    mcp.digitalWrite(RL, HIGH);
  } else if (psiForLCD2 == ROADR) {
    mcp.digitalWrite(RL, LOW);
    mcp.digitalWrite(RH, LOW);
  }

  //Displaying Values to LCD
  int reading1 = pinValue;
  int reading2 = pinValue1;
  int reading3 = pinValue2;

  volts1 = mapFloat(reading1, 0, 1023, 0, 5);
  psi1 = mapFloat(volts1, 0.42, 4.5, 0, 200);
  volts2 = mapFloat(reading2, 0, 1023, 0, 5);
  psi2 = mapFloat(volts2, 0.42, 4.5, 0, 200);
  volts3 = mapFloat(reading3, 0, 1023, 0, 5);
  psi3 = mapFloat(volts3, 0.42, 4.5, 0, 100);

  psiForLCD1 = psi1;
  psiForLCD2 = psi2;
  psiForLCD3 = psi3;

  lcd.setCursor(0, 0);
  lcd.print("FRONT");
  lcd.setCursor(6, 0);
  lcd.print(psiForLCD1);
  lcd.setCursor(0, 1);
  lcd.print("REAR");
  lcd.setCursor(6, 1);
  lcd.print(psiForLCD2);
  lcd.setCursor(12, 0);
  lcd.print("TANK");
  lcd.setCursor(12, 1);
  lcd.print(psiForLCD3);
  delay(300);
  lcd.clear();

}

--- magari se eviti di mettere in chiaro le tue chiavi Blynk e la password della tua rete è meglio :wink:
Ho corretto io - gpb01

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

gpb01:
Buonasera,
essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

si scusami, ho cercato la sezione presentazioni... non trovandola ho iniziato a scrivere