2012-05-03 2 views
0

Я пытаюсь прочитать в цифровом виде все отдельные 8 датчиков с QTRA 8-датчика платы:Ошибка при чтении цифровых датчиков

http://www.pololu.com/docs/0J19/all

Проблема я получаю то, что хотя робот может прочитать его положение правильно:

qtra.readLine(sensorValues); 

и он может прочитать первые 6 датчиков в цифровой форме правильно, он ничего не читал из первой 2.

Ниже вы имеете м y упрощенного кода, который я написал, чтобы проверить это. Обратите внимание, что light7 и light 8 всегда возвращают 0, даже если они прямо на черной линии. Я хотел бы знать, есть ли что-то, что я делаю неправильно и каким-либо образом не позволять вручную назначать 1 или 0 выводам этих первых двух датчиков.

#include <QTRSensors.h> 

#define NUM_SENSORS    8 // number of sensors used 
#define NUM_SAMPLES_PER_SENSOR 4 // average 4 analog samples per sensor reading 
#define EMITTER_PIN    2 // emitter is controlled by digital pin 2 

// sensors 0 through 5 are connected to analog inputs 0 through 5, respectively 
QTRSensorsAnalog qtra((unsigned char[]) {A7, A6, A5, A4, A3, A2, A1, A0}, 
    NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); 
unsigned int sensorValues[NUM_SENSORS]; 

//LIGHTS 
int light1 = A0; 
int light2 = A1; 
int light3 = A2; 
int light4 = A3; 
int light5 = A4; 
int light6 = A5; 
int light7 = A6; 
int light8 = A7; 


void setup(){ 
    pinMode(light1, INPUT); 
    pinMode(light2, INPUT); 
    pinMode (light3, INPUT); 
    pinMode(light4, INPUT); 
    pinMode(light5, INPUT); 
    pinMode(light6, INPUT); 
    pinMode(light7, INPUT); 
    pinMode(light8, INPUT); 

    Serial.begin(9600); 
} 

void loop(){ 
    Serial.print(digitalRead(light1)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light2)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light3)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light4)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light5)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light6)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light7)); 
    Serial.print("....."); 
    Serial.print(digitalRead(light8)); 
    Serial.println(); 
} 

Благодаря всем, кто будет тратить время, чтобы ответить на этот ...

+0

На что Arduino доски вы используете это? и как он подключен? – Sibster

ответ

0

Проблема заключалась в том, что датчики выполнены в одном 2 - модуль датчика, а другой 6 - модуль датчика.

Мне пришлось искусственно вводить «цифровое чтение» путем сравнения значений с функцией analogRead.

т.е.

if(analogRead(light7) > value){ 
     return 1; 
}else{ 
    return 0; 
}