Un saluto a tutto il forum. Sto aprendo un nuovo topic anche se è collegato al progetto "Funzionamento motore 12v con inversore" perché sto parlando di un nuovo progetto.
Dovrei far comunicare 2 HC-12 uno montato su un Arduino Uno collegato con un L298 che comunichi con un'altro che dista a 70mt montato sopra una Ethernet shield collegato ad un servizio MQTT come Telegram o ad un web server (questo suggerimento mi è stato consigliato da brunello22)..
Il progetto precedente prevedeva il movimento di un motore lungo un asse pilotato da un relè temporizzato, quindi la comunicazione degli HC-12 mi serve per accertarmi quando sono a lavoro se il motore è stato in funzione e non è rimasto fermo..
Quale sarebbe il mio problema?
Devo aggiungere nello sketch del modulo L298 le istruzioni per inviare con l' HC-12 i dati alla ricevente posta sulla Ethernet shield che visualizzerò come una conferma di esito positivo sul mio telefono..
L'idea sarebbe questa però se avete un metodo più semplice ben venga..
Vi posto lo sketch del motore inverso (l298) che funziona con 2 finecorsa, basterebbe prendere un input da uno dei finecorsa per ricevere un segnale alla ricevente.
Vi ringrazio per il tempo perso in questa lunga lettura..grazie a tutti
#define enA 11
#define in1 10
#define in2 9
#define fcS 13 //Finecorsa Sinistro ( posizione di reset iniziale )
#define fcD 12 //Finecorsa Destro
#define pin_sensore A0
byte stato_fc = 1 ;
byte velocita = 255 ; // Velocita motore 0-255
void motore_avanti() {
analogWrite ( enA, velocita );
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
}
void motore_indietro() {
analogWrite ( enA, velocita );
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
}
void motore_stop() {
analogWrite ( enA, 0 );
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
}
void reset_motore() {
while (digitalRead(fcS) == HIGH) { // legge finecorsa sinistro
motore_indietro(); // avvia motore indietro fino alla posizione iniziale
}
motore_stop();
}
void setup() {
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(fcS, INPUT_PULLUP);
pinMode(fcD, INPUT_PULLUP);
pinMode(pin_sensore, INPUT_PULLUP);
reset_motore(); // Motore si mette in posizione di start
}
void loop() {
int lettura = analogRead(A1);
velocita=map(lettura,0,1023,100,255);
if (digitalRead(pin_sensore) == 0 ) { // attende lo start
delay(100);
stato_fc = 1 ;
motore_avanti() ;
while (stato_fc != 0 ) {
if (digitalRead(fcD) == 0 ) {
motore_stop();
stato_fc = 0 ;
}
}
delay(100);
stato_fc = 1 ;
motore_indietro() ;
while (stato_fc != 0 ) {
if (digitalRead(fcS) == 0 ) {
motore_stop();
stato_fc = 0 ;
}
}
delay(100);
}
}// fine loop
