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
}
Biblioteket skal hedde Capsense, ligesom de filer der er i biblioteket CapSense.h og CapSense.cpp
I de to filer skal du udskifte #include "WProgram.h"
med #include "Arduino.h"
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
}
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?
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.