2016-05-25 3 views
-1

Я абсолютно не понимаю, что может быть неправильно с моим кодом, но я, вероятно, что-то пропустил. Я искал похожие проблемы в отношении других токенов, но они были бесполезны для меня. Поскольку мой код не очень длинный, я пойду дальше и разместил его здесь.ожидается ';' before '[' token

unsigned int value; 
#include <Adafruit_NeoPixel.h> 
#ifdef __AVR__ 
#include <avr/power.h> 
#endif 
#define PIN 6 
#define NUM_LEDS 60 
#define BRIGHTNESS 10 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800); 

void setup(){ 
Serial.begin(9600); 
Serial.setTimeout(50000); 
strip.begin(); 
strip.setBrightness(BRIGHTNESS); 
strip.begin(); 
strip.show(); // Initialize all pixels to 'off' 
} 

void loop() 
{ 
boolean lights; 
int value[100]; 

for(int i=0;i<100;i++){ 
value[i] = analogRead(0); 
} 

int j=SmallestElement(value); 

if(value[j-1]-value[j]>=2 and value[j-1]-value[j]<=30) and value[j-2]-value[j-1]>=2 and value[j-2]-value[j-1]<=30 and value[j+1]-value[j]>50 and value[j+2]>value[j+1]){ //THE COMPILER IS NOT OKAY WITH THIS LINE 
lights = true; //THE COMPILER HAS A PROBLEM WITH THE LINE ABOVE 
} 
else{ 
lights=false; 
} 

if(lights){ //if there is a characteristic drop 
if(value[j]>=600 and value[j]<=699){ 
int one=0; 
for(int j=0;j<60;j++){ 
strip.setPixelColor(j,0,0,0); 
} 
for(int i=0;i<15;i++,one++){ 
strip.setPixelColor(one,0,255,0); 
strip.show(); 
delay(10); 
} 
} 
if(value[j]>=500 and value[j]<=599){ 
int two1=0,two2=60; 
for(int j=0;j<60;j++){ 
strip.setPixelColor(j,0,0,0); 
} 
for(int i=0;i<30;i++,two1++,two2--){ 
strip.setPixelColor(two1,255,255,0); 
strip.setPixelColor(two2,255,255,0); 
strip.show(); 
delay(10); 
} 
    } 

} 

    } 

int SmallestValue(int values[100]){ 
int smallest = values[0]; 
for(int i=1;i<100;i++){ 
if(values[i]<smallest){ 
smallest=values[i]; 
} 
    } 
return smallest; 
} 

int SmallestElement(int values[100]){ 
int i=0; 
while(values[i]!=SmallestValue(values){ 
    i++; 
} 
return i; 
} 

Любая помощь будет оценена, спасибо.

+2

Если вы отформатировали свой код правильно, вы, скорее всего, найдете ошибку. – PaulMcKenzie

+0

Форматирование на самом деле потому, что я не знаком с форматированием кода здесь. В моем компиляторе это довольно ясно. – Ashley

+0

У вас, кажется, есть дополнительный ')' после '<= 30' перед вторым' и '? – immibis

ответ

4

Оператор if имеет несогласованные круглые скобки.

Ваш код:

if(
    value[j-1]-value[j]>=2 and 
    value[j-1]-value[j]<=30) and // <- Paren here closes the if(
    value[j-2]-value[j-1]>=2 and 
    value[j-2]-value[j-1]<=30 and 
    value[j+1]-value[j]>50 and 
    value[j+2]>value[j+1]){ 
    lights = true; 
} 
else{ 
    lights=false; 
} 

Блокнот хорошо, но воспользоваться в IDE!

+0

И вы не представляете, сколько раз я смотрел на свою душу в эту линию. Огромное спасибо. В следующий раз я обязательно буду использовать решение для блокнота. – Ashley

Смежные вопросы