2015-03-31 61 views
0

嗨,我有使用石墨和紙張找到觸摸界面Arduino的代碼工作,但這段代碼是不是在星火核心工作,Arduino的代碼如下Arduino的觸摸代碼沒有火花核心

// Pin for the LED 
int LEDPin = 7; 
// Pin to connect to your drawing 
int capSensePin = 0; 
// This is how high the sensor needs to read in order 
// to trigger a touch. You'll find this number 
// by trial and error, or you could take readings at 
// the start of the program to dynamically calculate this. 
int touchedCutoff = 60; 

void setup(){ 
    Serial.begin(9600); 
    // Set up the LED 
    pinMode(LEDPin, OUTPUT); 
    digitalWrite(LEDPin, LOW); 
} 

void loop(){ 
    // If the capacitive sensor reads above a certain threshold, 
    // turn on the LED 
    if (readCapacitivePin(capSensePin) > touchedCutoff) { 
    digitalWrite(LEDPin, HIGH); 
    } 
    else { 
    digitalWrite(LEDPin, LOW); 
    } 

    // Every 500 ms, print the value of the capacitive sensor 
    if ((millis() % 500) == 0){ 
    Serial.print("Capacitive Sensor on Pin 2 reads: "); 
    Serial.println(readCapacitivePin(capSensePin)); 
    } 
} 

// readCapacitivePin 
// Input: Arduino pin number 
// Output: A number, from 0 to 17 expressing 
//   how much capacitance is on the pin 
// When you touch the pin, or whatever you have 
// attached to it, the number will get higher 
// In order for this to work now, 
// The pin should have a 1+Megaohm resistor pulling 
// it up to +5v. 
uint8_t readCapacitivePin(int pinToMeasure){ 
    // This is how you declare a variable which 
    // will hold the PORT, PIN, and DDR registers 
    // on an AVR 
    volatile uint8_t* port; 
    volatile uint8_t* ddr; 
    volatile uint8_t* pin; 
    // Here we translate the input pin number from 
    // Arduino pin number to the AVR PORT, PIN, DDR, 
    // and which bit of those registers we care about. 
    byte bitmask; 
    if ((pinToMeasure >= 0) && (pinToMeasure <= 7)){ 
    port = &PORTD; 
    ddr = &DDRD; 
    bitmask = 1 << pinToMeasure; 
    pin = &PIND; 
    } 
    if ((pinToMeasure > 7) && (pinToMeasure <= 13)){ 
    port = &PORTB; 
    ddr = &DDRB; 
    bitmask = 1 << (pinToMeasure - 8); 
    pin = &PINB; 
    } 
    if ((pinToMeasure > 13) && (pinToMeasure <= 19)){ 
    port = &PORTC; 
    ddr = &DDRC; 
    bitmask = 1 << (pinToMeasure - 13); 
    pin = &PINC; 
    } 
    // Discharge the pin first by setting it low and output 
    *port &= ~(bitmask); 
    *ddr |= bitmask; 
    delay(1); 
    // Make the pin an input WITHOUT the internal pull-up on 
    *ddr &= ~(bitmask); 
    // Now see how long the pin to get pulled up 
    int cycles = 16000; 
    for(int i = 0; i < cycles; i++){ 
    if (*pin & bitmask){ 
     cycles = i; 
     break; 
    } 
    } 
    // Discharge the pin again by setting it low and output 
    // It's important to leave the pins low if you want to 
    // be able to touch more than 1 sensor at a time - if 
    // the sensor is left pulled high, when you touch 
    // two sensors, your body will transfer the charge between 
    // sensors. 
    *port &= ~(bitmask); 
    *ddr |= bitmask; 

    return cycles; 
} 

星火核心是投擲以下錯誤

在從../inc/spark_wiring.h:29:0包含的文件,

from ../inc/application.h:29, 
from new_lwed.cpp:3: 
../../core-common-lib/SPARK_Firmware_Driver/inc/config.h:12:2: warning: #warning "Defaulting to Release Build" [-Wcpp] 
#warning "Defaulting to Release Build" 
^ 
new_lwed.cpp: In function 'uint8_t readCapacitivePin(int)': 
new_lwed.cpp:57:13: error: 'PORTD' was not declared in this scope 
volatile uint8_t* pin; 
^ 
new_lwed.cpp:58:12: error: 'DDRD' was not declared in this scope 
// Here we translate the input pin number from 
^ 
new_lwed.cpp:60:12: error: 'PIND' was not declared in this scope 
// and which bit of those registers we care about. 
^ 
new_lwed.cpp:63:13: error: 'PORTB' was not declared in this scope 
port = &PORTD; 
^ 
new_lwed.cpp:64:12: error: 'DDRB' was not declared in this scope 
ddr = &DDRD; 
^ 
new_lwed.cpp:66:12: error: 'PINB' was not declared in this scope 
pin = &PIND; 
^ 
new_lwed.cpp:69:13: error: 'PORTC' was not declared in this scope 
port = &PORTB; 
^ 
new_lwed.cpp:70:12: error: 'DDRC' was not declared in this scope 
ddr = &DDRB; 
^ 
new_lwed.cpp:72:12: error: 'PINC' was not declared in this scope 
pin = &PINB; 
^ 
make: *** [new_lwed.o] Error 1 

回答