Touch Sensor

Salve ragazzi voglio creare un sensore a sfioramento ho caricato questo sketch :

/*
  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://arduino.cc/playground/Main/CapacitiveSensor
 
 Created 18 September 2012
 by Scott Fitzgerald
 
 http://arduino.cc/starterKit
 
 This example code is part of the public domain 
 */

// import the library (must be located in the
// Arduino/libraries directory)
#include <CapacitiveSensor.h>

// create an instance of the library
// pin 4 sends electrical energy
// pin 2 senses senses a change
CapacitiveSensor capSensor = CapacitiveSensor(4,2);

// threshold for turning the lamp on
int threshold = 1000;

// pin the LED is connected to
const int ledPin = 12;


void setup() {
  // open a serial connection
  Serial.begin(9600);
  // set the LED pin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // store the value reported by the sensor in a variable
  long sensorValue = capSensor.capacitiveSensor(30);

  // print out the sensor value
  Serial.println(sensorValue); 

  // if the value is greater than the threshold
  if(sensorValue > threshold) {
    // turn the LED on
    digitalWrite(ledPin, HIGH);
  }
  // if it's lower than the threshold
  else {
    // turn the LED off
    digitalWrite(ledPin, LOW);
  }

  delay(10);
}

Ma si spegne subito la luce io voglio che la posso accendere e poi spegnere

scusami... da ignorante leggo:

// if the value is greater than the threshold if(sensorValue > threshold) { // turn the LED on

il che implica che la luce è accesa solo se (sensorValue > threshold).

per fare quello che vuoi tu dovresti mettere che la luce si accende/spegne a seconda dello stato, e che lo stato cambia quando (sensorValue > threshold).

heko: scusami... da ignorante leggo:

// if the value is greater than the threshold if(sensorValue > threshold) { // turn the LED on

il che implica che la luce è accesa solo se (sensorValue > threshold).

per fare quello che vuoi tu dovresti mettere che la luce si accende/spegne a seconda dello stato, e che lo stato cambia quando (sensorValue > threshold).

Ho modificato cosi :

  // if the value is greater than the threshold
  if((sensorValue > threshold) && (Value==0))
  {
    // turn the LED on
    digitalWrite(ledPin,HIGH);
    Value=1;
  }
  // if it's lower than the threshold
  else if ((sensorValue > threshold) && (Value==1))
  {
    // turn the LED off
    digitalWrite(ledPin,LOW);
    Value=0;
  }

Ma se metto 3 resistenze da 330Kohm in parallelo arrivo a 990Kohm?

mattdj: Ma se metto 3 resistenze da 330Kohm in parallelo arrivo a 990Kohm?

Magari se le metti IN SERIE è meglio ... ]:D

Guglielmo

P.S. : In parallelo ti diventano 110 KOhm ;)

gpb01:

mattdj: Ma se metto 3 resistenze da 330Kohm in parallelo arrivo a 990Kohm?

Magari se le metti IN SERIE è meglio ... ]:D

Guglielmo

P.S. : In parallelo ti diventano 110 KOhm ;)

Grazie Guglielmo mi ero confuso.ho qualche problema con il sensore non legge bene quando viene toccato cioè quando vado per disattivare non lo disattiva quindi lo devo toccare più volte. Come posso risolverlo

Non ho esperienza nel campo ... ma il nostro mod "Leo" ha fatto varie cosette con il capacitivo ... e appena passa da queste parti sicuramente ti darà qualche buon suggerimento ;)

Guglielmo

Come alimenti Arduino? A batteria o con un Notbook che va a batteria oppure un alimentatore con doppio isolamento ? Prova di usare un alimentazione dove la massa é messo a terra come per esempio un PC dektop o tower? Ciao Uwe

uwefed: Come alimenti Arduino? A batteria o con un Notbook che va a batteria oppure un alimentatore con doppio isolamento ? Prova di usare un alimentazione dove la massa é messo a terra come per esempio un PC dektop o tower? Ciao Uwe

Notebook che va a batteria

Notebook che va a batteria

Mettilo in carica e ricontrolla il funzionamento del sensore. Ciao Uwe

mattdj: Ma si spegne subito la luce io voglio che la posso accendere e poi spegnere

Il sensore capacitivo è equivalente ad un interruttore quindi devi dare un minimo di tempo fra una lettura e la successiva altrimenti la presenza della mano viene letta più di una volta. Metti un piccolo tempo di attesa fra 2 letture in modo da fare in modo che l'utente abbia il... tempo di allontanare la mano. Controlla anche la sensibilità del sensore, regolandola in modo che non senta la mano a 5 cm ma giusto quando è molto vicina, così da evitare che legga un'attivazione quando la stai allontanando dal sensore.

leo72:
… Metti un piccolo tempo di attesa fra 2 letture in modo da fare in modo che l’utente abbia il… tempo di allontanare la mano. …

Oppure leggi i cambi di stato, invece che gli stati :wink: (con un’isteresi in mezzo, per evitare di leggere commutazioni al valore di soglia fisso :wink: )

uwefed:

Notebook che va a batteria

Mettilo in carica e ricontrolla il funzionamento del sensore. Ciao Uwe

sempre uguale