Здравствуйте,помогите в скетче ошибка ‘led’ was not declared in this scope
[code]
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <FreqCount.h>
#include <PWM.h>
#include <CyberLib.h>#define led 9 //пин для генератора сигналов (не менять)
#define dds 10 //пин для генератора dds (не менять)
//#################№№№№№№####пользовательские настройки
#define power 8 //пин который опрашивает кнопку включения
#define OFF 14//пин который управляет ключем питания
#define timepowerON 50 //время удержания кнопки выключения
#define levo 13 //кнопка ЛЕВО(можно любой пин)
#define ok 12 //кнопка ОК(можно любой пин)
#define pravo 11 //кнопка ПРАВО(можно любой пин)
#define akb A5 //любой своюодный аналоговый пин для измерения напряжения АКБ
#define overclock 16 //Частота на которой работает Ардуино
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 4, 3, 2);//пины к которым у вас подключен дисплей
byte cont=52;//контрастность дисплея
byte SinU=30; //уровень синхронизации 0 до 255
int PWM = 128;//стартовое значение ШИМ от 0 до 255
int32_t frequency = 500; //стартовое значение частоты в Гц
float VCC=5.0; //напряжение питания, меряем мультиметром
//###########################################################
int d=0;
byte menuDDS=0;
byte sinM[32]={1,6,15,29,48,69,92,117,143,168,191,212,229,243,251,255,254,248,237,222,203,181,156,131,106,81,59,39,22,10,3,1};
byte pilaM[32]={1,9,17,25,33,41,49,57,65,73,81,89,97,105,113,121,129,137,145,153,161,169,177,185,193,201,209,217,225,235,245,255};
byte RpilaM[32]={250,246,238,230,222,214,206,198,190,182,174,166,158,150,142,134,126,118,110,102,94,86,78,70,62,54,41,33,25,17,9,1};
byte trianglM[32]={1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,255,239,223,207,191,175,159,143,127,111,95,79,63,47,31,15,1};
int powerON=0;//состояние кнопки питания
byte hag=0;
int mnog=0;
boolean flag=0;
byte mass[701];
byte x=0;
byte menu=0;//переменная выбора меню
bool opornoe=1; //флаг опорного напряжения
bool paus=0; //флаг режима паузы
byte pultoskop=0; //флаг выбора генератора или осциллографа
byte razv=6;
unsigned long count =0;
byte sinX=30;
byte meaX=83;
int Vmax=0;// максимальное напряжение
byte sinhMASS=0;
long countX=0;
long speedTTL=9600; //скорость терминала
int prokr=0;
void setup(){
pinMode(A4,INPUT);
digitalWrite(OFF,HIGH);//включем питание
//Serial.begin(9600);
display.begin();
display.setContrast(cont);
while(digitalRead(ok)==LOW){
/////////////////////////////////////////удержание кнопки отключения
if(digitalRead(power)==HIGH){powerON++;delay(10);}
if(powerON>=timepowerON){digitalWrite(OFF,LOW);}///отключаем питание
/////////////////////////////////////////удержание кнопки отключения
if(pultoskop==0){
display.clearDisplay();
display.setCursor(10,0);
display.setTextColor(WHITE, BLACK); // ‘inverted’ text
display.println(«Пультоскоп»);
display.setCursor(10,10);
display.setTextColor(BLACK);
display.println(«Генератор»);
display.setCursor(10,20);
display.println(«DDSгенератор»);
display.setCursor(10,30);
display.println(«Терминал»);
display.setCursor(0,40);
display.print(«Батарея=»);
display.print(analogRead(akb)*5.0/1024);
display.print(«В»);
}
if(pultoskop==1){
display.clearDisplay();
display.setCursor(10,0);
display.setTextColor(BLACK); // ‘inverted’ text
display.println(«Пультоскоп»);
display.setCursor(10,10);
display.setTextColor(WHITE, BLACK); // ‘inverted’ text
display.println(«Генератор»);
display.setTextColor(BLACK); // ‘inverted’ text;
display.setCursor(10,20);
display.println(«DDSгенератор»);
display.setCursor(10,30);
display.println(«Терминал»);
display.setCursor(0,40);
display.setTextColor(BLACK);
display.print(«Батарея=»);
display.print(analogRead(akb)*5.0/1024);
display.print(«В»);
}
if(pultoskop==2){
display.clearDisplay();
display.setCursor(10,00);
display.setTextColor(BLACK); // ‘inverted’ text
display.println(«Пультоскоп»);
display.setCursor(10,10);
display.println(«Генератор»);
display.setTextColor(WHITE, BLACK); // ‘inverted’ text;
display.setCursor(10,20);
display.println(«DDSгенератор»);
display.setTextColor(BLACK);
display.setCursor(10,30);
display.println(«Терминал»);
display.setCursor(0,40);
display.setTextColor(BLACK);
display.print(«Батарея=»);
display.print(analogRead(akb)*5.0/1024);
display.print(«В»);
}
if(pultoskop==3){
display.clearDisplay();
display.setCursor(10,00);
display.setTextColor(BLACK); // ‘inverted’ text
display.println(«Пультоскоп»);
display.setCursor(10,10);
display.println(«Генератор»);
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println(«DDSгенератор»);
display.setTextColor(WHITE, BLACK);
display.setCursor(10,30);
display.println(«Терминал»);
display.setCursor(0,40);
display.setTextColor(BLACK);
display.print(«Батарея=»);
display.print(analogRead(akb)*5.0/1024);
display.print(«В»);
}
if(digitalRead(levo)==HIGH){delay(300);pultoskop=pultoskop+1;}
if(digitalRead(pravo)==HIGH){delay(300);pultoskop=pultoskop+1;}
if(pultoskop>3){pultoskop=0;}
delay(50);
display.display(); }
if(pultoskop==2){InitTimersSafe(); bool success = SetPinFrequencySafe(led,200000);}
if(pultoskop==0){FreqCount.begin(1000);}
if(pultoskop==1){InitTimersSafe(); bool success = SetPinFrequencySafe(led, frequency);}
display.setTextColor(BLACK);
delay(500); }
void Zamer(){
if (razv>=6){ADCSRA = 0b11100010;}//delitel 4
if (razv==5){ADCSRA = 0b11100011;}//delitel 8
if (razv==4){ADCSRA = 0b11100100;}//delitel 16
if (razv==3){ADCSRA = 0b11100101;}//delitel 32
if (razv==2){ADCSRA = 0b11100110;}//delitel 64
if (razv<2){ADCSRA = 0b11100111;}//delitel 128
if (razv==0){
for(int i=0;i<700;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
delayMicroseconds(500);
mass[i]=ADCH;
}
}
if (razv>0){
for(int i=0;i<700;i++){
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
mass[i]=ADCH;
}
}
}
void loop() {
/////////////////////////////////////////удержание кнопки отключения
if(digitalRead(power)==HIGH){powerON++;delay(10);}
if(powerON>=timepowerON){digitalWrite(OFF,LOW);}///отключаем питание
/////////////////////////////////////////удержание кнопки отключения
if(pultoskop==0){
if(opornoe==0){ADMUX = 0b11100011;}//выбор внутреннего опорного 1,1В
if(opornoe==1){ADMUX = 0b01100011;}//Выбор внешнего опорного
delay(5);
if(paus==0){Zamer();}
//#######################################определение точки синхронизации
bool flagSINHRO=0;
bool flagSINHRnull=0;
for(int y=1;y<255;y++){
if(flagSINHRO==0){if(mass[y]<SinU){flagSINHRnull=1;}}
if(flagSINHRO==0){if(flagSINHRnull==1){if(mass[y]>SinU){flagSINHRO=1;sinhMASS=y;}}}}
//#######################################определение точки синхронизации
//максимальное значение сигнала##########################
Vmax=0;
for(int y=1;y<255;y++){if(Vmax<mass[y]){Vmax=mass[y];} }
//максимальное значение сигнала##########################
//#######################################определение точки синхронизации
//#######################################отрисовка графика
if(paus==0){
display.clearDisplay();
display.fillCircle(80,47-SinU/7, 2, BLACK);//рисуем уровень синхронизации
x=3;
for(int y=sinhMASS;y<sinhMASS+80;y++){
if(razv<7){x++;}
if(razv==7){x=x+2;}
if(razv==8){x=x+3;}
display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);
}
sinhMASS=0;}
if(paus==1){
display.clearDisplay();
display.drawLine(prokr/8,8,prokr/8+6,8, BLACK);//шкала прокрутки
display.drawLine(prokr/8,9,prokr/8+6,9, BLACK);//шкала прокрутки
x=3;
for(int y=prokr;y<prokr+80;y++){
if(razv<7){x++;}
if(razv==7){x=x+2;}
if(razv==8){x=x+3;}
display.drawLine(x, 47-mass[y]/7, x+1, 47-mass[y+1]/7, BLACK);
display.drawLine(x+1, 47-mass[y]/7+1, x+2, 47-mass[y+1]/7+1, BLACK);
}}
//#######################################отрисовка графика
for(byte i=47;i>5;i=i-7){display.drawPixel(0,i, BLACK);display.drawPixel(1,i, BLACK);display.drawPixel(2,i, BLACK);}//разметка экрана вертикальная
//////////////////////////////////////////////////сетка
for(byte i=47;i>5;i=i-3){display.drawPixel(21,i, BLACK);display.drawPixel(42,i, BLACK);display.drawPixel(63,i, BLACK);}
for(byte i=3;i<84;i=i+3){display.drawPixel(i,33, BLACK);display.drawPixel(i,19, BLACK);}
//////////////////////////////////////////////////сетка
//#######################################отрисовка menu
if(menu==0){
display.setCursor(0,0);
display.setTextColor(WHITE,BLACK);
if(opornoe==0){display.print(«1.1»);}
if(opornoe==1){display.print(VCC,1);}
display.setTextColor(BLACK);
display.print(» «);
display.print(razv);
display.print(» P»);
if(digitalRead(levo)==HIGH){opornoe=!opornoe;}
if(digitalRead(pravo)==HIGH){opornoe=!opornoe;}
}
if(menu==1){
display.setCursor(0,0);
display.setTextColor( BLACK);
if(opornoe==0){display.print(«1.1»);}
if(opornoe==1){display.print(VCC,1);}
display.setTextColor(WHITE, BLACK); // ‘inverted’ text
display.print(» «);
display.print(razv);
display.setTextColor( BLACK); // ‘inverted’ text
display.print(» P»);
if(digitalRead(levo)==HIGH){razv=razv-1;if(razv==255){razv=0;}}
if(digitalRead(pravo)==HIGH){razv=razv+1;if(razv==9){razv=8;}}
}
if(menu==2){
display.setCursor(0,0);
display.setTextColor( BLACK);
if(opornoe==0){display.print(«1.1»);}
if(opornoe==1){display.print(VCC,1);}
display.print(» «);
display.print(razv);
display.setTextColor(WHITE, BLACK); // ‘inverted’ text
display.print(» P»);
paus=1;
if(digitalRead(levo)==HIGH){prokr=prokr-10;if(prokr<0){prokr=0;}}
if(digitalRead(pravo)==HIGH){prokr=prokr+10;if(prokr>620){prokr=620;}}
}
if(menu==3){
prokr=0;
paus=0;
display.setCursor(0,0);
display.setTextColor( BLACK);
if(opornoe==0){display.print(«1.1»);}
if(opornoe==1){display.print(VCC,1);}
display.print(» «);
display.print(razv);
display.setTextColor(BLACK);
display.print(» P»);
if(digitalRead(levo)==HIGH){SinU=SinU-20;if(SinU<20){SinU=20;}}
if(digitalRead(pravo)==HIGH){SinU=SinU+20;if(SinU>230){SinU=230;}}
display.fillCircle(80,47-SinU/7, 5, BLACK);
display.fillCircle(80,47-SinU/7, 2, WHITE);
}
if(digitalRead(ok)==HIGH){menu++;if(menu==4){menu=0;paus=0;}}//перебор меню
if (FreqCount.available()) { count = FreqCount.read();}//вывод частоты по готовности счетчика
//#######################################частоты сигнала
byte Frec1=0;
long Frec=0;
bool flagFrec1=0;
bool flagFrec2=0;
bool flagFrec3=0;
for(int y=1;y<255;y++){
if(flagFrec1==0){if(mass[y]<SinU){flagFrec2=1;}}
if(flagFrec1==0){if(flagFrec2==1){if(mass[y]>SinU){flagFrec1=1;Frec1=y;}}}
if(flagFrec1==1){if(mass[y]<SinU){flagFrec3=1;}}
if(flagFrec3==1){if(mass[y]>SinU){
if (razv>=6){Frec=1000000/((y-Frec1-1)*3.27);}//delitel 4
if (razv==5){Frec=1000000/((y-Frec1)*3.27)/2;}//delitel 8
if (razv==4){Frec=1000000/((y-Frec1)*3.27)/4;}//delitel 16
if (razv==3){Frec=1000000/((y-Frec1)*3.27)/8;}//delitel 32
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/16;}//delitel 64
if (razv==2){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==1){Frec=1000000/((y-Frec1)*3.27)/32;}//delitel 128
if (razv==0){Frec=1000000/((y-Frec1)*500);}//delitel 128
flagFrec1=0;flagFrec3=0;}}}
//#######################################частоты сигнала
display.setTextColor( BLACK);
if(opornoe==1){
if((Vmax*VCC/255)>2.5){countX=count*(overclock/16.0);}
if((Vmax*VCC/255)<2.5){countX=Frec*(overclock/16.0);}}
if(opornoe==0){countX=Frec*(overclock/16.0);}
if(countX<1000){display.print(» «);display.print(countX);display.print(«Hz»);}
if(countX>1000){float countXK=countX/1000.0;display.print(countXK,1);display.print(«KHz»);}
if(opornoe==1){display.setCursor(0,40);display.setTextColor(BLACK);
display.print(Vmax*VCC/255,1);}
if(opornoe==0){display.setCursor(0,40);display.setTextColor(BLACK);
display.print(Vmax*1.1/255,1);}
display.print(«V»);
//#######################################отрисовка menu
delay(200);
display.display();
}
if(pultoskop==1){Generator();}
if(pultoskop==2){DDSGenerator();}
if(pultoskop==3){TTL();}
}
//#######################################режим ренератора
void Generator(){
display.clearDisplay();
if (flag==0){//флаг выборов режима настройки ШИМ или Частоты
if(digitalRead(levo)==HIGH){
frequency=frequency-mnog;
if(frequency<0){frequency=0;}
bool success = SetPinFrequencySafe(led, frequency);
delay(3);//защита от дребезга
}
if(digitalRead(pravo)==HIGH){
frequency=frequency+mnog;
bool success = SetPinFrequencySafe(led, frequency);
delay(3);//защита от дребезга
}
}
if (flag==1){//флаг выборов режима настройки ШИМ или Частоты
if(digitalRead(levo)==HIGH){
PWM=PWM-1;
if(PWM<0){PWM=255;}
delay(3);//защита от дребезга
}
if(digitalRead(pravo)==HIGH){
PWM=PWM+1;
if(PWM>255){PWM=0;}
delay(3);//защита от дребезга
}
}
if(digitalRead(ok)==HIGH){//переключение разряда выбора частоты
delay(3);//защита от дребезга
hag++;
if(hag>=5){hag=0;}
}
////////////
display.setTextSize(1);
display.setCursor(0,5);
display.print(«PWM=»);
display.print(PWM*100.0/255);
display.print(» %»);
display.drawLine(0,0,83*PWM/255.0,0, BLACK);
display.drawLine(0,1,83*PWM/255.0,1, BLACK);
display.drawLine(0,2,83*PWM/255.0,2, BLACK);
display.drawLine(0,15,83*PWM/255.0,15, BLACK);
display.drawLine(0,16,83*PWM/255.0,16, BLACK);
display.drawLine(0,17,83*PWM/255.0,17, BLACK);
///////////
display.setCursor(5,20);
display.setTextSize(2);
long frequencyX=frequency*(overclock/16.0);
if(frequencyX<1000){display.print(frequencyX);display.setTextSize(1);display.println(«Hz»);}
if(frequencyX>1000){if(frequencyX<10000){display.print((frequencyX/1000.0),2);display.setTextSize(1);display.println(«KHz»);}}
if(frequencyX>=10000){if(frequencyX<100000){display.print((frequencyX/1000.0),1);display.setTextSize(1);display.println(«KHz»);}}
if(frequencyX>=100000){display.print((frequencyX/1000.0),0);display.setTextSize(1);display.println(«KHz»);}
display.setCursor(0,40);
display.setTextSize(1);
display.print(«>>X «);
if(hag==0){//выбор множителя частоты
display.print(1*(overclock/16.0),1);
mnog=1;
flag=0;
}
if(hag==1){//выбор множителя частоты
display.print(10*(overclock/16.0),0);
mnog=10;
}
if(hag==2){//выбор множителя частоты
display.print(100*(overclock/16.0),0);
mnog=100;
}
if(hag==3){//выбор множителя частоты
display.print(1000*(overclock/16.0),0);
mnog=1000;
}
if(hag==4){//выбор PWM
display.print(«PWM «);
display.print(PWM*100.0/255);
display.print(«%»);
flag=1;
}
display.print(«<<«);
pwmWrite(led, PWM);
delay(300);
display.display();
}
/////////////////////DDS
void DDSGenerator(){
int fr=10;
if(menuDDS==0){
display.clearDisplay();
display.setTextColor(WHITE, BLACK); // ‘inverted’ text
display.setCursor(10,0);
display.println(«Синус»);
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println(«Треугольник»);
display.setCursor(10,20);
display.println(«Пила»);
display.setCursor(10,30);
display.println(«Пила Обр»);
display.setTextColor(BLACK);
display.setCursor(0,40);
//display.print(«Частота=»);
//display.print(57);
//display.print(«Гц»);
delay(100);
display.display();
while(D11_Read==LOW){
PWM=sinM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==1){
display.clearDisplay();
display.setTextColor(BLACK); // ‘inverted’ text
display.setCursor(10,0);
display.println(«Синус»);
display.setTextColor(WHITE, BLACK);
display.setCursor(10,10);
display.println(«Треугольник»);
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println(«Пила»);
display.setCursor(10,30);
display.println(«Пила Обр»);
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print(«Частота=»);
// display.print(57);
//display.print(«Гц»);
delay(100);
display.display();
while(D11_Read==LOW){
PWM=trianglM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==2){
display.clearDisplay();
display.setTextColor(BLACK); // ‘inverted’ text
display.setCursor(10,0);
display.println(«Синус»);
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println(«Треугольник»);
display.setTextColor(WHITE, BLACK);
display.setCursor(10,20);
display.println(«Пила»);
display.setTextColor(BLACK);
display.setCursor(10,30);
display.println(«Пила Обр»);
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print(«Частота=»);
// display.print(57);
//display.print(«Гц»);
delay(100);
display.display();
while(D11_Read==LOW){
PWM=pilaM[d];
pwmWrite(dds,PWM);
// delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==3){
display.clearDisplay();
display.setTextColor(BLACK); // ‘inverted’ text
display.setCursor(10,0);
display.println(«Синус»);
display.setTextColor(BLACK);
display.setCursor(10,10);
display.println(«Треугольник»);
display.setTextColor(BLACK);
display.setCursor(10,20);
display.println(«Пила»);
display.setTextColor(WHITE, BLACK);
display.setCursor(10,30);
display.println(«Пила Обр»);
display.setTextColor(BLACK);
//display.setCursor(0,40);
//display.print(«Частота=»);
// display.print(57);
// display.print(«Гц»);
delay(100);
display.display();
while(D11_Read==LOW){
PWM=RpilaM[d];
pwmWrite(dds,PWM);
//delayMicroseconds(fr);
d++;
if(d==32){d=0;}}
menuDDS++;
delay(200);}
if(menuDDS==4){menuDDS=0;}
}
/////////////////////DDS
/////////////////////TTL
void TTL(){
display.clearDisplay();
display.setTextColor(BLACK);
display.setCursor(10,0);
display.println(«Терминал»);
display.setCursor(10,10);
display.println(«Скорость»);
display.setCursor(10,20);
display.print(«-«);
display.print(speedTTL);
display.println(«+»);
display.setCursor(0,30);
display.println(«Нажми ОК-старт»);
if(digitalRead(pravo)==HIGH){speedTTL=speedTTL+100;}
if(digitalRead(levo)==HIGH){speedTTL=speedTTL-100;}
if(speedTTL<0){speedTTL=250000;}
if(speedTTL>250000){speedTTL=0;}
if(digitalRead(ok)==HIGH){Serial.begin(speedTTL*(16/overclock));
display.clearDisplay();
delay(100);
display.display();
int x=0;
int y=0;
while(1){
char incomingBytes;
if (Serial.available() > 0) { // Если в буфере есть данные
incomingBytes=Serial.read(); // Считывание байта в переменную incomeByte
display.setCursor(x,y);
display.print(incomingBytes); // Печать строки в буффер дисплея
display.display(); x=x+6;
if(x==84){x=0;y=y+8;}
if(y==48){x=0;y=0;
display.clearDisplay();
delay(100);
display.display();}}
}}
delay(100);
display.display();
}
/////////////////////TTL
[/code]
Может кто подправит экспорт бинарного файла
-
Взял уже готовый код, но он не хочет работать. Жалуется на строки: DallasTemperature sensors(&oneWire);
Сообщение об ошибке:
Arduino: 1.6.7 (Windows 10), Плата:»Arduino/Genuino Uno»C:UsersUserDocuments1sketchsketch.ino: In function ‘void loop()’:
sketch:74: error: ‘led1’ was not declared in this scope
digitalWrite (led1, HIGH);
^
sketch:78: error: ‘led1’ was not declared in this scope
digitalWrite(led1, LOW);
^
C:UsersUserDocuments1sketchsketch.ino: At global scope:
sketch:88: error: redefinition of ‘OneWire oneWire’
OneWire oneWire(ONE_WIRE_BUS);
^
sketch:7: error: ‘OneWire oneWire’ previously declared here
OneWire oneWire(ONE_WIRE_BUS);
^
sketch:89: error: redefinition of ‘DallasTemperature sensors’
DallasTemperature sensors(&oneWire);
^
sketch:8: error: ‘DallasTemperature sensors’ previously declared here
DallasTemperature sensors(&oneWire);
^
sketch:91: error: redefinition of ‘byte mac []’
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
^
sketch:10: error: ‘byte mac [6]’ previously defined here
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
^
sketch:93: error: redefinition of ‘EthernetClient client’
EthernetClient client;
^
sketch:12: error: ‘EthernetClient client’ previously declared here
EthernetClient client;
^
sketch:94: error: redefinition of ‘char server []’
char server[] = «*************»; // РёРјСЏ вашего сервера
^
sketch:13: error: ‘char server [14]’ previously defined here
char server[] = «*************»; // РёРјСЏ вашего сервера www.arduino.ru
^
sketch:95: error: redefinition of ‘int buff’
int buff=0;
^
sketch:14: error: ‘int buff’ previously defined here
int buff=0;
^
sketch:96: error: redefinition of ‘const int led’
const int led=5;
^
sketch:15: error: ‘const int led’ previously defined here
const int led=5;
^
C:UsersUserDocuments1sketchsketch.ino: In function ‘void setup()’:
sketch:98: error: redefinition of ‘void setup()’
void setup()
^
sketch:17: error: ‘void setup()’ previously defined here
void setup()
^
C:UsersUserDocuments1sketchsketch.ino: In function ‘void loop()’:
sketch:106: error: redefinition of ‘void loop()’
void loop()
^
sketch:25: error: ‘void loop()’ previously defined here
void loop()
^
sketch:155: error: ‘led1’ was not declared in this scope
digitalWrite (led1, HIGH);
^
sketch:159: error: ‘led1’ was not declared in this scope
digitalWrite(led1, LOW);
^
exit status 1
‘led1’ was not declared in this scopeКод программы:
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
EthernetClient client;
char server[] = «*************»; // имя вашего сервера www.arduino.ru
int buff=0;
const int led=5;void setup()
{
Ethernet.begin(mac);
sensors.begin();
pinMode( led, OUTPUT);
digitalWrite(led, LOW);
}void loop()
{
sensors.requestTemperatures();
if (client.connect(server, 80))
{client.print( «GET /add_data.php?»);
client.print(«temperature=»);
client.print( sensors.getTempCByIndex(0) );
client.print(«&»);
client.print(«&»);
client.print(«temperature1=»);
client.print( sensors.getTempCByIndex(1) );
client.println( » HTTP/1.1″);
client.print( «Host: » );
client.println(server);
client.println( «Connection: close» );
client.println();
client.println();delay(200);
while (client.available())
{
char c = client.read();
if ( c==’1′)
{
buff=1;
}
if ( c==’0′)
{
buff=0;
}
}
client.stop();
client.flush();
delay(100);
}
else
{
client.stop();
delay(1000);
client.connect(server, 80);
}if ( buff==1)
{
digitalWrite (led1, HIGH);
}
else
{
digitalWrite(led1, LOW);
}
delay(500);
}
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
EthernetClient client;
char server[] = «*************»; // имя вашего сервера
int buff=0;
const int led=5;void setup()
{
Ethernet.begin(mac);
sensors.begin();
pinMode( led, OUTPUT);
digitalWrite(led, LOW);
}void loop()
{
sensors.requestTemperatures();
if (client.connect(server, 80))
{client.print( «GET /add_data.php?»);
client.print(«temperature=»);
client.print( sensors.getTempCByIndex(0) );
client.print(«&»);
client.print(«&»);
client.print(«temperature1=»);
client.print( sensors.getTempCByIndex(1) );
client.println( » HTTP/1.1″);
client.print( «Host: » );
client.println(server);
client.println( «Connection: close» );
client.println();
client.println();delay(200);
while (client.available())
{
char c = client.read();
if ( c==’1′)
{
buff=1;
}
if ( c==’0′)
{
buff=0;
}
}
client.stop();
client.flush();
delay(100);
}
else
{
client.stop();
delay(1000);
client.connect(server, 80);
}if ( buff==1)
{
digitalWrite (led1, HIGH);
}
else
{
digitalWrite(led1, LOW);
}
delay(500);
} -
Так приятнее смотреть. Глаза не напрягаются:
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
EthernetClient client;
char server[] = «*************»; // имя вашего сервера www.arduino.ru
int buff=0;
const int led=5;void setup()
{
Ethernet.begin(mac);
sensors.begin();
pinMode( led, OUTPUT);
digitalWrite(led, LOW);
}void loop()
{
sensors.requestTemperatures();
if (client.connect(server, 80))
{client.print( «GET /add_data.php?»);
client.print(«temperature=»);
client.print( sensors.getTempCByIndex(0) );
client.print(«&»);
client.print(«&»);
client.print(«temperature1=»);
client.print( sensors.getTempCByIndex(1) );
client.println( » HTTP/1.1″);
client.print( «Host: « );
client.println(server);
client.println( «Connection: close» );
client.println();
client.println();delay(200);
while (client.available())
{
char c = client.read();
if ( c==‘1’)
{
buff=1;
}
if ( c==‘0’)
{
buff=0;
}
}
client.stop();
client.flush();
delay(100);
}
else
{
client.stop();
delay(1000);
client.connect(server, 80);
}if ( buff==1)
{
digitalWrite (led1, HIGH);
}
else
{
digitalWrite(led1, LOW);
}
delay(500);
}
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };
EthernetClient client;
char server[] = «*************»; // имя вашего сервера
int buff=0;
const int led=5;void setup()
{
Ethernet.begin(mac);
sensors.begin();
pinMode( led, OUTPUT);
digitalWrite(led, LOW);
}void loop()
{
sensors.requestTemperatures();
if (client.connect(server, 80))
{client.print( «GET /add_data.php?»);
client.print(«temperature=»);
client.print( sensors.getTempCByIndex(0) );
client.print(«&»);
client.print(«&»);
client.print(«temperature1=»);
client.print( sensors.getTempCByIndex(1) );
client.println( » HTTP/1.1″);
client.print( «Host: « );
client.println(server);
client.println( «Connection: close» );
client.println();
client.println();delay(200);
while (client.available())
{
char c = client.read();
if ( c==‘1’)
{
buff=1;
}
if ( c==‘0’)
{
buff=0;
}
}
client.stop();
client.flush();
delay(100);
}
else
{
client.stop();
delay(1000);
client.connect(server, 80);
}if ( buff==1)
{
digitalWrite (led1, HIGH);
}
else
{
digitalWrite(led1, LOW);
}
delay(500);
} -
Объявите все переменные, которые вы использовали. Пока у меня нет времени… Может кто другой найдется. Вот статья: http://arduino.ru/Tutorial/Variables
-
Первая ошибка 74 строка кода led1 от куда? Было led Копируете текст ошибок и в переводчик более понятно становиться
СОДЕРЖАНИЕ ►
- Произошла ошибка при загрузке скетча в Ардуино
- programmer is not responding
- a function-definition is not allowed arduino ошибка
- expected initializer before ‘}’ token arduino ошибка
- ‘что-то’ was not declared in this scope arduino ошибка
- No such file or directory arduino ошибка
- Compilation error: Missing FQBN (Fully Qualified Board Name)
Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.
Произошла ошибка при загрузке скетча Ардуино
Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).
avrdude: stk500_recv(): programmer is not responding
Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.
Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».
a function-definition is not allowed here before ‘{‘ token
Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.
expected initializer before ‘}’ token / expected ‘;’ before ‘}’ token
Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.
‘что-то’ was not declared in this scope
Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.
Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.
exit status 1 ошибка компиляции для платы Arduino
Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.
Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.
missing fqbn (fully qualified board name)
Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.
СОДЕРЖАНИЕ ►
- Произошла ошибка при загрузке скетча в Ардуино
- programmer is not responding
- a function-definition is not allowed arduino ошибка
- expected initializer before ‘}’ token arduino ошибка
- ‘что-то’ was not declared in this scope arduino ошибка
- No such file or directory arduino ошибка
- Compilation error: Missing FQBN (Fully Qualified Board Name)
Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.
Произошла ошибка при загрузке скетча Ардуино
Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).
avrdude: stk500_recv(): programmer is not responding
Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.
Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».
a function-definition is not allowed here before ‘{‘ token
Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.
expected initializer before ‘}’ token / expected ‘;’ before ‘}’ token
Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.
‘что-то’ was not declared in this scope
Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.
Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.
exit status 1 ошибка компиляции для платы Arduino
Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.
Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.
missing fqbn (fully qualified board name)
Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.
TROUBLESHOOTING SOLUTIONS: CODE PROBLEMS, COMPILE ERRORS
Compile errors are errors that happen when you attempt to compile your code and the Arduino software (the compiler) finds an error in it. If you receive an error when you attempt to compile and upload your code, you know you have either a compile error or an upload error.
symptoms
If you’re not sure if you have a compile error or an upload error, scroll to the top of the black area at the bottom of the Arduino window. If you see the name of your program followed by .ino in orange text at the top of the box, you know you have a compile error (below, top). If you see a message in white text at the top of the box that looks something like “Binary sketch size: 4,962 bytes (of a 30,720 byte maximum)” you know that you have an upload error (below, bottom).
COMPILE ERROR:
A FUNCTION-DEFINITION IS NOT ALLOWED HERE BEFORE ‘{’ TOKEN
Blink.ino: In function ‘void setup()’:
Blink:19: a function-definition is not allowed here before ‘{’ token
Blink:24: error: expected ‘}’ at end of input
UPLOAD ERROR:
SERIAL PORT ‘/DEV/TTY.BLUETOOTH-MODEM’ ALREADY IN USE. TRY QUITTING ANY PROGRAMS THAT…
Binary sketch size: 4,962 bytes (of a 30,720 byte maximum)
processing.app.SerialException: Serial port ‘/dev/tty.Bluetooth-Modem’ already in use. … uiting any programs that may at processing.app.Serial.(Serial.java:171)
at processing.app.Serial.(Serial.java:77)
finding compile errors in your code
Compile errors often occur because of missing or incorrect punctuation, misspellings, and mis-capitalizations. They will also occur if you attempt to use a variable you have not initialized at the top of your program or if there is extra text anywhere in your program. If you get a compile error, begin by carefully reading the error messages in the feedback area of the Arduino window for clues. Investigate your code around the location that the Arduino software highlights or jumps to. If you cannot see any problems in that area, carefully read through your entire program line by line, looking for the problems described in this section.
the rest of this section
The next few pages explore common code mistakes (the ones listed below) and the compile errors they generate, along with tips on how to find and fix these problems.
Each section begins with examples of problematic pieces of code. The location of the problem is highlighted in yellow. Below each code example is an example of the kind of error you might receive if you made a similar mistake in your code. This is followed by advice on finding and fixing similar errors.
COMPILE ERRORS COVERED IN THIS SECTION
• missing semicolons
• missing curly brackets
• missing parentheses
• missing commas
• misspellings and mis-capitalizations
• missing variable initializations
• random extra text in program
MISSING SEMICOLONS ;
symptoms
Error messages for missing semicolons are relatively straightforward. In each error message, either in the orange or the black feedback area, there is a line that says: error: expected ‘;’ before… This is an indication that you’re missing a semicolon. The Arduino software will usually highlight the line immediately after the missing semicolon to indicate the location of your error.
int led = 13_ void setup() { pinMode(led, OUTPUT); }
EXPECTED UNQUALIFIED-ID BEFORE NUMERIC CONSTANT
Blink:11: error: expected unqualified-id before numeric constant
Blink:13: error: expected ‘,’ or ‘;’ before ‘void’
void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000)_ }
EXPECTED ‘,’ OR ‘;’ BEFORE ‘}’ TOKEN
Blink.ino: In function ‘void loop()’:
Blink:24: error: expected `;’ before ‘}’ token
if (touchValue > 1) { tone(speaker, C)_ delay(100); }
EXPECTED ‘,’ OR ‘;’ BEFORE ‘DELAY’
piano.ino: In function ‘void checkPianoKey(int, int)’:
piano:37: error: expected `;’ before ‘delay’
FIX MISSING SEMICOLONS ;
Look for instances of error: expected ‘;’ in your error. Look for similarities between your error and the ones above. Replace the missing semicolon and recompile your code. If the missing semicolon was the only compile error in your program, your code will now compile. If you have additional errors, you will get a new error message with information about the next error in your program.
MISSING CURLY BRACKETS { }
symptoms
These error messages are often confusing and cryptic. Most will say something about either a ‘{’ or ‘}’ somewhere in the orange or black feedback area. The Arduino software will sometimes highlight the line immediately after the missing curly bracket to indicate the location of your error. Sometimes, unfortunately, it will highlight a completely unrelated line.
void setup() { pinMode(led, OUTPUT); _
A FUNCTION-DEFINITION IS NOT ALLOWED HERE BEFORE ‘{’ TOKEN
Blink.ino: In function ‘void setup()’:
Blink:19: a function-definition is not allowed here before ‘{’ token
Blink:24: error: expected ‘}’ at end of input
void setup()_ pinMode(led, OUTPUT); }
EXPECTED INITIALIZER BEFORE ‘PINMODE’
Blink:16: error: expected initializer before ‘pinMode’
Blink:17: error: expected declaration before ‘}’ token
if (touchValue > 1) _ tone(speaker, C); delay(100); }
EXPECTED UNQUALIFIED-ID BEFORE ‘ELSE’
piano:18: error: expected unqualified-id before ‘else’
piano:19: error: expected unqualified-id before ‘else’
piano:20: error: expected unqualified-id before ‘else’
piano:21: error: expected unqualified-id before ‘else’
piano:39: error: expected unqualified-id before ‘else’
piano:43: error: expected declaration before ‘}’ token
FIX MISSING CURLY BRACKETS { }
Look for mentions of ‘{’ or ‘}’ in your errors. Look for similarities between your error and the ones above. Replace the missing bracket and recompile your code. If you have no additional compile errors in your code, your code will compile successfully, otherwise you’ll get a new error message with information about the next error in your program.
MISSING PARENTHESES ( )
symptoms
These error messages are often confusing and cryptic. Some, but not all, will mention a ‘(’ or ‘)’ token in either the orange or black feedback area. The Arduino software will sometimes highlight the line with the missing parenthesis to indicate the location of your error, but sometimes it will highlight an unrelated line.
void setup(_{ pinMode(led, OUTPUT); }
VARIABLE OR FIELD ‘SETUP’ DECLARED VOID
Blink:14: error: variable or field ‘setup’ declared void
Blink:14: error: expected primary-expression before ‘{‘ token
void loop() { digitalWrite(led, HIGH); delay(1000_; digitalWrite(led, LOW); delay(1000); }
EXPECTED ‘)’ BEFORE ‘;’ TOKEN
Blink.ino: In function ‘void loop()’:
Blink:22: error: expected `)’ before ‘;’ token
void checkPianoKey (int key, int note_{ touchValue = readCapacitivePin(key); Serial.print(touchValue); Serial.print("t"); ...
‘CHECKPIANOKEY’ WAS NOT DECLARED IN THIS SCOPE
piano.ino: In function ‘void loop()’:
piano:23: error: ‘checkPianoKey’ was not declared in this scope
piano.ino: At global scope:
piano:30: error: expected `)’ before ‘{‘ token
FIX MISSING PARENTHESIS ( )
Look for mentions of ‘(’ or ‘)’ in your errors. Look for similarities between your error and the ones above. Replace the missing parenthesis and recompile your code. If you have no additional compile errors in your code, your code will compile successfully, otherwise you’ll get a new error message with information about the next error in your program.
MISSING COMMAS ,
symptoms
These error messages are often confusing and cryptic. Very few will mention a comma in the orange or black feedback area. The Arduino software will usually highlight the line with the missing comma to indicate the location of your error.
void setup() { pinMode(led_OUTPUT); }
EXPECTED `)’ BEFORE NUMERIC CONSTANT
Blink.ino: In function ‘void setup()’:
Blink:16: error: expected `)’ before numeric constant
/Applications/Arduino.app/Contents/Resources/Java/…
Blink:16: error: at this point in file
while (i < numberOfKeys) { checkPianoKey(keys[i]_notes[i]); i = i+1; }
EXPECTED ‘)’ BEFORE ‘NOTES’
piano.ino: In function ‘void loop()’:
piano:23: error: expected `)’ before ‘notes’
piano:4: error: too few arguments to function
‘void checkPianoKey(int, int)’
piano:23: error: at this point in file
const int numberOfKeys = 7; int keys[numberOfKeys] = { 6, 9_10, 11, A2, A3, A4 };
EXPECTED ‘}’ BEFORE NUMERIC CONSTANT
piano:2: error: expected `}’ before numeric constant
piano:2: error: expected ‘,’ or ‘;’ before numeric constant
piano:2: error: expected declaration before ‘}’ token
FIX MISSING COMMAS ,
Look for similarities between your error and the ones above. Replace the missing comma and recompile your code. If you have no additional compile errors in your code, your code will compile successfully, otherwise you’ll get a new error message with information about the next error in your program.
MISSPELLINGS AND MIS-CAPITALIZATIONS
symptoms
Error messages for misspellings and mis-capitalizations are some of the clearest and most helpful you’ll encounter. All take the form of ‘word with error’ was not declared in this scope. The Arduino software will almost always highlight the line with the misspelling or mis-capitalization to indicate the location of your error. Also, if you have misspelled one of the built-in Arduino procedures or variables, the color of the misspelled or mis-capitalized word will change from orange or blue to black, giving you another valuable clue about the cause of the error.
void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); dellay(1000); }
‘DELLAY’ WAS NOT DECLARED IN THIS SCOPE
Blink.cpp: In function ‘void loop():
Blink:21: error: ’dellay’ was not declared in this scope
void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, low); delay(1000); }
‘LOW’ WAS NOT DECLARED IN THIS SCOPE
Blink.ino: In function ‘void loop()’:
Blink:23: error: ‘low’ was not declared in this scope
if (touchValue < 1000) { Song(2000); }
‘SONG’ WAS NOT DECLARED IN THIS SCOPE
monster.ino: In function ‘void loop()’:
monster:29: error: ‘Song’ was not declared in this scope
FIX MISSPELLINGS AND MIS-CAPITALIZATIONS
Look for errors of the form ‘word with error’ was not declared in this scope. Correct the misspelling or mis-capitalization and recompile your code. If you have no additional compile errors in your code, your code will compile successfully, otherwise you’ll get a new error message with information about the next error in your program.
MISSING VARIABLE DEFINITIONS
symptoms
Errors for missing variable definitions are fairly clear. All take the form of ‘missing variable’ was not declared in this scope. The Arduino software will highlight the first line in your program that uses the missing variable. For example, in the code below (top), Arduino will highlight the pinMode(led, OUTPUT); line when you attempt to compile the code since it is the first line that uses the missing variable led.
// missing int led=13; line void setup() pinMode(led, OUTPUT); }
‘LED’ WAS NOT DECLARED IN THIS SCOPE
Blink.ino: In function ‘void setup()’:
Blink:4: error: ‘led’ was not declared in this scope
Blink.ino: In function ‘void loop()’:
Blink:9: error: ‘led’ was not declared in this scope
// missing const int numberOfKeys = 7; line int keys[numberOfKeys] = { 6, 9, 10, 11, A2, A3, A4 };
‘NUMBEROFKEYS’ WAS NOT DECLARED IN THIS SCOPE
piano:2: error: ‘numberOfKeys’ was not declared in this scope
piano:3: error: ‘numberOfKeys’ was not declared in this scope
piano.ino: In function ‘void setup()’:
piano:11: error: ‘numberOfKeys’ was not declared in this scope
…
int led = A4; int speaker = 5; // missing int aluminumFoil=A2; line int sensorValue;
‘ALUMINUMFOIL’ WAS NOT DECLARED IN THIS SCOPE
monster.ino: In function ‘void setup()’:
monster:18: error: ‘aluminumFoil’ was not declared in this scope
monster.ino: In function ‘void loop()’:
monster:24: error: ‘aluminumFoil’ was not declared in this scope
FIX MISSING VARIABLE DEFINITIONS
If you receive errors in the form of ‘missing variable’ was not declared in this scope, check for missing or misspelled variable definitions at the top of your code. Correct or add the necessary definitions. Once you fix the problem, if you have no additional compile errors in your code, your code will compile successfully. Otherwise, you’ll get a new error message with information about the next error in your program.
RANDOM EXTRA TEXT IN PROGRAM
symptoms
Errors for extra text in your program can be confusing, but Arduino will usually highlight the line where the extra text is, making these problems easier to find. A common extra text error is a mistyped comment—a comment that is missing a ‘/’, ‘/*’ or ‘*/’. An example of this kind of error is shown below in the middle. Here the comment is missing one of its beginning slash ‘/’ characters. If you have a mistyped comment, its color will be black instead of grey, giving you a clue to the problem.
void loop() { digitalWrite(led, HIGH); x delay(1000); digitalWrite(led, LOW); delay(1000); }
‘X’ WAS NOT DECLARED IN THIS SCOPE
Blink.ino: In function ‘void loop()’:
Blink:9: error: ‘x’ was not declared in this scope
Blink:10: error: expected `;’ before ‘delay’
void setup() { / set all keys to be inputs int i = 0; while (i < numberOfKeys) { ...
EXPECTED PRIMARY-EXPRESSION BEFORE ‘/’ TOKEN
piano.ino: In function ‘void setup()’:
piano:9: error: expected primary-expression before ‘/’ token
piano:9: error: ‘set’ was not declared in this scope
piano:9: error: expected `;’ before ‘all’
piano:11: error: ‘i’ was not declared in this scope
void song(int duration) { tone(speaker, C); delay(duration); tone(speaker, D)k; delay(duration); }
EXPECTED ‘;’ BEFORE ‘K’
monster.ino: In function ‘void song(int)’:
monster:40: error: expected `;’ before ‘k’
FIX RANDOM EXTRA TEXT IN PROGRAM
Correct your mistyped comment or remove the extra text from your code. When you recompile, if you have no additional compile errors, your code will compile successfully. If you have additional issues you’ll get a new error message with information about the next thing you need to fix.
Синтаксические ошибки
Первые ошибки, которые определяются отладчиком – это синтаксические ошибки. Их же легче всего исправить. Неправильный синтаксис в Arduino IDE выделяется строкой, в которой допущена неточность. Нужно разобраться – это ошибка в написании служебного слова, случайно удалена важная функция, не хватает закрывающейся скобки или неправильно отделены комментарии.
Для определения ошибки внимательно просмотрите строку-подсказку и внесите необходимые изменения. Ниже мы приведем примеры наиболее часто встречающихся синтаксических ошибок компиляции кода:
- Ошибка “expected initializer before ‘}’ token” говорит о том, что случайно удалена или не открыта фигурная скобка.
- Ошибка “a function-definition is not allowed here before ‘{‘ token” – аналогичная предыдущей и указывает на отсутствие открывающейся скобки, например, открывающих скобок в скетче только 11, а закрывающих 12.
- Уведомление об ошибке “undefined reference to “setup” получите в случае переименования или удаления функции “setup”.
- Ошибка “undefined reference to “loop” – возникает в случае удаления функции loop. Без команд этой функции компилятор запустить программу не сможет. Для устранения надо вернуть каждую из команд на нужное место в скетче.
- Ошибка “… was not declared in this scope” обозначает, что в программном коде обнаружены слова, которые написаны с ошибкой (например, которые обозначают какую-то функцию) или найдены необъявленные переменные, методы. Подобная ошибка возникает также в случае случайного удаления значка комментариев и текст, который не должен восприниматься как программа, читается IDE.
Ошибки библиотек
Большое количество ошибок возникает на уровне подключения библиотек или неправильного их функционирования. Наиболее известные:
- “fatal error: … No such file or directory”. Такое сообщение вы получите, если необходимую в скетче библиотеку вы не записали в папку libraries. Сообщение об ошибке в одном из подключенных файлов может означать, что вы используете библиотеку с ошибками или библиотеки не совместимы. Решение – обратиться к разработчику библиотеки или еще раз проверить правильность написанной вами структуры.
- “redefinition of void setup” – сообщение возникает, если автор библиотеки объявил функции, которые используются и в вашем коде. Чтобы исправить – переименуйте свои методы или в библиотеке.
Ошибки компилятора
Нестабильность в работе самого компилятора тоже могут возникать при отладке программы. Вариантов выхода из данной ситуации может быть несколько, например, установить последнюю версию компилятора. Иногда решением может быть наоборот, возвращение до более старой версии. Тогда используемая библиотека может работать корректно.
Ошибки компиляции при работе с разными платами — Uno, Mega и Nano
В Arduino можно писать программы под разные варианты микроконтроллеров. По умолчанию в меню выбрана плата Arduino/Genuino Uno. Если забудете о том что нужно указать нужную плату – в вашем коде будут ссылки на методы или переменные, не описанные в конфигурации “по умолчанию”.
Вы получите ошибку при компиляции “programmer is not responding”. Чтобы исправить ее – проверьте правильность написания кода в части выбора портов и вида платы. Для этого в Ардуино IDE в меню «Сервис» выберите плату. Аналогично укажите порт в меню “Сервис” – пункт «Последовательный порт».
Ошибка exit status 1
В среде разработки такое сообщение можно увидеть во многих случаях. И хотя в документации данная ошибка указывается как причина невозможности запуска IDE Аrduino в нужной конфигурации, на самом деле причины могут быть и другие. Для того, чтобы найти место, где скрывается эта ошибка можно “перелопатить” действительно много. Но все же стоит сначала проверить разрядность системы и доступные библиотеки.
Обновления и исправления касательно версий инструкции и ПО
Рассмотрим в этой статье возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.
Ошибка: avrdude: stk500_recv(): programmer is not responding
Первым делом обратите внимание какую плату вы используете и к какому порту она подключена. Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже. Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM…».
Ошибка: a function-definition is not allowed here before ‘{‘ token
Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.
Ошибка: expected initializer before ‘}’ token / expected ‘;’ before ‘}’ token
Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.
Ошибка: ‘ ‘ was not declared in this scope
Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.
Ошибка: No such file or directory / exit status 1
Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.