Need help with Siri + iOS shortcuts

Topic split by moderator

9 posts were merged into an existing topic: Siri+iOS Shortcuts+Blynk

when I give siri a command I see the slider in my blynk app shifting yet the signal does not go through to my Arduino. If I move the slider manually in the app, it works fine. Does anyone have an idea?

Experiment with Blynk.syncVirtual(V6); it can cause endless loops that will disconnect you. But used right should solve your problem.

thanks for your comment, I added Blynk.syncVirtual(V1) to test what happenes. It makes no difference so far, but that could of course be entirely my fault. When Siri executes the command I see the slider go in Blynk on my phone. But the value in the Arduino does not change. If I operate the slider in Blynk on my phone by hand, the value will arrive at the Arduino.

#include <Servo.h>
  Servo servoHoofd;
  Servo servoVork;  

#define BLYNK_PRINT Serial
#include <BlynkSimpleSerialBLE.h>
// You should get Auth Token in the Blynk App.
char auth[] = "E0UDsJgvEqtyx5BobKiotJo7v5rtDS-F";


#include <TFT_ST7735.h> // Graphics and font library for ST7735 driver chip
#include <SPI.h>

TFT_ST7735 tft = TFT_ST7735();  // Invoke library, pins defined in User_Setup.h

// Include the header files that contain the icons
#include "BangB.h"
#include "BangBS.h"
#include "BangO.h"
#include "Boos3.h"
#include "Droevig.h"
#include "Slaap.h"
#include "Oog.h"
int face = 2;
int Hoofd = 0;
int Vork = 90;


BLYNK_WRITE(V1)
{
 int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
 face = pinValue;
 Blynk.syncVirtual(V1);
}
BLYNK_WRITE(V2)
{
 int pinValue1 = param.asInt(); // assigning incoming value from pin V1 to a variable
 Hoofd = pinValue1;
}
BLYNK_WRITE(V3)
{
 int pinValue2 = param.asInt(); // assigning incoming value from pin V1 to a variable
 Vork = pinValue2;
}



int geluidSensorlinks = A14;
int geluidSensorrechts = A15;
int edgeSensorlinksvoor = 22;
int edgeSensorrechtsvoor = 23;
int edgeSensorlinksachter = 24;
int edgeSensorrechtsachter = 25;
//int servoHoofd = 4;
int triggerUltrasoonsensor = 6;
int echoUltrasoonsensor = 7;
//int servoVork = 5;
int snelheidMotorlinks = 8;
int vooruitMotorlinks = 9;
int achteruitMotorlinks = 10;
int snelheidMotorrechts = 11;
int vooruitMotorrechts = 12;
int achteruitMotorrechts = 13;
int bewegingsmelderHoofd = 26;
int encoderMotorlinks = 27;
int encoderMotorrechts = 28;
// Display LED 3.3V - Zwart +3.3V
// Display SCK - Bruin = 52 (SPI)SCK
// Display SDA - Rood = 51 (SPI)MOS1
// Display DC/A0 - Oranje = 3 PWM
// Display Reset - Geel = 49
// Display CS - Groen = 53 (SPI) ss
// Display GND - Blauw - 0V
// Display VCC - Paars + 5V
// SD kaart CS - Groen = 2 PWM
// SD kaart MOS1 - Zwart = 51 (SPI)MOS1
// SD kaart MIS0 - Rood = 50 (SPI)MIS0
// SD kaart SCK - Wit = 52 (SPI)SCK
//int rstDisplay = 49;
//int AODisplay = 48;
int sensorTemp = 30;
// Bleutooth Tx = 0 (Rx0)
// Bleutooth Rx = 1 (Tx0)

void setup()
{
  

  //Serial.begin(115200);
  tft.init();
  tft.setRotation(1);	// landscape
  tft.fillScreen(TFT_RED);

  Serial2.begin(9600);  // Use to connect to HM10 via pins 16 & 17
  Blynk.begin(Serial2, auth);

  servoHoofd.attach(4);
  servoVork.attach(5);

}


void loop()
{
  servoHoofd.write(Hoofd);
  servoVork.write(Vork);

//Gewoon
 if (face == 1)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
 }

