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 http://www.contiriccardo.it/arduino3.pdf 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.