LØST Capacitive Sens

Hej igen XD

Jeg er begyndt at udforske import af biblioteker og fandt et spændende projekt med CapacitiveSens. Sketch'en er færdig skrevet, hentet fra Arduino's hjemmeside, Bilblioteks filen en lagt i biblioteket og kan ses i IDE'en.

Derfor undre det mig at jeg får fejlmeldinger som:
CapacitiveSensor'does not name a type
og
'cs_4_2' was not declared in this scope

Er der nogen som kan gennemskue hvad der er "galt", eller hvad jeg overser", i forhold til nedenstående sketch.

#include <CapacitiveSensor.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10 megohm between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50 kilohm - 50 megohm. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 * Best results are obtained if sensor foil and wire is covered with an insulator such as paper or plastic sheet
 */


CapacitiveSensor   cs_4_2 = CapacitiveSensor(4,2);        // 10 megohm resistor between pins 4 & 2, pin 2 is sensor pin, add wire, foil
CapacitiveSensor   cs_4_5 = CapacitiveSensor(4,5);        // 10 megohm resistor between pins 4 & 6, pin 6 is sensor pin, add wire, foil
CapacitiveSensor   cs_4_8 = CapacitiveSensor(4,8);        // 10 megohm resistor between pins 4 & 8, pin 8 is sensor pin, add wire, foil

void setup()                    
{

   cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(9600);

}

void loop()                    
{
    long start = millis();
    long total1 =  cs_4_2.capacitiveSensor(30);
    long total2 =  cs_4_5.capacitiveSensor(30);
    long total3 =  cs_4_8.capacitiveSensor(30);

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

    Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");
    Serial.print(total2);                  // print sensor output 2
    Serial.print("\t");
    Serial.println(total3);                // print sensor output 3

    delay(10);                             // arbitrary delay to limit data to serial port 
}

Vh
LYDFANGER

Uden at have kigget på det library, så "plejer" det at være at hvis librariet har defineret en class så initaliserer man :

CapacitiveSensor   cs_4_2 (4,2);

å skulel du have dit cs_4_2 object som du bruger so du allerede gør.

Nu har jeg forenklet lidt i sketch'en, og tilføjet det du nævnte.
Nu får jeg følgende melding

"CapacitiveSensor' does not name a type".

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


CapacitiveSensor   cs_4_2 = CapacitiveSensor(4,2);        // 10 megohm resistor between pins 4 & 2, pin 2 is sensor pin, add wire, foil
 // 10 megohm resistor between pins 4 & 8, pin 8 is sensor pin, add wire, foil

void setup()                    
{

   cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(9600);

}

void loop()                    
{
    long start = millis();
    long total1 =  cs_4_2.CapacitiveSensor(30);
   

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

    Serial.print(total1);                  // print sensor output 1
   

    delay(10);                             // arbitrary delay to limit data to serial port 
}

Det er da virkelig også noget rod.

  1. Biblioteket skal hedde Capsense, ligesom de filer der er i biblioteket CapSense.h og CapSense.cpp

  2. I de to filer skal du udskifte
    #include "WProgram.h"
    med
    #include "Arduino.h"

  3. Navneforvirringen i punkt 1, gør at navnene skal ændres i sketchen, se nedenfor.

Nu kan sketchen compiles, men om den virker efter hensigten ved jeg ikke

#include <CapSense.h>

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10 megohm between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50 kilohm - 50 megohm. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 * Best results are obtained if sensor foil and wire is covered with an insulator such as paper or plastic sheet
 */


CapSense   cs_4_2 = CapSense(4,2);        // 10 megohm resistor between pins 4 & 2, pin 2 is sensor pin, add wire, foil
CapSense   cs_4_5 = CapSense(4,5);        // 10 megohm resistor between pins 4 & 6, pin 6 is sensor pin, add wire, foil
CapSense   cs_4_8 = CapSense(4,8);        // 10 megohm resistor between pins 4 & 8, pin 8 is sensor pin, add wire, foil

void setup()                    
{

   cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(9600);

}

void loop()                    
{
    long start = millis();
    long total1 =  cs_4_2.capSense(30);
    long total2 =  cs_4_5.capSense(30);
    long total3 =  cs_4_8.capSense(30);

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

    Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");
    Serial.print(total2);                  // print sensor output 2
    Serial.print("\t");
    Serial.println(total3);                // print sensor output 3

    delay(10);                             // arbitrary delay to limit data to serial port 
}

Tak for svarene

Efter jeg prøvede det I skrev i jeres indlæg meldte IDE stadig fejl.
Jeg tog internettet til hjælp og fandt ud af, der i den ene libraries fil var en henvisning til et libraries "Wconstance.h". Filen er ikke nødvendig og er derfor fjernet.
Så nu virker tingene sammen.
Skal det forståes sådan at en libraries fil, kan include en helt tredje fil?

Vh
Lydfanger

lydfanger:
Skal det forståes sådan at en libraries fil, kan include en helt tredje fil?

Yep. En fil der bruges med din #include kan i sig selv bruge en anden fil med #include, og så videre op til et vist antal, nok 1023 dyb (who cares? det vil være nok til almindelig brug) Det behøver ikke være en Library, filens indhold bliver sat ind i stedet for #include, og kan derfor vare hvilken som helst tekst.

tak tak