//Gewoon rechts
 if (face == 2)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 40, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    face = 0;
 }

 //Gewoon links
 if (face == 3)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 40, OogWidth, OogHeight); 
    face = 0;
 }
  
//Bang1
 if (face == 4)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
 }
//Bang2
 if (face == 5)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
 }

 //Boos3
   if (face == 6)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Boos3, (tft.width() - Boos3Width)/2 -55,      (tft.height() - Boos3Height)/2 -1, Boos3Width, Boos3Height);
    face = 0;
 }

  //Droevig
   if (face == 7)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Droevig, (tft.width() - DroevigWidth)/2 -55,      (tft.height() - DroevigHeight)/2 -2, DroevigWidth, DroevigHeight);
    face = 0;
 }

  //Slaap
   if (face == 8)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Slaap, (tft.width() - SlaapWidth)/2 -57,      (tft.height() - SlaapHeight)/2 -2, SlaapWidth, SlaapHeight);
    face = 0;
 }
 Blynk.run();
}

//====================================================================================
// This is the function to draw the icon stored as an array in program memory (FLASH)
//====================================================================================

// To speed up rendering we use a 64 pixel buffer
#define BUFF_SIZE 64

// Draw array "icon" of defined width and height at coordinate x,y
// Maximum icon size is 255x255 pixels to avoid integer overflow

void drawIcon(const unsigned short* icon, int16_t x, int16_t y, int8_t width, int8_t height) 
{
  uint16_t  pix_buffer[BUFF_SIZE];   // Pixel buffer (16 bits per pixel)

  // Set up a window the right size to stream pixels into
  tft.setAddrWindow(x, y, x + width - 1, y + height - 1);

  // Work out the number whole buffers to send
  uint16_t nb = ((uint16_t)height * width) / BUFF_SIZE;

  // Fill and send "nb" buffers to TFT
  for (int i = 0; i < nb; i++) {
    for (int j = 0; j < BUFF_SIZE; j++) {
      pix_buffer[j] = pgm_read_word(&icon[i * BUFF_SIZE + j]);
    }
    tft.pushColors(pix_buffer, BUFF_SIZE);
  }

  // Work out number of pixels not yet sent
  uint16_t np = ((uint16_t)height * width) % BUFF_SIZE;

  // Send any partial buffer left over
  if (np) {
    for (int i = 0; i < np; i++) pix_buffer[i] = pgm_read_word(&icon[nb * BUFF_SIZE + i]);
    tft.pushColors(pix_buffer, np);
  }
}

@JeroenKeetels please edit your post, using the pencil icon at the bottom, and add triple backticks at the beginning and end of your code so that it displays correctly.
Triple backticks look like this:
```

Pete.

Thanks for the reply, I changed it.

@JeroenKeetels you should read this…

It seems that you ought to have your if statements in a separate function and call that function from your BLYNK_WRITE functions.

Pete.

Hello Pete,

I have read the description and adjusted everything as described. Unfortunately, the operation remains the same it seems that the information from the phone is only sent to the Arduino when the touchscreen is touched.
Will it help if I make and post a small movie?

Probably not.

It would be more useful if you posted your code, and at the time to explain what widgets you have set-up, which virtual pins you have attached these to, the IP address of the Blynk server that contains your project and how you have configured the Siri web request.

Adding some serial print statements into your BLYNK_WRITE callbacks would probably also be helpful to help you to diagnose what is happening.

Pete.

First of all, thank you for taking the time to help me, it really means a lot to me.

I have set up a Bluetooth connection between the phone and Arduino by means of an HM-10 module.

To test I started with three sliders. All three send a number that I use in the Arduino for different purposes.
V1 I want to use to show different facial expressions on the display.
V2 I want to use to tilt the head forward or backward.
V3 I want to use to tilt the fork up or down.

I set the slider as shown below

The assignment I created looks like this.

Below is the code with the modifications you suggested to me. The same thing is still happening, but there is now a delay.


#include <Servo.h>
  Servo servoHoofd;
  Servo servoVork;  

#define BLYNK_PRINT Serial
#include <BlynkSimpleSerialBLE.h>
// You should get Auth Token in the Blynk App.
char auth[] = "E0UDsJgvEqtyx5BobKiotJo7v5rtDS-F";


#include <TFT_ST7735.h> // Graphics and font library for ST7735 driver chip
#include <SPI.h>

TFT_ST7735 tft = TFT_ST7735();  // Invoke library, pins defined in User_Setup.h

// Include the header files that contain the icons
#include "BangB.h"
#include "BangBS.h"
#include "BangO.h"
#include "Boos3.h"
#include "Droevig.h"
#include "Slaap.h"
#include "Oog.h"
int face = 2;
int Hoofd = 0;
int Vork = 90;
BlynkTimer timer; // Announcing the timer

BLYNK_WRITE(V1)
{
 int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
 face = pinValue;
 Blynk.syncVirtual(V1);
}
BLYNK_WRITE(V2)
{
 int pinValue1 = param.asInt(); // assigning incoming value from pin V1 to a variable
 Hoofd = pinValue1;
}
BLYNK_WRITE(V3)
{
 int pinValue2 = param.asInt(); // assigning incoming value from pin V1 to a variable
 Vork = pinValue2;
}



int geluidSensorlinks = A14;
int geluidSensorrechts = A15;
int edgeSensorlinksvoor = 22;
int edgeSensorrechtsvoor = 23;
int edgeSensorlinksachter = 24;
int edgeSensorrechtsachter = 25;
//int servoHoofd = 4;
int triggerUltrasoonsensor = 6;
int echoUltrasoonsensor = 7;
//int servoVork = 5;
int snelheidMotorlinks = 8;
int vooruitMotorlinks = 9;
int achteruitMotorlinks = 10;
int snelheidMotorrechts = 11;
int vooruitMotorrechts = 12;
int achteruitMotorrechts = 13;
int bewegingsmelderHoofd = 26;
int encoderMotorlinks = 27;
int encoderMotorrechts = 28;
// Display LED 3.3V - Zwart +3.3V
// Display SCK - Bruin = 52 (SPI)SCK
// Display SDA - Rood = 51 (SPI)MOS1
// Display DC/A0 - Oranje = 3 PWM
// Display Reset - Geel = 49
// Display CS - Groen = 53 (SPI) ss
// Display GND - Blauw - 0V
// Display VCC - Paars + 5V
// SD kaart CS - Groen = 2 PWM
// SD kaart MOS1 - Zwart = 51 (SPI)MOS1
// SD kaart MIS0 - Rood = 50 (SPI)MIS0
// SD kaart SCK - Wit = 52 (SPI)SCK
//int rstDisplay = 49;
//int AODisplay = 48;
int sensorTemp = 30;
// Bleutooth Tx = 0 (Rx0)
// Bleutooth Rx = 1 (Tx0)

void setup()
{
  

  //Serial.begin(115200);
  tft.init();
  tft.setRotation(1);	// landscape
  tft.fillScreen(TFT_RED);

  Serial2.begin(9600);  // Use to connect to HM10 via pins 16 & 17
  Blynk.begin(Serial2, auth);

  servoHoofd.attach(4);
  servoVork.attach(5);
  timer.setInterval(1000L, sensorDataSend); //timer will run every sec 

}

  

//void loop()
void sensorDataSend()
{
  servoHoofd.write(Hoofd);
  servoVork.write(Vork);

//Gewoon
 if (face == 1)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

//Gewoon rechts
 if (face == 2)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 40, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

 //Gewoon links
 if (face == 3)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 40, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }
  
//Bang1
 if (face == 4)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }
//Bang2
 if (face == 5)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

 //Boos3
   if (face == 6)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Boos3, (tft.width() - Boos3Width)/2 -55,      (tft.height() - Boos3Height)/2 -1, Boos3Width, Boos3Height);
    face = 0;
    //pinValue = 0;
 }

  //Droevig
   if (face == 7)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Droevig, (tft.width() - DroevigWidth)/2 -55,      (tft.height() - DroevigHeight)/2 -2, DroevigWidth, DroevigHeight);
    face = 0;
    //pinValue = 0;
 }

  //Slaap
   if (face == 8)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Slaap, (tft.width() - SlaapWidth)/2 -57,      (tft.height() - SlaapHeight)/2 -2, SlaapWidth, SlaapHeight);
    face = 0;
    //pinValue = 0;
 }
 //Blynk.run();
}

void loop()
{
 Blynk.run();     // run Blynk magic
 timer.run();     // run timer every second
}

//====================================================================================
// This is the function to draw the icon stored as an array in program memory (FLASH)
//====================================================================================

// To speed up rendering we use a 64 pixel buffer
#define BUFF_SIZE 64

// Draw array "icon" of defined width and height at coordinate x,y
// Maximum icon size is 255x255 pixels to avoid integer overflow

void drawIcon(const unsigned short* icon, int16_t x, int16_t y, int8_t width, int8_t height) 
{
  uint16_t  pix_buffer[BUFF_SIZE];   // Pixel buffer (16 bits per pixel)

  // Set up a window the right size to stream pixels into
  tft.setAddrWindow(x, y, x + width - 1, y + height - 1);

  // Work out the number whole buffers to send
  uint16_t nb = ((uint16_t)height * width) / BUFF_SIZE;

  // Fill and send "nb" buffers to TFT
  for (int i = 0; i < nb; i++) {
    for (int j = 0; j < BUFF_SIZE; j++) {
      pix_buffer[j] = pgm_read_word(&icon[i * BUFF_SIZE + j]);
    }
    tft.pushColors(pix_buffer, BUFF_SIZE);
  }

  // Work out number of pixels not yet sent
  uint16_t np = ((uint16_t)height * width) % BUFF_SIZE;

  // Send any partial buffer left over
  if (np) {
    for (int i = 0; i < np; i++) pix_buffer[i] = pgm_read_word(&icon[nb * BUFF_SIZE + i]);
    tft.pushColors(pix_buffer, np);
  }
}

The other tabs only show the faces in RAW format.

#include “BangB.h”
#include “BangBS.h”
#include “BangO.h”
#include “Boos3.h”
#include “Droevig.h”
#include “Slaap.h”
#include “Oog.h”

Hopefully you can get a little more out of this. I have already had a lot of obstacles to get to where I am now. The Bluetooth module and the display alone took me a few weeks. But maybe that says more about me :grin: .

But it didn’t fail until you’ve given up.

Not really. I suggested…

but instead you call your new function with a timer.

Also, what is the purpose of this line in your BLYNK_WRITE(V1) function…

Pete.

Sorry, I thought I followed the link you sent me. There they talk about a timer, I copied it to see what happened.

The Blynk.syncVirtual(V1); Was a proposal of daveblynk if he had intended it this way.

If I am very honest I am not sure what you mean. Do you please want to check the code below again to see if you mean this?


#include <Servo.h>
  Servo servoHoofd;
  Servo servoVork;  

#define BLYNK_PRINT Serial
#include <BlynkSimpleSerialBLE.h>
// You should get Auth Token in the Blynk App.
char auth[] = "E0UDsJgvEqtyx5BobKiotJo7v5rtDS-F";


#include <TFT_ST7735.h> // Graphics and font library for ST7735 driver chip
#include <SPI.h>

TFT_ST7735 tft = TFT_ST7735();  // Invoke library, pins defined in User_Setup.h

// Include the header files that contain the icons
#include "BangB.h"
#include "BangBS.h"
#include "BangO.h"
#include "Boos3.h"
#include "Droevig.h"
#include "Slaap.h"
#include "Oog.h"
int face = 2;
int Hoofd = 0;
int Vork = 90;


BLYNK_WRITE(V1)
{
 int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
 face = pinValue;


//Gewoon
 if (face == 1)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

//Gewoon rechts
 if (face == 2)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 40, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

 //Gewoon links
 if (face == 3)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 40, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }
  
//Bang1
 if (face == 4)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }
//Bang2
 if (face == 5)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

 //Boos3
   if (face == 6)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Boos3, (tft.width() - Boos3Width)/2 -55,      (tft.height() - Boos3Height)/2 -1, Boos3Width, Boos3Height);
    face = 0;
    //pinValue = 0;
 }

  //Droevig
   if (face == 7)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Droevig, (tft.width() - DroevigWidth)/2 -55,      (tft.height() - DroevigHeight)/2 -2, DroevigWidth, DroevigHeight);
    face = 0;
    //pinValue = 0;
 }

  //Slaap
   if (face == 8)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Slaap, (tft.width() - SlaapWidth)/2 -57,      (tft.height() - SlaapHeight)/2 -2, SlaapWidth, SlaapHeight);
    face = 0;
    //pinValue = 0;
 }
}

BLYNK_WRITE(V2)
void loop()
{
 Blynk.run();     // run Blynk magic
}

No, I meant more like this:

#include <Servo.h>
  Servo servoHoofd;
  Servo servoVork;  

#define BLYNK_PRINT Serial
#include <BlynkSimpleSerialBLE.h>
// You should get Auth Token in the Blynk App.
char auth[] = "E0UDsJgvEqtyx5BobKiotJo7v5rtDS-F";


#include <TFT_ST7735.h> // Graphics and font library for ST7735 driver chip
#include <SPI.h>

TFT_ST7735 tft = TFT_ST7735();  // Invoke library, pins defined in User_Setup.h

// Include the header files that contain the icons
#include "BangB.h"
#include "BangBS.h"
#include "BangO.h"
#include "Boos3.h"
#include "Droevig.h"
#include "Slaap.h"
#include "Oog.h"
int face = 2;
int Hoofd = 0;
int Vork = 90;
BlynkTimer timer; // Announcing the timer

BLYNK_WRITE(V1)
{
 int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
 face = pinValue;
sensorDataSend();
}
BLYNK_WRITE(V2)
{
 int pinValue1 = param.asInt(); // assigning incoming value from pin V1 to a variable
 Hoofd = pinValue1;
sensorDataSend();
}
BLYNK_WRITE(V3)
{
 int pinValue2 = param.asInt(); // assigning incoming value from pin V1 to a variable
 Vork = pinValue2;
sensorDataSend();
}

int geluidSensorlinks = A14;
int geluidSensorrechts = A15;
int edgeSensorlinksvoor = 22;
int edgeSensorrechtsvoor = 23;
int edgeSensorlinksachter = 24;
int edgeSensorrechtsachter = 25;
//int servoHoofd = 4;
int triggerUltrasoonsensor = 6;
int echoUltrasoonsensor = 7;
//int servoVork = 5;
int snelheidMotorlinks = 8;
int vooruitMotorlinks = 9;
int achteruitMotorlinks = 10;
int snelheidMotorrechts = 11;
int vooruitMotorrechts = 12;
int achteruitMotorrechts = 13;
int bewegingsmelderHoofd = 26;
int encoderMotorlinks = 27;
int encoderMotorrechts = 28;
// Display LED 3.3V - Zwart +3.3V
// Display SCK - Bruin = 52 (SPI)SCK
// Display SDA - Rood = 51 (SPI)MOS1
// Display DC/A0 - Oranje = 3 PWM
// Display Reset - Geel = 49
// Display CS - Groen = 53 (SPI) ss
// Display GND - Blauw - 0V
// Display VCC - Paars + 5V
// SD kaart CS - Groen = 2 PWM
// SD kaart MOS1 - Zwart = 51 (SPI)MOS1
// SD kaart MIS0 - Rood = 50 (SPI)MIS0
// SD kaart SCK - Wit = 52 (SPI)SCK
//int rstDisplay = 49;
//int AODisplay = 48;
int sensorTemp = 30;
// Bleutooth Tx = 0 (Rx0)
// Bleutooth Rx = 1 (Tx0)

void setup()
{
  

  //Serial.begin(115200);
  tft.init();
  tft.setRotation(1);	// landscape
  tft.fillScreen(TFT_RED);

  Serial2.begin(9600);  // Use to connect to HM10 via pins 16 & 17
  Blynk.begin(Serial2, auth);

  servoHoofd.attach(4);
  servoVork.attach(5);
}

void sensorDataSend()
{
  servoHoofd.write(Hoofd);
  servoVork.write(Vork);

//Gewoon
 if (face == 1)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

//Gewoon rechts
 if (face == 2)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 + 40, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

 //Gewoon links
 if (face == 3)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangBS, (tft.width() - BangBSWidth)/2 +73,      (tft.height() - BangBSHeight)/2 -1, BangBSWidth, BangBSHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 ,      (tft.height() - OogHeight)/2 - 40, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }
  
//Bang1
 if (face == 4)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -30,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }
//Bang2
 if (face == 5)
 {
 tft.fillScreen(TFT_WHITE);
    drawIcon(BangB, (tft.width() - BangBWidth)/2 +52,      (tft.height() - BangBHeight)/2 -1, BangBWidth, BangBHeight);   
    drawIcon(BangO, (tft.width() - BangOWidth)/2 -75,      (tft.height() - BangOHeight)/2 -1, BangOWidth, BangOHeight);
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 + 20, OogWidth, OogHeight); 
    drawIcon(Oog, (tft.width() - OogWidth)/2 -1,      (tft.height() - OogHeight)/2 - 20, OogWidth, OogHeight); 
    face = 0;
    //pinValue = 0;
 }

 //Boos3
   if (face == 6)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Boos3, (tft.width() - Boos3Width)/2 -55,      (tft.height() - Boos3Height)/2 -1, Boos3Width, Boos3Height);
    face = 0;
    //pinValue = 0;
 }

  //Droevig
   if (face == 7)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Droevig, (tft.width() - DroevigWidth)/2 -55,      (tft.height() - DroevigHeight)/2 -2, DroevigWidth, DroevigHeight);
    face = 0;
    //pinValue = 0;
 }

  //Slaap
   if (face == 8)
 {
 tft.fillScreen(TFT_RED);   
    drawIcon(Slaap, (tft.width() - SlaapWidth)/2 -57,      (tft.height() - SlaapHeight)/2 -2, SlaapWidth, SlaapHeight);
    face = 0;
    //pinValue = 0;
 }
}

void loop()
{
 Blynk.run();     // run Blynk magic
}

//====================================================================================
// This is the function to draw the icon stored as an array in program memory (FLASH)
//====================================================================================

// To speed up rendering we use a 64 pixel buffer
#define BUFF_SIZE 64

// Draw array "icon" of defined width and height at coordinate x,y
// Maximum icon size is 255x255 pixels to avoid integer overflow

void drawIcon(const unsigned short* icon, int16_t x, int16_t y, int8_t width, int8_t height) 
{
  uint16_t  pix_buffer[BUFF_SIZE];   // Pixel buffer (16 bits per pixel)

  // Set up a window the right size to stream pixels into
  tft.setAddrWindow(x, y, x + width - 1, y + height - 1);

  // Work out the number whole buffers to send
  uint16_t nb = ((uint16_t)height * width) / BUFF_SIZE;

  // Fill and send "nb" buffers to TFT
  for (int i = 0; i < nb; i++) {
    for (int j = 0; j < BUFF_SIZE; j++) {
      pix_buffer[j] = pgm_read_word(&icon[i * BUFF_SIZE + j]);
    }
    tft.pushColors(pix_buffer, BUFF_SIZE);
  }

  // Work out number of pixels not yet sent
  uint16_t np = ((uint16_t)height * width) % BUFF_SIZE;

  // Send any partial buffer left over
  if (np) {
    for (int i = 0; i < np; i++) pix_buffer[i] = pgm_read_word(&icon[nb * BUFF_SIZE + i]);
    tft.pushColors(pix_buffer, np);
  }
}

The problem you have at the moment is that you don’t know if the BLYNK_WRITE(V1) callback is actually being triggered by your Siri shortcut, which is why I said…

However, as you have serial prints disabled you’ll find it difficult to debug the code.

I suspect that ultimately the issue is that you are using Bluetooth rather than WiFi as your connection method.

Pete.

Does anyone know where I can find Write interval in the ios app?