motore passo passo e fine corsa

Buona sera a tutti, ho un nuovo problema che non riesco a risolvere e un po' a malincuore devo chiedere aiuto a voi, e come sempre se possibile vi chiederei non tanto di darmi la soluzione, ma input per arrivarci io se possibile.
Allora ... ho un motore passo passo che faccio girare con il driver a 4988 e con questo codice

#include <Arduino.h>
//Definizione dei PIN
const int pinDir = 6;
const int pinStep = 7;

const int numStepMotore = 200; //E' il numero di step per rotazione del motore (potrebbe differire in base al modello)
const long velocita = 650; //Si tratta di microsecondi tra un impulso e l'altro sul pin STEP

void setup() {
  //inizializzo i PIN come OUTPUT
  pinMode(pinStep, OUTPUT);
  pinMode(pinDir, OUTPUT);
}
void loop() {

  //definiamo la direzione del motore
  digitalWrite(pinDir, HIGH);

  //esegue un giro completo in un senso
  for (int x = 0; x < 10000; x++) {
    digitalWrite(pinStep, HIGH);
    delayMicroseconds(velocita);
    digitalWrite(pinStep, LOW);
    delayMicroseconds(velocita);
  }

}

bene a questo piccolo circuito vorrei aplicare due fine corsa come questi https://www.amazon.it/gp/product/B07DK11STZ/ref=ppx_yo_dt_b_asin_image_o06_s00?ie=UTF8&psc=1 ed è circa una settimana che spulcio il mondo del web ma non riesco a capire come aplicarli e tanto meno come programmarli.
Il mio obbiettivo è che il motore giri in una direzione o nell'altra e appena incontra un fine corsa si fermi.
Spero di essere stato chiaro, un saluto a tutti e grazie a chi risponderà

>Piperino: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

Sto continuando a studiare i fine corsa e ancora non riesco a trovare il modo di farli funzionare.
mi sono messo in cerca di cose più elementari per poi vedere di evolvere, e cercando cercando ho trovato questo pdf contiriccardo.it - This website is for sale! - contiriccardo Resources and Information. e come vedete a pagina 60 c'è un piccolo schema e il conseguente sketch per far accedere e spegnere un led con un fine corsa.
Io ho riprodotto il circuito e mi sembra funzionate, unico inconveniente che c'è è che dopo pochi secondi che tengo premuto il limit switch si spegne Arduino e sento dal PC il suono di quando si toglie una presa usb.
Da annotare una piccola modifica che ho fatto rispetto lo sketch il led l'ho attaccato al pin 13 e non 10

Potete aiutarmi?
Grazie a tutti

Piperino:
il circuito e mi sembra funzionate, unico inconveniente che c'è è che dopo pochi secondi che tengo premuto il limit switch si spegne Arduino e sento dal PC il suono di quando si toglie una presa usb

Sembra tanto un sovraccarico sull'alimentazione... :cold_sweat:

Claudio_FF:
Sembra tanto un sovraccarico sull'alimentazione... :cold_sweat:

Che vuol dire?

Che stai assorbendo così tanta corrente da mandare in protezione la USB e forse prima anche qualcosa su Arduino. È un'ipotesi eh (basata sulle non informazioni che abbiamo).

Lo hai collegato come in questo schema? :

Hai fatto caso che nella disposizione dei terminali (nell'immagine a sx) il comune non è il centrale ma è su un lato? Secondo me quando chiudi il micro mandi in corto l'alimentazione dell'Arduino, che poi provoca quello che hai esposto.

Ciao, Ale

Allora vediamo se mi spiego meglio
il mio limit switch è questo

facendo i test di continuità con il tester ho capito che il filo verde è il com il nero è il no e il rosso è il nc
il mio schema di montaggio è quello che vi ho allegato
e il codice è il seguente

const int Switch = 2; // pin che riceve il comando dal microswitch
const int verde = 12; // pin dove è connesso il LED
int StatoSwitch = 0; // variabile che legge lo stato della levetta dello switch
void setup() {
 pinMode(verde, OUTPUT); // inizializzazione del pin che comanda il led
// verde quale OUTPUT
 pinMode(Switch, INPUT); // e quello dello switch quale INPUT

}
void loop( ){
 StatoSwitch = digitalRead(Switch); // leggi lo stato dello switch
if ( StatoSwitch == HIGH) { // verifica se lo stato è alto (il NO si trova a 5V)
 digitalWrite(verde, HIGH); // accendi il led verde sul pin 12
 }
else {
 digitalWrite(verde, LOW); // spegni il diodo
 }
}

Il risultato è che quando premo il limit switch il led si accende e si spenge subito,e fa altrettanto quando lo lascio

Non resta che collegare rosso e nero rispettivamente a +5V e GND, e il verde all'ingresso.