Hello, I’m working with the blynk app to get and push data by using arduino uno and the HC05 bluetooth shield and I don’t know if I can write my code in the void loop. There’s nothing in the loop using blynk but I don’t know if I will have a problem with the timer.
that is my code:
#define BLYNK_PRINT Serial//define função serial do app blynk
#include <Servo.h>//biblioteca do servo
#define SERVO 6 // Porta Digital 6 PWM deve comandar o servo
#include "HX711.h"//biblioteca do amplificador para a célula de carga
HX711 cell(3, 2); //define os pinos de dados da celula em 3 e 2
#include <SoftwareSerial.h>
SoftwareSerial SwSerial(10,11); // RX, TX no hc05
#include <BlynkSimpleSerialBLE.h> //biblioteca de conexão bluetooth do app blynk
#include <SoftwareSerial.h>
char auth[] = "d2ef7c0cb922420fa6dcb46684b3473a"; //chave de autenticação do app blynk
int sensor = 8; //define a pinagem do sensor de obstáculo
int estado=0, massa2; //a variavel estado é utilizada para ler o sensor de obstaculo e a massa2 é uma adequação de massaapp
Servo s; // Variável Servo
long val = 0 ; //variavel intermediária da celula de carga
float a=0;//variavel intermediária da celula de carga
SoftwareSerial SerialBLE(10, 11); // RX, TX no hc05
int massaapp =0; //massa de uma caixa
BLYNK_WRITE(V1)
{
massaapp = param.asInt(); //coloca o valor de V1 enviado pelo app para a variavel massaapp
Serial.print("massa da caixa: ");
Serial.println(massaapp); //exibe o valor enviado pelo app
}
int caixaapp =0; //numero de caixas por fileira
BLYNK_WRITE(V2)
{
caixaapp = param.asInt();
Serial.print("caixas por fileira ");
Serial.println(caixaapp);
}
int fileira=1; //fileira atual
int fileiraapp =0; //numero total de fileiras
BLYNK_WRITE(V3)
{
fileiraapp = param.asInt();
}
int ok=0; //sinalização de que os valores anteriores estão corretos
BLYNK_WRITE(V4)
{
ok = param.asInt();
}
WidgetLED led1(V7);
BlynkTimer timer;
int ledStatus = 0;
#define BLYNK_GREEN "#23C48E"
#define BLYNK_BLUE "#04C0F8"
#define BLYNK_YELLOW "#ED9D00"
#define BLYNK_RED "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"
void blinkLedWidget()
{
if (ledStatus==1) {
led1.setColor(BLYNK_RED);
Serial.println("Motor Ligado - LED vermelho");
}
if (ledStatus==2){
led1.setColor(BLYNK_GREEN);
Serial.println("Mesa descendo - LED verde");
}
if(ledStatus==3){
led1.setColor(BLYNK_BLUE);
Serial.println("Mesa subindo - LED azul");
}
}
void myTimerEvent()
{
val = cell.read();
a=(val/1000-8495)*0.572727272727-18;
Blynk.virtualWrite(V5, a);
Blynk.virtualWrite(V6, fileira);
}
void setup() {
Serial.begin(9600); //inicia a comunicação serial
timer.setInterval(1000L, blinkLedWidget); //seta uma função para ser chamada a cada segundo
timer.setInterval(1000L, myTimerEvent);
SerialBLE.begin(9600); //inicia comunicação bluetooth
Blynk.begin(SerialBLE, auth); //inicia a comunicação com o aplicativo - dependente da chave de autenticação (auth)
Serial.println("Esperando conexão...");
led1.on();
s.attach(SERVO); //altera o nome do servo
s.write(45); //seta posição inicial do servo em 45°
pinMode(sensor, INPUT); //seta a variavel sensor como entrada
}
void loop() {
Blynk.run(); //ativado sempre que há alteração das entradas
timer.run(); // inicia o blynk timer para output
massa2=massaapp-0,1*massaapp; //estabelece erro de -10% na massa estabelecida
if(ok==1){ //inicia o programa apenas se ok for igual a 1
fileiraapp++;
fileira=1;
while(fileira<fileiraapp){ //rotina de descida da mesa
val = cell.read(); //leitura da celula de carga
a=(val/1000-8495)*0.572727272727-18; // adequação de valores para gramas (é necessário readequar caso utilize outra extrutura ou sistema de medição de massa)
while( a < (massa2*caixaapp*fileira)){ //confere se a massa medida é menor do que a massa equivalente ao numero de fileiras atual
val = cell.read();
a=(val/1000-8495)*0.572727272727-18;
Serial.println("massa atual: ");
Serial.println(a);
Serial.println("fileira atual: ");
Serial.println(fileira);
delay(500);
}
s.write(80);// mesa desce - fim de curso verde
estado=digitalRead(sensor); //confere o estado do sensor de obstaculo
while(estado==0){ //essa rotina espera que não haja mais obstaculo, ou seija, que a caixa tenha descido
Serial.println("mesa descendo");
estado=digitalRead(sensor);
delay(15);
}
s.write(45);// motor desligado
fileira++; //aumenta a fileira atual
}
delay(5000); //espera descarregar a mesa
s.write(0);//sobe a mesa
estado=digitalRead(sensor);
while(estado==1){ //essa rotina sobe a mesa até que o sensor detecte obstaculo (no caso a mesa)
estado=digitalRead(sensor);
delay(15);
}
s.write(45);// motor desligado
fileira=0;
}
}