Czujnik dotyku

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
mowgli
Młodszy majsterkowicz
Posty: 32
Rejestracja: 10 lut 2015, 13:25

Czujnik dotyku

Post autor: mowgli » 23 lut 2015, 00:22

Znalazłem w internecie ciekawy i łatwy w wykonaniu czujnik dotyku youtube[dot]com/watch?v=stejKa03tdw (podaję odnośnik do youtube w takim formacie, ponieważ jako nowy użytkownik nie mogę wrzucać linków).
Mam problem z dostosowaniem przykładu do własnych potrzeb. Chodzi o to żeby po dotknięciu pin 13 zmieniał stan na przeciwny od obecnego. Jeżeli dioda jest włączona, powinna się wyłączyć, jeżeli jest wyłączona powinna się włączyć.

Przykładowy kod, który włącza diodę kiedy czujnik jest dotknięty i wyłącza kiedy nie jest dotknięty:

Kod: Zaznacz cały

#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
      // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
int led = 13;
void setup()                    
{
   Serial.begin(9600);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_2_4.capacitiveSensor(30);


    //Serial.print(millis() - start);        // check on performance in milliseconds
    //Serial.print("\t");                    // tab character for debug windown spacing

    Serial.println(total1);                  // print sensor output 1
    //Serial.print("\t");
if(total1!=0){
digitalWrite(led,HIGH);
}
else{
digitalWrite(led,LOW);
}
    delay(1000);                             // arbitrary delay to limit data to serial port 
}

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


razorxx100
Starszy majsterkowicz
Posty: 329
Rejestracja: 1 sie 2014, 22:57

Re: Czujnik dotyku

Post autor: razorxx100 » 23 lut 2015, 00:42

Kod: Zaznacz cały

#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
      // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
int led = 13;
void setup()                    
{
   Serial.begin(9600);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_2_4.capacitiveSensor(30);


    //Serial.print(millis() - start);        // check on performance in milliseconds
    //Serial.print("\t");                    // tab character for debug windown spacing

    Serial.println(total1);                  // print sensor output 1
    //Serial.print("\t");
if(total1!=0){
If (digitalRead = HIGH)
{
digitalWrite(led,LOW);
}
else
{
digitalWrite(led,HIGH);
}
}
    delay(1000);                             // arbitrary delay to limit data to serial port 
}
Moze dodam maly bajer :) Dopiero po puszczeniu przycisku pin zmieni stan.

Kod: Zaznacz cały

#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
      // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
int led = 13;
int stan = 0;
void setup()                    
{
   Serial.begin(9600);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_2_4.capacitiveSensor(30);


    //Serial.print(millis() - start);        // check on performance in milliseconds
    //Serial.print("\t");                    // tab character for debug windown spacing

    Serial.println(total1);                  // print sensor output 1
    //Serial.print("\t");
if(total1!=0){
stan = 1;
}
else
{
if (stan ==1)
{
stan = 2;
}
}
if (stan == 2)
{
If (digitalRead = HIGH)
{
digitalWrite(led,LOW);
stan = 0;
}
else
{
digitalWrite(led,HIGH);
stan = 0;
}
}
    delay(1000);                             // arbitrary delay to limit data to serial port 
}
Pisalem z pamieci bo kiedys wykonalem cos podobnego, jak cos nie bedzie dzialac to pisz.
mowgli
Młodszy majsterkowicz
Posty: 32
Rejestracja: 10 lut 2015, 13:25

Re: Czujnik dotyku

Post autor: mowgli » 23 lut 2015, 01:39

razorxx100 pisze:Pisalem z pamieci bo kiedys wykonalem cos podobnego, jak cos nie bedzie dzialac to pisz.
Dzięki wielkie działa elegancko. W kodzie było kilka błędów typu brak średnika.

Poprawiony kod, może przyda się potomnym:)

Jeszcze raz dzięki + dla Ciebie razorxx100

Kod: Zaznacz cały

#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */


CapacitiveSensor   cs_2_4 = CapacitiveSensor(2,4);        // 10M resistor between pins 4 & 2, pin 2 is sensor pin, add a wire and or foil if desired
      // 10M resistor between pins 4 & 8, pin 8 is sensor pin, add a wire and or foil
int led = 13;
int stan = 0;
void setup()                    
{
   Serial.begin(9600);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_2_4.capacitiveSensor(30);


    //Serial.print(millis() - start);        // check on performance in milliseconds
    //Serial.print("\t");                    // tab character for debug windown spacing

    //Serial.println(total1);                  // print sensor output 1
    //Serial.print("\t");
if(total1!=0){
stan = 1;
}
else
{
if (stan ==1)
{
stan = 2;
}
}
if (stan == 2)
{
if (digitalRead(led) == HIGH)
{
digitalWrite(led,LOW);
stan = 0;
}
else
{
digitalWrite(led,HIGH);
stan = 0;
}
}
    delay(10);                             // arbitrary delay to limit data to serial port 
}
ODPOWIEDZ

Strony partnerskie: