Duvida sensor de toque/pressão

Boa noite,
Comecei a experimentar ha uns tempos a plataforma Arduino, e estou a ter problemas a fazer um projecto para a faculdade. O código que escrevi (peço desculpa desde já se existirem erros, mas estou mesmo no inicio) era suposto que através do sensor de toque/pressão ele executasse o loop, mas assim que largássemos o sensor ele parasse de o executar. O que o meu código está a fazer, é executar o loop até ao fim e só depois se desligar. Alguém me pode explicar o meu erro? E como o resolver?!

Desde já muito obrigada pelo tempo dispensado,
Catarina Mendes

/*
  Arduino Starter Kit example
 Project 13  - Touch Sensor Lamp

 This sketch is written to accompany Project 13 in the
 Arduino Starter Kit

 Parts required:
 1 Megohm resistor
 metal foil or copper mesh
 220 ohm resistor
 LED

 Software required :
 CapacitiveSensor library by Paul Badger
 http://www.arduino.cc/playground/Main/CapacitiveSensor

 Created 18 September 2012
 by Scott Fitzgerald

 http://www.arduino.cc/starterKit

 This example code is part of the public domain
 */

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4, 2);

int threshold = 1000;

const int buzzer = 9;

void setup() {
  Serial.begin(9600);
  pinMode(10,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(12,OUTPUT);
}

void loop() {
 
  long sensorValue = capSensor.capacitiveSensor(30);

  Serial.println(sensorValue);

  if (sensorValue > threshold) 
{
    
digitalWrite(10,HIGH);
tone(buzzer,150);
delay(1000);
digitalWrite(10,LOW);
noTone(buzzer);
delay(1000);

digitalWrite(11,HIGH);
tone(buzzer,150);
delay(1000);
digitalWrite(11, LOW);
noTone(buzzer);
delay(1000);

digitalWrite(12,HIGH);
tone(buzzer,150);
delay(1000);
digitalWrite(12, LOW);
noTone(buzzer);
delay(1000);

digitalWrite(10,HIGH);
tone(buzzer,150);
digitalWrite(11,HIGH);
tone(buzzer,150);
digitalWrite(12,HIGH);
tone(buzzer,150);
delay(1000);
digitalWrite(10, LOW);
noTone(buzzer);
digitalWrite(11, LOW);
noTone(buzzer);
digitalWrite(12, LOW);
noTone(buzzer);
delay(1000);

digitalWrite(10,HIGH);
tone(buzzer,150);
digitalWrite(11,HIGH);
tone(buzzer,150);
digitalWrite(12,HIGH);
tone(buzzer,150);
delay(1000);
digitalWrite(10, LOW);
noTone(buzzer);
digitalWrite(11, LOW);
noTone(buzzer);
digitalWrite(12, LOW);
noTone(buzzer);
delay(1000);

digitalWrite(10,HIGH);
tone(buzzer,150);
digitalWrite(11,HIGH);
tone(buzzer,150);
digitalWrite(12,HIGH);
tone(buzzer,150);
delay(3000);
digitalWrite(10, LOW);
noTone(buzzer);
digitalWrite(11, LOW);
noTone(buzzer);
digitalWrite(12, LOW);
noTone(buzzer);
delay(1000);
}
 
{
  if (sensorValue < threshold) 

    // turn the LED off
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
 
  delay(10);
} 
}

Olá!

A variável "sensorValue" só é atualizada no começo do loop então é normal que vá até o final e pare no início do loop seguinte.

Talvez algo deste tipo ajude:

do
{

  ...

}while(capSensor.capacitiveSensor(30) > threshold)

Ou poderia usar

while(sensorValue > threshold)
{
}

e atualizar a variável após um bloco de funções.

Abraço.