Metal Detector – Codice in C
include <Stepper.h>
include <ESP8266_Lib.h>
include <Servo.h>
define BLYNK_PRINT Serial
include <SoftwareSerial.h>
include <BlynkSimpleShieldEsp8266.h>
// Codice di autorizzazione (Auth Key) ottenuta dall’applicazione creata con l’app su cellulare
char auth[] = “fe78e38990044ea89c1a4f1214895b0f”;
// Profilo di accesso alla rete WiFi: SSID e password
char ssid[] = “Rete1”;
char pass[] = “05m10d002”;
int in1=12;
int in2=11;
int ConA=13;
long t01,t02,t03;
long t1=300;
long t2=300;
long t3=300;
float metalDetected;
int monitoring;
int metalDetection=A1;
Servo motore;
const int passiPerRotazione = 32;
Stepper stepper(passiPerRotazione, 7,10,8,9);
// canale seriale di comunicazione con ESP8266
SoftwareSerial EspSerial(5, 6);
// Velocità di comunicazione seriale con ESP8266
define ESP8266_BAUD 9600
// Oggetto per la modalità di connessione wifi di Blynk con internet
ESP8266 wifi(&EspSerial);
void Passo1(){stepper.step(1024);}
void MotorON(){digitalWrite(in1,LOW);digitalWrite(in2,HIGH);analogWrite(ConA,150);}
void MotorOFF(){digitalWrite(in1,LOW);digitalWrite(in2,LOW);analogWrite(ConA,00);}
void MetalloSI(){ monitoring=analogRead(metalDetection);
metalDetected=(float) monitoring*100/1024.0;
if (monitoring<=250){
digitalWrite(2,HIGH);
}
else{digitalWrite(2,LOW);}}
void setup()
{
// Messaggi di Blynk su monitor seriale
Serial.begin(9600);
delay(10);
// Imposta la velocità e apre un canale con ESP8266
EspSerial.begin(ESP8266_BAUD);
delay(10);
// Attiva la connessione con il server di Blynk
Blynk.begin(auth, wifi, ssid, pass);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(ConA,OUTPUT);
pinMode(2,OUTPUT);
/pinMode(8,OUTPUT); pinMode(10,OUTPUT);/
digitalWrite(3,LOW);
/digitalWrite(8,LOW); digitalWrite(10,LOW); motore.attach(9);/
stepper.setSpeed(200); // imposta la velocità del motore max 200
}
void loop()
{
// sincronizzazione continua con il server di Blynk
Blynk.run();
}
/*Questa procedura viene eseguita quando viene richiesta la lettura di un qualunque pin virtuale Vx con x = 0,1,2,3,…*/
/*BLYNK_READ(Vx){
int valore;
// inserire qui eventuale codice di lettura ed elaborazione di valore
Blynk.virtualWrite(V0, valore);
}*/
/*Questa procedura viene eseguita quando il server Blynk richiede di scrivere un valore nel pin virtuale Vx con x = 0,1,2,3,…*/
BLYNK_WRITE(V1){
// lettura dei parametri arrivati dal server Blynk
// utilizzare le funzioni asInt, asFloat, asStr per trasformare i
// dati in arrivo in numeri o testi
int a = param.asInt();
if(a==1){
//MotorON();
//Passo1();
for(;;){
MetalloSI();
if(a==0){
break;
}
}
/*if ( millis() – t01>=t1){
digitalWrite (3,!digitalRead(3));
t01=millis();}
if (millis ()>600){
if ( millis() – t02>=t2){
digitalWrite (8,!digitalRead(8));
t02=millis();}}
if ( millis() – t03>=t3){
digitalWrite (10,!digitalRead(10));
t03=millis();}/ /if(a==0){
MotorOFF();
digitalWrite(3,LOW);
digitalWrite(8,LOW);
digitalWrite(10,LOW);
motore.write(90);}*/
}}
BLYNK_WRITE(V2){
// lettura dei parametri arrivati dal server Blynk
// utilizzare le funzioni asInt, asFloat, asStr per trasformare i
// dati in arrivo in numeri o testi
int b = param.asInt();
if(b==1){
MotorOFF();
for(;;){if(b==1){digitalWrite(2,LOW);}}
};
}