pero usaste el flag para parar el motor?
acabo de probar el codigo que dejaste de prueba y funciona bien, un poco adaptado porque no tengo arduino, tengo un esp32
tu codigo:
	
	
	
		
el codigo para esp32 usasndo el touch con flag:
	
	
	
		
sin flag:
	
	
	
		
				
			acabo de probar el codigo que dejaste de prueba y funciona bien, un poco adaptado porque no tengo arduino, tengo un esp32
tu codigo:
		Código:
	
	void setup() {
 pinMode(7,OUTPUT); //motor
 pinMode(26,OUTPUT); // sentido giro
 pinMode(20,INPUT); //reed switch
 pinMode(14,INPUT_PULLUP); //boton
 Serial.begin(115200);
 attachInterrupt(digitalPinToInterrupt(20), sumarPulsosM1, CHANGE);
}
int boton = 0;
void sumarPulsosM1() {
  digitalWrite(7, LOW);
  detachInterrupt(digitalPinToInterrupt(20)); //aca para la interrupcion
}
void loop() {
  boton = digitalRead(14);
 if (boton == 0){
    Serial.println("pulso");
    delay(100);
    digitalWrite(7,HIGH);
    delay(1000);
  }
}
	el codigo para esp32 usasndo el touch con flag:
		Código:
	
	int threshold = 40;
byte button;
byte motor= 2;
bool flag= 1;
void gotTouch1(){
 flag=0;
}
void setup() {
  Serial.begin(115200);
  pinMode(2,OUTPUT); //motor
  digitalWrite(2, 1);
  touchAttachInterrupt(T7, gotTouch1, threshold);
}
int boton = 1;
void loop(){
  Serial.println(digitalRead(motor));
  if(flag==0){
    digitalWrite(2, 0);
  }
 if (boton == 0){
  flag=1;
    Serial.println("pulso");
    delay(50);
    digitalWrite(2,HIGH);
  }
}
	sin flag:
		Código:
	
	int threshold = 40;
byte button;
byte motor= 2;
bool flag= 1;
void gotTouch1(){
  digitalWrite(2, 0);
}
void setup() {
  Serial.begin(115200);
  pinMode(2,OUTPUT); //motor
  digitalWrite(2, 1);
  touchAttachInterrupt(T7, gotTouch1, threshold);
}
int boton = 0;
void loop(){
  Serial.println(digitalRead(motor));
 if (boton == 0){
    Serial.println("pulso");
    delay(50);
    digitalWrite(2,HIGH);
  }
}
	
  
				
						
	
	
