ПОМОГИТЕ!!! не знаю где ошибки

Trump123
Offline
Зарегистрирован: 24.11.2016
Здрасвуйте, выдает ошибку 
AMERICA:21: error: 'NONE_D4' was not declared in this scope
AMERICA:21: error: expected `}' before numeric constant
AMERICA:21: error: expected ',' or ';' before numeric constant
AMERICA:27: error: expected declaration before '}' token
не знаю как боротьса(буква йа не работает).
Помогите пожалуйста!!
 
 
 
 
 
*/
 #include "pitches.h"
 
// notes in the melody:
int melody[] = {NOTE_F4, NONE_D4, NOTE_C3, NOTE_D4  NOTE_C4, NOTE_F4, NOTE_D3, NOTE_H3, NOTE_D4, NOTE_D6, NOTE_C6, NOTE_D4, NOTE_H4 ,NOTE_D4, NOTE_E4, NOTE_F3, NOTE_F7, NOTE_F7, NOTE_F4,
NOTE_D7, NONE_F4, NOTE_C7, NOTE_F4, NOTE_H4, NOTE_F3, NOTE_A3, NOTE_G4, NOTE_A4, NOTE_F3, NOTE_H4, NOTE_H4, NONE_F4, NOTE_D6, NOTE_C3, NOTE_F4, NOTE_D3, NOTE_C4, NOTE_D5, NOTE_C3, NOTE_F4,
NOTE_D3, NOTE_H3, NOTE_D4, NOTE_C7, NOTE_H4, NOTE_D4, NOTE_H3, NOTE_D4, NOTE_E5, NOTE_F3, NOTE_F7, NOTE_F7, NOTE_F4, NOTE_D8, NOTE_F4, NOTE_C7, NOTE_F5, NOTE_H4, NOTE_F3, NOTE_G6, NOTE_G4,
NOTE_A4, NOTE_F4, NOTE_H4, NOTE_H3, NOTE_F3, NOTE_D1, NOTE_C4, NOTE_C7, NOTE_C1, NOTE_A4, NOTE_C1, NOTE_H3, NOTE_C1, NOTE_C8, NOTE_G9, NOTE_G3, NOGE_C8, NOTE_C8, NOTE_F7, NOTE_H6, NOTE_C7,
NOTE_A4, NOTE_H5, NOTE_H7, NOTE_B6, NOTE_F7, NOTE_C7, NOTE_D8, NOTE_F4, NOTE_D7, NOTE_B6, NOTE_D7, NOTE_F4, NOTE_C7, NOTE_F4, NOTE_H4, NOTE_F3, NOTE_F7, NOTE_D4, NOTE_B6, NOTE_C7, NOTE_G4,
NOTE_C7, NOTE_F3, NOTE_F4, NOTE_F3, NOTE_B6, NOTE_C7, NOTE_B6, NOTE_A5, NOTE_E6, NOTE_E5, NOTE_G7, NOTE_G4, NOTE_E8, NOTE_D7, NOTE_C6, NOTE_C5, NOTE_B6, NOTE_F4, NOTE_F7, NOTE_F4, NOTE_B6,
NOTE_C7, NOTE_D8, NOTE_E9, NOTE_F8, NOTE_C7, NOTE_D7, NOTE_B6, NOTE_B8, NOTE_F7, NOTE_B6};
 
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {4,4, 2,4,4,4,4,5,6,7,4,5,5, 4,4, 4,4, 6,4, 6,8,4,4, 7,4, 5,3,4,8,5,4,5,4,5,6,5,4,4,5,4,4,4,7,4,5,4,5,6,4,5,5,2,6,7,4,4,5,6,6,5,5,6,6,5,7,8,4,6,5,5,5,4,5,6,6,4,5,5,4,6,6,7,4,5,5,5,
8,6,4,6,6,4,5,5,5,6,10,5,4,4,5,5,3,3,3,3,5,3,4,4,4,4,9,4,4,5,10,5,6,7,5,7,4,9,,5,4,6,7,4,4,4,4,4,5,6,7,4,4,3,4
   };
 
void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 141; thisNote++) {
 
    // to calculate the note duration, take one second 
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);
 
    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(141);
  }
}
 
void loop() {
  // no need to repeat the melody.
}
Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015
 #include "pitches.h"
 
// notes in the melody:
int melody[] = {NOTE_F4, NONE_D4, NOTE_C3, NOTE_D4,  NOTE_C4, NOTE_F4, NOTE_D3, NOTE_H3, NOTE_D4, NOTE_D6, NOTE_C6, NOTE_D4, NOTE_H4 ,NOTE_D4, NOTE_E4, NOTE_F3, NOTE_F7, NOTE_F7, NOTE_F4,
NOTE_D7, NONE_F4, NOTE_C7, NOTE_F4, NOTE_H4, NOTE_F3, NOTE_A3, NOTE_G4, NOTE_A4, NOTE_F3, NOTE_H4, NOTE_H4, NONE_F4, NOTE_D6, NOTE_C3, NOTE_F4, NOTE_D3, NOTE_C4, NOTE_D5, NOTE_C3, NOTE_F4,
NOTE_D3, NOTE_H3, NOTE_D4, NOTE_C7, NOTE_H4, NOTE_D4, NOTE_H3, NOTE_D4, NOTE_E5, NOTE_F3, NOTE_F7, NOTE_F7, NOTE_F4, NOTE_D8, NOTE_F4, NOTE_C7, NOTE_F5, NOTE_H4, NOTE_F3, NOTE_G6, NOTE_G4,
NOTE_A4, NOTE_F4, NOTE_H4, NOTE_H3, NOTE_F3, NOTE_D1, NOTE_C4, NOTE_C7, NOTE_C1, NOTE_A4, NOTE_C1, NOTE_H3, NOTE_C1, NOTE_C8, NOTE_G9, NOTE_G3, NOGE_C8, NOTE_C8, NOTE_F7, NOTE_H6, NOTE_C7,
NOTE_A4, NOTE_H5, NOTE_H7, NOTE_B6, NOTE_F7, NOTE_C7, NOTE_D8, NOTE_F4, NOTE_D7, NOTE_B6, NOTE_D7, NOTE_F4, NOTE_C7, NOTE_F4, NOTE_H4, NOTE_F3, NOTE_F7, NOTE_D4, NOTE_B6, NOTE_C7, NOTE_G4,
NOTE_C7, NOTE_F3, NOTE_F4, NOTE_F3, NOTE_B6, NOTE_C7, NOTE_B6, NOTE_A5, NOTE_E6, NOTE_E5, NOTE_G7, NOTE_G4, NOTE_E8, NOTE_D7, NOTE_C6, NOTE_C5, NOTE_B6, NOTE_F4, NOTE_F7, NOTE_F4, NOTE_B6,
NOTE_C7, NOTE_D8, NOTE_E9, NOTE_F8, NOTE_C7, NOTE_D7, NOTE_B6, NOTE_B8, NOTE_F7, NOTE_B6};
 
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {4,4, 2,4,4,4,4,5,6,7,4,5,5, 4,4, 4,4, 6,4, 6,8,4,4, 7,4, 5,3,4,8,5,4,5,4,5,6,5,4,4,5,4,4,4,7,4,5,4,5,6,4,5,5,2,6,7,4,4,5,6,6,5,5,6,6,5,7,8,4,6,5,5,5,4,5,6,6,4,5,5,4,6,6,7,4,5,5,5,
8,6,4,6,6,4,5,5,5,6,10,5,4,4,5,5,3,3,3,3,5,3,4,4,4,4,9,4,4,5,10,5,6,7,5,7,4,9,,5,4,6,7,4,4,4,4,4,5,6,7,4,4,3,4
   };
 
void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 141; thisNote++) {
 
    // to calculate the note duration, take one second 
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);
 
    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(141);
  }
}
 
void loop() {
  // no need to repeat the melody.
}

а так ?

 

Trump123
Offline
Зарегистрирован: 24.11.2016

Не , еще больший список ошибок выдает:

sketch_nov24b:2: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:2: error: 'NONE_D4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_C3' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_C4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_D3' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_H3' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_D6' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_C6' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_E4' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:2: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_D7' was not declared in this scope
sketch_nov24b:3: error: 'NONE_F4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_A3' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_G4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_A4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:3: error: 'NONE_F4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_D6' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_C3' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_D3' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_C4' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_D5' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_C3' was not declared in this scope
sketch_nov24b:3: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_D3' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_H3' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_H3' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_E5' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_D8' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F5' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_G6' was not declared in this scope
sketch_nov24b:4: error: 'NOTE_G4' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_A4' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_H3' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_D1' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C4' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C1' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_A4' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C1' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_H3' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C1' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C8' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_G9' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_G3' was not declared in this scope
sketch_nov24b:5: error: 'NOGE_C8' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C8' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_H6' was not declared in this scope
sketch_nov24b:5: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_A4' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_H5' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_H7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_D8' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_D7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_D7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_H4' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_D4' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:6: error: 'NOTE_G4' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_F3' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_A5' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_E6' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_E5' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_G7' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_G4' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_E8' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_D7' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_C6' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_C5' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_F4' was not declared in this scope
sketch_nov24b:7: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_D8' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_E9' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_F8' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_C7' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_D7' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_B8' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_F7' was not declared in this scope
sketch_nov24b:8: error: 'NOTE_B6' was not declared in this scope
sketch_nov24b:11: error: expected primary-expression before ',' token
Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

а библиотеку pitches.h подключили?

Trump123
Offline
Зарегистрирован: 24.11.2016

все, сам разобралса(буква эта досих пор не работает), вот, што полуилось, можите посмотреть (послушать) как а создавал гимн Америки:

 #include "pitches.h"
 
// notes in the melody:
int melody[] = {
NOTE_F4, NOTE_C3, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_D3, NOTE_B3, NOTE_D4, NOTE_D6, NOTE_C6, NOTE_D4, NOTE_B4, NOTE_D4, NOTE_E4, NOTE_F3, NOTE_F7, NOTE_F7, NOTE_F4,
NOTE_D7, NOTE_F4, NOTE_C7, NOTE_F4, NOTE_B4, NOTE_F3, NOTE_A3, NOTE_G4, NOTE_A4, NOTE_F3, NOTE_B4, NOTE_B4, NOTE_F4, NOTE_D6, NOTE_C3, NOTE_F4, NOTE_D3, NOTE_C4, NOTE_D5, NOTE_C3, NOTE_F4,
NOTE_D3, NOTE_B3, NOTE_D4, NOTE_C7, NOTE_B4, NOTE_D4, NOTE_B3, NOTE_D4, NOTE_E5, NOTE_F3, NOTE_F7, NOTE_F7, NOTE_F4, NOTE_D8, NOTE_F4, NOTE_C7, NOTE_F5, NOTE_B4, NOTE_F3, NOTE_G6, NOTE_G4,
NOTE_A4, NOTE_F4, NOTE_B4, NOTE_B3, NOTE_F3, NOTE_D1, NOTE_C4, NOTE_C7, NOTE_C1, NOTE_A4, NOTE_C1, NOTE_B3, NOTE_C1, NOTE_C8, NOTE_G7, NOTE_G3, NOTE_C8, NOTE_C8, NOTE_F7, NOTE_B6, NOTE_C7,
NOTE_A4, NOTE_B5, NOTE_B7, NOTE_B6, NOTE_F7, NOTE_C7, NOTE_D8, NOTE_F4, NOTE_D7, NOTE_B6, NOTE_D7, NOTE_F4, NOTE_C7, NOTE_F4, NOTE_B4, NOTE_F3, NOTE_F7, NOTE_D4, NOTE_B6, NOTE_C7, NOTE_G4,
NOTE_C7, NOTE_F3, NOTE_F4, NOTE_F3, NOTE_B6, NOTE_C7, NOTE_B6, NOTE_A5, NOTE_E6, NOTE_E5, NOTE_G7, NOTE_G4, NOTE_E7, NOTE_D7, NOTE_C6, NOTE_C5, NOTE_B6, NOTE_F4, NOTE_F7, NOTE_F4, NOTE_B6,
NOTE_C7, NOTE_D8, NOTE_E7, NOTE_F7, NOTE_C7, NOTE_D7, NOTE_B6, NOTE_B7, NOTE_F7, NOTE_B6};
 
// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
 4,4, 2,4,4,4,5,6,7,4,5,5, 4,4, 4,4, 6,4, 6,8,4,4, 7,4, 5,3,4,8,5,4,5,4,5,6,5,4,4,5,4,4,4,7,4,5,4,5,6,4,5,5,2,6,7,4,4,5,6,6,5,5,6,6,5,7,8,4,6,5,5,5,4,5,6,6,4,5,5,4,6,6,7,4,5,5,5,
8,6,4,6,6,4,5,5,5,6,10,5,4,4,5,5,3,3,3,3,5,3,4,4,4,4,9,4,4,5,10,5,6,7,5,7,4,9,5,4,6,7,4,4,4,4,4,5,6,7,4,4,3,4 };
 
void setup() {
  // iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 140; thisNote++) {
 
    // to calculate the note duration, take one second 
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000/noteDurations[thisNote];
    tone(8, melody[thisNote],noteDuration);
 
    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(140);
  }
}
 
void loop() {
  // no need to repeat the melody.
}
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А на хрена нам гимн америки?

OlegK
OlegK аватар
Offline
Зарегистрирован: 26.11.2014

Так он же этот - Трамп, типо...

Luk
Offline
Зарегистрирован: 15.09.2016

Добрый день. Помогите разобраться с ошибками компиляции. Скетч переделывал уже из готового, внес пару параметров и не могу скомпилировать, ошибки вылазят там где их не было в исходном коде.

Вот сами ошибки: 

C:\Users\Сергей\Desktop\end_home_control\end_home_control.ino: In function 'void ParseSMS(String)':
 
end_home_control:242: error: 'stringToNumber' was not declared in this scope
 
C:\Users\Сергей\Desktop\end_home_control\end_home_control.ino: In function 'void sendTextMessage(String)':
 
end_home_control:279: error: a function-definition is not allowed here before '{' token
 
end_home_control:288: error: expected '}' at end of input
 
exit status 1
'stringToNumber' was not declared in this scope
Счетч:
#include <SoftwareSerial.h>
#include "DHT.h"
#define DHTPIN 7    // pin на котором висит датчик температуры
#define DHTTYPE DHT11  // DHT 22 тип датчика
//Отсылается смс в формате: влажность;температура;устройство1;устройство2;устройство3;устройство4;Контроль периметра;Состояние периметра;Контроль автотемпературы;Установленная температура;STEWARD;
int powerGSM = 6; //Пин включения GSM
int unit1 = 8; //Управляемое устройство 1
int unit2 = 9; //Управляемое устройство 2
int perimetr = 12;// Датчик периметра
int voda = 4; //датчик уровня воды
String statusHome;
int t=0;
 
unsigned long currentTime;
unsigned long loopTime;
 
boolean unit1status = false; //Управляемое устройство 1
boolean unit2status = false; //Управляемое устройство 2
boolean isvoda = false;//датчик уровня воды
 
 
boolean isPerimetr = false; //Контроль периметра
boolean sendSMS = false; //Для проверки что смс отсылаем только один раз
boolean isAuto = false; //Автоматическое управление температурой
int autoTemp = 0;
int delta=2;
 
DHT dht(DHTPIN, DHTTYPE);
 
SoftwareSerial gprsSerial(2, 3);
 
boolean prevBtn = LOW;
String currStr = "";
// Переменная принимает значение True, если текущая строка является сообщением
boolean isStringMessage = false;
 
void setup()
{
    pinMode(unit1, OUTPUT);
    pinMode(unit2, OUTPUT);
    pinMode(voda, INPUT);
    pinMode(powerGSM, OUTPUT);
    pinMode(perimetr, INPUT);
 
    digitalWrite(unit1, HIGH);
    digitalWrite(unit2, HIGH);
    digitalWrite(powerGSM, LOW);
 
    //Включаю GSM Модуль
    digitalWrite(powerGSM, HIGH);
    delay(5000);
    gprsSerial.begin(19200);
    delay(300);
    // Настраиваем приём сообщений с других устройств
    // Между командами даём время на их обработку
    gprsSerial.print("AT+CMGF=1\r");
    delay(300);
    gprsSerial.print("AT+IFC=1, 1\r");
    delay(300);
    gprsSerial.print("AT+CPBS=\"SM\"\r");
    delay(300);
    gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
    delay(500);
 
    //Инициализация температурного датчика
    Serial.begin(9600);
    Serial.println("DHTxx test!");
 
    dht.begin();
    delay(3000);
// ParseSMS("1;20;0;1;1;1;1");
  currentTime = millis();
  loopTime = currentTime;
}
 
 
 
void GetDatchik() {
  // Пол
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    statusHome = int(h)+String(";")+int(t)+String(";")+digitalRead(voda)+String(";")+int(isvoda)+String(";")+int(isPerimetr)+String(";")+digitalRead(perimetr)+String(";")+int(isAuto)+String(";")+int(autoTemp)+String(";STEWARD");
    sendTextMessage(statusHome);
//  Serial.print("H"); //Влажность
//  Serial.print(h);
//  Serial.print(";");
//  Serial.print("T"); //Температура
//  Serial.print(t);
//  Serial.println(";");
//  Serial.println(statusHome);
 
  }
}
 
 
 
 
 
 
void loop()
{
// delay(5000);
// GetDatchik();
int sostPerimetr; //Состояние периметра
  if (gprsSerial.available()){
  char currSymb = gprsSerial.read();
// Serial.print(currSymb);
 
      //  return;
  //  char currSymb = gprsSerial.read();
  //  Serial.println(currSymb);
    if ('\r' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("STATUS"))
            {
              GetDatchik();
            }
            else if (currStr.startsWith("0")||currStr.startsWith("1")) {
              ParseSMS(currStr);
            }
         
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\n' != currSymb) {
        currStr += String(currSymb);
    }
  }
//  Контроль периметра!!!
  if (isPerimetr==true) { //Проверка Включен ли контроль периметра
      sostPerimetr = digitalRead(perimetr);
        if (sostPerimetr==LOW) { //Проверка на разомкнутый периметр
          digitalWrite(unit1, LOW);
          delay(200);
          //и отсылаем СМС
          if (sendSMS==false){
            sendTextMessage("WARNING! The perimeter of the broken!");
            
            sendSMS=true;
          }
      }
 
  }
  int sosvoda; //Состояние воды
  if (gprsSerial.available()){
  char currSymb = gprsSerial.read();
// Serial.print(currSymb);
    if ('\a' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("STATUS"))
            {
              GetDatchik();
            }
            else if (currStr.startsWith("0")||currStr.startsWith("1")) {
              ParseSMS(currStr);
            }
         
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\b' != currSymb) {
        currStr += String(currSymb);
    }
  }
//  Контроль воды!!!
  if (isvoda==true) { //Проверка Включен ли контроль воды
      sosvoda = digitalRead(voda);
        if (sosvoda==LOW) { //Проверка на разомкнутый воды
          delay(200);
          //и отсылаем СМС
          if (sendSMS==false){
            sendTextMessage("WARNING!VODA!");
 
            sendSMS=true;
          }
      }
 
  }
//  Контроль температуры!!! 
  if (isAuto==true) { //Проверка Включен автоуправление батареями
  //Замер температуры можно проводить не чаще раз в 5 минут
      currentTime = millis();
  if(currentTime >= (loopTime + 60000)){
  t = int(dht.readTemperature());
  loopTime = currentTime;
  }
//
//  Serial.print("t=");
//  Serial.println(t);
//  Serial.print("autoTemp+delta=");
//  Serial.println(autoTemp+delta);
    if (t < autoTemp-delta) {
     if (sendSMS==false){
            sendTextMessage("WARNING! TEMPERATURE!");
            sendSMS=true;    
     }
   }
  }
 
 
 
void ParseSMS(String currStr) {
  int firstSemicolon;
  //Распарсиваем SMS
  firstSemicolon = 1;//находим первую ;
  //Получаем значение Автоматического режима контроля температуры
  // if (currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )) == "0"){
    if (currStr.substring(0,1) == "0"){
    isAuto=false;
  }
    else{
      isAuto=true;
    }
  //  Serial.println(currStr.substring(0,1));
//  Serial.print("isAuto=");
//  Serial.println(isAuto);
  firstSemicolon = currStr.indexOf(';');
  //Получаем значение Автоматического уровня температуры
  autoTemp = stringToNumber(currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )));
  firstSemicolon = currStr.indexOf(';',firstSemicolon + 1 );
// Serial.println(autoTemp);
  //Получаем значение Контроля периметра
  if (currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )) == "0"){
    isPerimetr=false;
  } else {
      isPerimetr=true;
    }
//  Serial.println(isPerimetr);
  firstSemicolon = currStr.indexOf(';',firstSemicolon + 1 );
  //кОНТРОЛЬ ВОДЫ
   if (currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )) == "0"){
    isvoda=false;
  } else {
      isvoda=true;
    }
//  Serial.println(isvoda);
  firstSemicolon = currStr.indexOf(';',firstSemicolon + 1 );
}
  
/*
* Функция отправки SMS-сообщения
*/
void sendTextMessage(String text) {
    // Устанавливает текстовый режим для SMS-сообщений
    gprsSerial.print("AT+CMGF=1\r");
    delay(100); // даём время на усваивание команды
    // Устанавливаем адресата: телефонный номер в международном формате
    gprsSerial.println("AT + CMGS = \"+7909939XXXX\""); //Телефон нужно откорректировать
    delay(100);
    // Пишем текст сообщения
    gprsSerial.println(text);
    delay(100);
    // Отправляем Ctrl+Z, обозначая, что сообщение готово
    gprsSerial.println((char)26);
//Функция преобразовангия STRING в INT
int stringToNumber(String thisString) {
  int i, value = 0, length;
  length = thisString.length();
  for(i=0; i<length; i++) 
    {
    value = (10*value) + thisString.charAt(i)-(int) '0';
    }
  return value;
}
}
  
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Luk пишет:

Добрый день. Помогите разобраться с ошибками компиляции.

Помогаю.

Шаг первый: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

Не просто прочитать, а сделать как написано.

Luk
Offline
Зарегистрирован: 15.09.2016

#include <SoftwareSerial.h>
#include "DHT.h"
#define DHTPIN 7    // pin на котором висит датчик температуры
#define DHTTYPE DHT11  // DHT 22 тип датчика
//Отсылается смс в формате: влажность;температура;устройство1;устройство2;устройство3;устройство4;Контроль периметра;Состояние периметра;Контроль автотемпературы;Установленная температура;STEWARD;
int powerGSM = 6; //Пин включения GSM
int unit1 = 8; //Управляемое устройство 1
int unit2 = 9; //Управляемое устройство 2
int perimetr = 12;// Датчик периметра
int voda = 4; //датчик уровня воды
String statusHome;
int t=0;
 
unsigned long currentTime;
unsigned long loopTime;
 
boolean unit1status = false; //Управляемое устройство 1
boolean unit2status = false; //Управляемое устройство 2
boolean isvoda = false;//датчик уровня воды

 
boolean isPerimetr = false; //Контроль периметра
boolean sendSMS = false; //Для проверки что смс отсылаем только один раз
boolean isAuto = false; //Автоматическое управление температурой
int autoTemp = 0;
int delta=2;
 
DHT dht(DHTPIN, DHTTYPE);
 
SoftwareSerial gprsSerial(2, 3);
 
boolean prevBtn = LOW;
String currStr = "";
// Переменная принимает значение True, если текущая строка является сообщением
boolean isStringMessage = false;
 
void setup()
{
    pinMode(unit1, OUTPUT);
    pinMode(unit2, OUTPUT);
    pinMode(voda, INPUT);
    pinMode(powerGSM, OUTPUT);
    pinMode(perimetr, INPUT);
 
    digitalWrite(unit1, HIGH);
    digitalWrite(unit2, HIGH);
    digitalWrite(powerGSM, LOW);
 
    //Включаю GSM Модуль
    digitalWrite(powerGSM, HIGH);
    delay(5000);
    gprsSerial.begin(19200);
    delay(300);
    // Настраиваем приём сообщений с других устройств
    // Между командами даём время на их обработку
    gprsSerial.print("AT+CMGF=1\r");
    delay(300);
    gprsSerial.print("AT+IFC=1, 1\r");
    delay(300);
    gprsSerial.print("AT+CPBS=\"SM\"\r");
    delay(300);
    gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
    delay(500);
 
    //Инициализация температурного датчика
    Serial.begin(9600);
    Serial.println("DHTxx test!");
 
    dht.begin();
    delay(3000);
// ParseSMS("1;20;0;1;1;1;1");
  currentTime = millis();
  loopTime = currentTime;
}
 
 
 
void GetDatchik() {
  // Пол
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    statusHome = int(h)+String(";")+int(t)+String(";")+digitalRead(voda)+String(";")+int(isvoda)+String(";")+int(isPerimetr)+String(";")+digitalRead(perimetr)+String(";")+int(isAuto)+String(";")+int(autoTemp)+String(";STEWARD");
    sendTextMessage(statusHome);
//  Serial.print("H"); //Влажность
//  Serial.print(h);
//  Serial.print(";");
//  Serial.print("T"); //Температура
//  Serial.print(t);
//  Serial.println(";");
//  Serial.println(statusHome);
 
  }
}
 
 
 
 
 
 
void loop()
{
// delay(5000);
// GetDatchik();
int sostPerimetr; //Состояние периметра
  if (gprsSerial.available()){
  char currSymb = gprsSerial.read();
// Serial.print(currSymb);
 
      //  return;
  //  char currSymb = gprsSerial.read();
  //  Serial.println(currSymb);
    if ('\r' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("STATUS"))
            {
              GetDatchik();
            }
            else if (currStr.startsWith("0")||currStr.startsWith("1")) {
              ParseSMS(currStr);
            }
         
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\n' != currSymb) {
        currStr += String(currSymb);
    }
  }
//  Контроль периметра!!!
  if (isPerimetr==true) { //Проверка Включен ли контроль периметра
      sostPerimetr = digitalRead(perimetr);
        if (sostPerimetr==LOW) { //Проверка на разомкнутый периметр
          digitalWrite(unit1, LOW);
          delay(200);
          //и отсылаем СМС
          if (sendSMS==false){
            sendTextMessage("WARNING! The perimeter of the broken!");
            
            sendSMS=true;
          }
      }
 
  }
  int sosvoda; //Состояние воды
  if (gprsSerial.available()){
  char currSymb = gprsSerial.read();
// Serial.print(currSymb);
    if ('\a' == currSymb) {
        if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("STATUS"))
            {
              GetDatchik();
            }
            else if (currStr.startsWith("0")||currStr.startsWith("1")) {
              ParseSMS(currStr);
            }
         
            isStringMessage = false;
        } else {
            if (currStr.startsWith("+CMT")) {
                //если текущая строка начинается с "+CMT",
                //то следующая строка является сообщением
                isStringMessage = true;
            }
        }
        currStr = "";
    } else if ('\b' != currSymb) {
        currStr += String(currSymb);
    }
  }
//  Контроль воды!!!
  if (isvoda==true) { //Проверка Включен ли контроль воды
      sosvoda = digitalRead(voda);
        if (sosvoda==LOW) { //Проверка на разомкнутый воды
          delay(200);
          //и отсылаем СМС
          if (sendSMS==false){
            sendTextMessage("WARNING!VODA!");
 
            sendSMS=true;
          }
      }
 
  }
//  Контроль температуры!!! 
  if (isAuto==true) { //Проверка Включен автоуправление батареями
  //Замер температуры можно проводить не чаще раз в 5 минут
      currentTime = millis();
  if(currentTime >= (loopTime + 60000)){
  t = int(dht.readTemperature());
  loopTime = currentTime;
  }
//
//  Serial.print("t=");
//  Serial.println(t);
//  Serial.print("autoTemp+delta=");
//  Serial.println(autoTemp+delta);
    if (t < autoTemp-delta) {
     if (sendSMS==false){
            sendTextMessage("WARNING! TEMPERATURE!");
            sendSMS=true;    
     }
   }
  }
} 
 
 
 
void ParseSMS(String currStr) {
  int firstSemicolon;
  //Распарсиваем SMS
  firstSemicolon = 1;//находим первую ;
  //Получаем значение Автоматического режима контроля температуры
  // if (currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )) == "0"){
    if (currStr.substring(0,1) == "0"){
    isAuto=false;
  }
    else{
      isAuto=true;
    }
  //  Serial.println(currStr.substring(0,1));
//  Serial.print("isAuto=");
//  Serial.println(isAuto);
  firstSemicolon = currStr.indexOf(';');
  //Получаем значение Автоматического уровня температуры
  autoTemp = stringToNumber(currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )));
  firstSemicolon = currStr.indexOf(';',firstSemicolon + 1 );
// Serial.println(autoTemp);
  //Получаем значение Контроля периметра
  if (currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )) == "0"){
    isPerimetr=false;
  } else {
      isPerimetr=true;
    }
//  Serial.println(isPerimetr);
  firstSemicolon = currStr.indexOf(';',firstSemicolon + 1 );
  //кОНТРОЛЬ ВОДЫ
   if (currStr.substring(firstSemicolon+1,currStr.indexOf(';', firstSemicolon + 1 )) == "0"){
    isvoda=false;
  } else {
      isvoda=true;
    }
//  Serial.println(isvoda);
  firstSemicolon = currStr.indexOf(';',firstSemicolon + 1 );
}
  
/*
* Функция отправки SMS-сообщения
*/
void sendTextMessage(String text) {
    // Устанавливает текстовый режим для SMS-сообщений
    gprsSerial.print("AT+CMGF=1\r");
    delay(100); // даём время на усваивание команды
    // Устанавливаем адресата: телефонный номер в международном формате
    gprsSerial.println("AT + CMGS = \"+7909939XXXX\""); //Телефон нужно откорректировать
    delay(100);
    // Пишем текст сообщения
    gprsSerial.println(text);
    delay(100);
    // Отправляем Ctrl+Z, обозначая, что сообщение готово
    gprsSerial.println((char)26);
//Функция преобразовангия STRING в INT
int stringToNumber(String thisString) {
  int i, value = 0, length;
  length = thisString.length();
  for(i=0; i<length; i++) 
    {
    value = (10*value) + thisString.charAt(i)-(int) '0';
    }
  return value;
}
}
  

Проблема с компиляцией никуда не ушла, все так же появляются ошибки.


C:\Users\Сергей\Desktop\end_home_control\end_home_control.ino: In function 'void ParseSMS(String)':

end_home_control:242: error: 'stringToNumber' was not declared in this scope

C:\Users\Сергей\Desktop\end_home_control\end_home_control.ino: In function 'void sendTextMessage(String)':

end_home_control:279: error: a function-definition is not allowed here before '{' token

end_home_control:288: error: expected '}' at end of input

exit status 1
'stringToNumber' was not declared in this scope

 

 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Странно, что Вы до сих пор не разобрались.

Ну, читайте сообщения. В строке 3 говорится, что в строке 242 программы используется необъявленная функция 'stringToNumber'. У Вас есть возражения? Надеюсь, нет.

Так исправьте.

Эта функция у Вас объявлена в строках 279-287, т.е. после использования, а по правилам языка всё должно объявляться до использования. Ну так возьмите строки 279-287 и перенесите выше функции ParseSMS, Например вставьте после строки 223.

Остальные ошибки связаны с путаницей с фигурными скобками, но они исчезнут сами собой после переноса, о котором я уже сказал.

GarryC
Offline
Зарегистрирован: 08.08.2016

Как то странно, вроде бы Ардуино среда автоматом делает сигнатуры функций и не должна ругаться на порядок определения.

Может, наоборот, ошибка в скобках в функции ParseSMS делает функцию stringToNumber просто отсутствующей?

bwn
Offline
Зарегистрирован: 25.08.2014

GarryC пишет:

Как то странно, вроде бы Ардуино среда автоматом делает сигнатуры функций и не должна ругаться на порядок определения.

Долго на эту тему вопросов не было, похоже в последних версиях опять вернулось.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

GarryC пишет:

Как то странно, вроде бы Ардуино среда автоматом делает сигнатуры функций и не должна ругаться на порядок определения.

Это раньше так было. Потом они осознали чего наделали и в последних версиях исправились. теперь надо правильно всё определять.

GarryC пишет:

Может, наоборот, ошибка в скобках в функции ParseSMS делает функцию stringToNumber просто отсутствующей?

И это верно. Но не "наобороот", а "вместе" если у Вас новая версия IDE.