'MATI' was not declared in this scope

djkohr
Offline
Зарегистрирован: 16.11.2018

Доброго времени суток! Решил собрать sms-контроллер для управления 4-мя реле. Нашел готовый код, но при компиляции выдает ошибку 'MATI' was not declared in this scope. В коде попытался поправить синтаксис, но чет не получается (( подскажите на пальцах что делаю не так. 

Собственно код:

#include <bluetooth.h>
#include <fm.h>
#include <gprs.h>
#include <sim800.h>

#define TIMEOUT 5000

#define ACTIVE LOW

#define OFF HIGH

byte Relay[] = {A0,A1,A2,A3};

byte StatRelay[4];

char buffNumber[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = false;

String replyNumber = "79266000000";

GPRS gprs;

void setup() {

for(int i=0; i < 4; i++) {

pinMode (Relay[i] , OUTPUT);

digitalWrite (Relay[i], MATI);

StatRelay[i] = MATI;

}

Serial.begin(9600);

while (!Serial);

Serial.println("Activate SIM800L V2 >>> Automatically Read SMS");

gprs.preInit();

delay(1000);

while (0 != gprs.init()) {

delay(1000);

Serial.print("init errorrn");

}

// Manage message to mode ASCII

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

return;

}

// Read Incoming SMS

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

return;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Send reply to number = > ");

Serial.println(buffNumber);

Serial.println("Initialization Done");

Serial.println("=============================================================");

}

void loop() {

// Change status Relay ON / OFF

for(int i=0; i < 4; i++) {

digitalWrite(Relay[i], StatRelay[i]);

}

// If there is input data from SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();

// Save all data on lastCharRead, then if there is r or n, as a final signal of incoming message

if (lastCharRead == 'r' || lastCharRead == 'n') {

String lastLine = String(currentLine);

// If the last message +CMT indicates new message arrive

if (lastLine.startsWith("+CMT:")) {

Serial.println(lastLine);

nextLineIsMessage = true;

} else if (lastLine.length() > 0) {

if (nextLineIsMessage) {

Serial.println(lastLine);

// ================================================================>> Function of Relay Controller

//Relay 1 Controller

if (lastLine.indexOf("Relay 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Relay 1 Status Active");

gprs.sendSMS (buffNumber, "Relay 1 Status Active");

}

else if (lastLine.indexOf("Relay 1 OFF") >= 0) {

State Relay[0] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Relay 1 Status Off");

gprs.sendSMS (buffNumber, "Relay 1 Status Off");

}

//Relay 2 Controller

if (lastLine.indexOf("Relay 2 ON") >= 0) {

State Relay[1] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Relay 2 Status Active");

gprs.sendSMS (buffNumber, "Relay 2 Status Active");

}

else if (lastLine.indexOf("Relay 2 OFF") >= 0) {

State Relay[1] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Relay 2 Status Off");

gprs.sendSMS (buffNumber, "Relay 2 Status Off");

}

//Relay 3 Controller

if (lastLine.indexOf("Relay 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Relay 3 Status Active");

gprs.sendSMS (buffNumber, "Relay 3 Status Active");

}

else if (lastLine.indexOf("Relay 3 OFF") >= 0) {

State Relay[2] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Relay 3 Status Off");

gprs.sendSMS (buffNumber, "Relay 3 Status Off");

}

//Relay 4 Controller

if (lastLine.indexOf("Relay 4 ON") >= 0) {

State Relay[3] = AKTIF;

Serial.print("Reply====>>>> ");

Serial.println("Relay 4 Status Active");

gprs.sendSMS (buffNumber, "Relay 1 Status Active");

}

else if (lastLine.indexOf("Relay 4 OFF") >= 0) {

State Relay[3] = MATI;

Serial.print("Reply====>>>> ");

Serial.println("Relay 4 Status Off");

gprs.sendSMS (buffNumber, "Relay 4 Status Off");

}

nextLineIsMessage = false;

}

// ==================================================================>>

}

//Clear char array for next line of read

for ( int i = 0; i < sizeof(currentLine); ++i ) {

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

else {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}

 

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

А что автор кода говорит?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Я конечно не лингвист и с языками у меня не очень. Но сдаётся мне что AKTIF это HIGH, а MATI это LOW. Вот!

Гриша
Offline
Зарегистрирован: 27.04.2014

kalapanga пишет:

Я конечно не лингвист и с языками у меня не очень. Но сдаётся мне что AKTIF это HIGH, а MATI это LOW. Вот!

не берусь утверждать, но мне кажется, что кто-то пытался поправить код и не понимая, что делает как минимум забыл про строки 8   и 10... т.е. впихнул не туда :))))))))

Araris
Offline
Зарегистрирован: 09.11.2012

kalapanga пишет:

Я конечно не лингвист и с языками у меня не очень. Но сдаётся мне что AKTIF это HIGH, а MATI это LOW. Вот!

Почти согласен (только HIGH и LOW наоборот, видимо, управление реле "инверсное" ), сдаётся мне, что достаточно в строках 8 и 10 поменять ACTIVE на AKTIF , а MATI на OFF.

sadman41
Offline
Зарегистрирован: 19.10.2016

Недостаточно... см. левую часть выражения на строке #200, например.

Green
Offline
Зарегистрирован: 01.10.2015

OFF на MATI)

djkohr
Offline
Зарегистрирован: 16.11.2018

Заменил statrelay на state relay. 

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

djkohr пишет:

Заменил statrelay на state relay. 

Молодец!

djkohr
Offline
Зарегистрирован: 16.11.2018

Да уже сообразил что накосячил. Но странно, на эти «исправленные» строки ide больше не ругался. Почему?

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

Не успевает.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

ТС, а ты хоть читал, что тебе писали? Или просто методом «дай угадаю» действуешь?

djkohr
Offline
Зарегистрирован: 16.11.2018

Это кому сообщение?

Green
Offline
Зарегистрирован: 01.10.2015

Ага. Хто тут?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

djkohr пишет:

Это кому сообщение?

А кто тему открыл? Дед? Тогда ему...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я- нет, не открывал. Вроде. 

djkohr
Offline
Зарегистрирован: 16.11.2018

Вы, дружище, остроумны! Прочитайте первый пост, пожалуйста!

b707
Offline
Зарегистрирован: 26.05.2017

djkohr пишет:

Вы, дружище, остроумны! Прочитайте первый пост, пожалуйста!

а вы, похоже, не очень... остры умом.

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

djkohr
Offline
Зарегистрирован: 16.11.2018

Подскажите, где я написал чушь? Я терпеливо ожидал советов, от знающих людей. Всё что мне советовали буду пробывать. Всё остальные замечания оставьте своим друзьям. 

b707
Offline
Зарегистрирован: 26.05.2017

djkohr пишет:

Подскажите, где я написал чушь?

вот:

>> Заменил statrelay на state relay.

 

Цитата:
Всё остальные замечания оставьте своим друзьям. 

Как раз другу я может и помягче бы сказал, а вас не жалко. Почему мне не написать, что вы тупите -  если вы и вправду тупите. Не нравится читать о себе такое - не тупите.

djkohr
Offline
Зарегистрирован: 16.11.2018

b707 пишет:

djkohr пишет:

Подскажите, где я написал чушь?

вот:

>> Заменил statrelay на state relay.

 

Цитата:
Всё остальные замечания оставьте своим друзьям. 

Как раз другу я может и помягче бы сказал, а вас не жалко. Почему мне не написать, что вы тупите -  если вы и вправду тупите. Не нравится читать о себе такое - не тупите.

В сообщение я признал ошибку, и не надо меня носом тыкать. 

Если Вам нравится нравоучить, идите в другие темы. А здесь я попросил помощи! Нормальные люди указали мне ошибки.

Гриша
Offline
Зарегистрирован: 27.04.2014

ну так перечитайте тему и исправить, то что уже описано, при необходимости продолжим.