Categories:

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

};
}

Codice in C


Tags: