Перейти к содержанию

yura6

Members
  • Постов

    2
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Ангарск

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Микроконтроллеры

Достижения yura6

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. Помогите разобраться со скетчем для DFPlayer Mini 2.0 при загрузки в ардуино выдаёт ошибку в строке mp3_set_serial (serial); пишет "serial" was not declared in this scope #include <SoftwareSerial.h> #include <DFPlayer_Mini_Mp3.h> SoftwareSerial mySerial(10, 11); // RX, TX unsigned long currentTime; unsigned long loopTime1; unsigned long loopTime2; boolean v=0; /// счетчик блокировки boolean m=0; // переменная сброс таймера boolean s=0; // переменная вкл нагревателя boolean a=0; // переменная двери 1 нет готовности 0 готовность boolean b=0; // переменная балкона 1 нет готовности 0 готовность boolean c=0; // переменная истории двери 0 небыло сработ 1 была сработка boolean d=0; //переменная истории балкона 0 небыло сработ 1 была сработка #define ZVONOKNANOMER "ATD+7123456667;" /// КУДА БУДЕМ ЗВОНИТЬ ПРИ СРАБОТКЕ пишите свой номер #define TELEFONNACH "7123456667" //// 1 НАШ НОМЕР ПОСТАНОВКИ СНЯТИЯ И УПРАВЛЕНИЯ //#define TELEFONNACH2 "79023559118" //// 2 НАШ НОМЕР ПОСТАНОВКИ СНЯТИЯ И УПРАВЛЕНИЯ void setup() { Serial.begin(9600); mySerial.begin(9600); Serial.begin (9600); mp3_set_serial (Serial); mp3_set_volume (29);/// громкость то 0 до 30 unsigned long currentTime; unsigned long loopTime1; unsigned long loopTime2; //////////ПОРТЫ НАСТРОЙКА////////////////////// pinMode(2, INPUT_PULLUP); // ДАТЧИК ДВЕРИ pinMode(3, INPUT_PULLUP); // ДАТЧИК БАЛКОНА pinMode(4, OUTPUT); // pinMode(6, OUTPUT); // СВЕТИК ДВЕРИ pinMode(7, OUTPUT); // СВЕТИК БАЛКОНА pinMode(8, INPUT_PULLUP); // ДАТЧИК 220В pinMode(9, INPUT_PULLUP); // ДАТЧИК ЗВОНОК SIM 800L pinMode(12, OUTPUT); // СВЕТОДИОД ПАМЯТИ ОХРАНЫ pinMode(13, OUTPUT); // СВЕТОДИОД пОИСКА СЕТИ GSM digitalWrite(4, HIGH); // РЕЛЕ ОТКЛ digitalWrite(6, LOW); // digitalWrite(7, LOW); // digitalWrite(12, LOW); // digitalWrite(13, LOW); // pinMode(A0, OUTPUT ); // pinMode(A1, OUTPUT); // pinMode(A2, OUTPUT); // pinMode(A3, OUTPUT); // digitalWrite(A0, HIGH); // ПОДТЯГИВАЕМ + digitalWrite(A1, HIGH); digitalWrite(A2, HIGH); digitalWrite(A3, HIGH); ////// ПРОВЕРКА ГОТОВНОСТИ ДВЕРИ ТЕСТ ГОТОВНОСТИ ДАТЧИКОВ /////////// if ( digitalRead(2) == HIGH ) // НЕТ ГОТОВНОСТИ { a=1; digitalWrite(6,LOW); } // СРАБОТКА else { digitalWrite(6,HIGH); a=0;} // ОК /////// ПРОВЕРКА БАЛКОНА if ( digitalRead(3) == HIGH ) // НЕТ ГОТОВНОСТИ { digitalWrite(7, LOW); /// БЛОКИРУЕМ b=1;} // СРАБОТКА else { digitalWrite(7,HIGH); b=0;}// //// ТЕСТ СВЕТИКОВ ////////// digitalWrite(6, HIGH); // ПРОВЕРЯЕМ ШЛЕЙФ И ГАСИМ ЭКОНИМИМ ЭНЕРГИЮ digitalWrite(7, HIGH); digitalWrite(12, HIGH); delay(4000); digitalWrite(6, LOW); // ПРОВЕРЯЕМ ШЛЕЙФ И ГАСИМ ЭКОНИМИМ ЭНЕРГИЮ digitalWrite(7, LOW); digitalWrite(12, LOW); mySerial.println("ATE0"); //откл ЭХО delay(100); mySerial.println("AT+CLIP=1"); //. ВКЛ АОН delay(100); currentTime=20000; //// ПРИБАВКА ВРЕМЕНИ ПРОВЕРКИ ШЛЕЙФА ПРИ ЗАПУСКЕ ПРОГРАММЫ } void loop() { ///////// ПРОВЕРЯЕМ И МИГАЕМ СВЕТИКАМИ ГОТОВНОСТИ if(a==0) /// проверка линии двери {digitalWrite(6, HIGH); delay(100); digitalWrite(6, LOW);} else digitalWrite(6, LOW); if(b==0) /// проверка линии БАЛКОНА {digitalWrite(7, HIGH); delay(100); digitalWrite(7, LOW);} else digitalWrite(7, LOW); currentTime = millis(); // считываем время, прошедшее с момента запуска программы if (currentTime >= (loopTime1 + 22000)) { while (1) // ПРИ ВКЛ ИЩЕМ ТЕЛЕФОН { mySerial.println("AT"); // РЕГИСТАЦИЯ СЕТИ delay(200); if ( mySerial.find("OK")) // ОТВЕТ ОК { Serial.println("SOEDINENIE OK"); ////////// ПРОВЕРКА ГОТОВНОСТИ ДВЕРИ/////////// if ( digitalRead(2) == LOW ) // В ГОТОВНОСТИ { a=0 ; /// ok Serial.println("LINIA A OK"); } else { a=1 ; // блокировка линии двери Serial.println("LINIA A NO"); } /////// ПРОВЕРКА БАЛКОНА //////////// if ( digitalRead(3) == LOW ) // В ГОТОВНОСТИ { b=0 ; // ok Serial.println("LINIA B OK"); } else { b=1 ; /// БЛОКИРУЕМ Serial.println("LINIA B NO"); } break; } // ВСЕ ОК ВЫХОДИМ ИЗ ЦИКЛА { Serial.println("SOEDINENIE NO"); digitalWrite(13, HIGH); // ЕСЛИ НЕ НАШЛИ МИГАЕМ delay(500); digitalWrite(13, LOW); mySerial.println("AT+IPR=9600;"); delay(500); mySerial.println("ATE0"); //ОТКЛ ЭХО delay(500); } } loopTime1 = currentTime; // в loopTime записываем новое значение } /////////////ИЩЕМ ЗВОНОК///////////// if (mySerial.find("CLIP:")) // если нашли RING { Serial.println("RING!"); delay(200); mySerial.println("AT+CLIP=1"); // ВКЛ ОПРЕДЕЛИТЕЛЬ НОМЕРА delay(300); while (1) // в цикле { // if (mySerial.find(TELEFONNACH)||( TELEFONNACH2)) // ищим номер телефона, если нашли 2 номера if (mySerial.find(TELEFONNACH)) //ищим номер телефона, если нашли { { digitalWrite(12, !digitalRead(12)); // инвертируем 13 выход delay(300); Serial.println("INVERSIA LED"); //////////////////////////////////////// mySerial.println("AT+CRSL=100"); // уровень звука delay(6500); ///////////ПРОГРАММА ПОСТАНОВКИ И ПОСЛУШКИ////////////////////// { if( digitalRead(9)==HIGH) // НЕТ ЗВОНКА { m=1; //// ЗАПИСЫВАЕМ ПЕРЕМЕННУЮ goto label;} /// ПЕРЕХОДИМ НА МЕТКУ ПРОГРАММЫ else { if( digitalRead(9)==LOW)// ЕСТЬ ЗВОНОК { delay(200); mySerial.println("ATA"); /// ПОДНИМАЕМ ТРУБКУ delay(200); mySerial.println("ATE0"); //ОТКЛ ЭХО delay(200); mySerial.println("AT+DDET=1"); // включаем DTMF delay(200); Serial.println("V CIKLE"); delay(100); loopTime2 = currentTime; goto label; // СБРОС ТАЙМЕРА label: while (1) { if (m==1) //// ЕСЛИ М=1 ЗАПИСЬ В ТАЙМЕР +38 СЕК ЧТОБЫ БЫСТРО ДОЗВОНИЛСЯ О ОХРАНЕ { currentTime = 38000; m=0; } ///// НАШИ КОМАНДЫ КЛАВИШ ТЕЛЕФОНА if (mySerial.find("+DTMF:")) { int cmd = mySerial.parseInt(); switch(cmd) { case 1: // { loopTime2 = currentTime; // СБРОС ТАЙМЕРАSerial.println("1"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(200); // ЗДЕСЬ НАШ ТЕСТ НАШЕЙ СИГНАЛИЗАЦИИ ЗА ВРЕМЯ РАБОТЫ /// ОТ ЧЕГО ПИТАЕТСЯ 220 ИЛИ 12 if ( digitalRead(8) == LOW ) { mp3_play (19); /// 220V delay(4000);} else { mp3_play (18); delay(5000); } ////ГОТОВНОСТЬ ДВЕРИ if ( digitalRead(2) == LOW ) // { mp3_play (3); /// delay(3200);} else { mp3_play (5); delay(4700); } ////ГОТОВНОСТЬ БАЛКОНА if ( digitalRead(3) == LOW ) // { mp3_play (4); /// delay(2000);} else { mp3_play (6); delay(4000); } loopTime2 = currentTime; // СБРОС ТАЙМЕРА // ПРОВЕРКА ПАМЯТИ СРАБОТОК if( (c==0)&&(d==0)) // нет сработок { mp3_play (9); delay(4500); } else { if (c==1) { mp3_play (10); /// ПАМЯТЬ ДВЕРЬ delay(5000); } if (d==1) { mp3_play (11); //// ПАМЯТЬ БАЛКОН delay(6000); } mp3_play (20); delay(3000); } loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 2: // ПАМЯТЬ СТЕРТА СРАБОТОК // выполняем действие, отправляем в Serial, { Serial.println("2"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(200); mp3_play (14); // ПАМЯТЬ СТЕРТА СРАБОТОК delay(200); c=0; d=0; loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 3: // ВКЛ СИРЕНЫ И ВЫКЛ // выполняем действие, отправляем в Serial, { Serial.println("3"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(300); digitalWrite(4, !digitalRead(4)); // инвертируем A1 выход delay(200); if( digitalRead(4)==LOW) { mp3_play (7); // ВКЛ СИРЕНЫ delay(1000); } else { mp3_play (8); // ОТКЛ СИРЕНЫ delay (1000);} currentTime=20000; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 4: /////////// постановка снятие с охраны { Serial.println("4"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(200); digitalWrite(12,!digitalRead(12)); // инвертируем 12 выход delay(500); if( digitalRead(12)==LOW) { mp3_play (2); // delay(1000);} else { mp3_play (1); // delay (1000);} loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break; } case 5: // выполняем действие, отправляем в Serial, { Serial.println("5"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(200); /////////////ПРОГРАММА ДОЗВОНА ОТ БЛОКИРОВКИ /////////////// mp3_play (15); // delay (15000); loopTime2 = currentTime; // СБРОС ТАЙМЕРА delay (10000); loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+CHUP;"); // сбрасываем вызов delay (3000); mySerial.println(ZVONOKNANOMER); delay (15000); loopTime2 = currentTime; // СБРОС ТАЙМЕРА delay (400); mp3_play (17); /// ВКЛ СООБЩЕНИЯ delay (19000); loopTime2 = currentTime; // СБРОС ТАЙМЕРА if( digitalRead(12)==LOW) { mp3_play (2); // ПРОВЕРКА ОХРАНЫ delay(20000);} else { mp3_play (1); // delay (20000);} mySerial.println("AT+CHUP;"); // сбрасываем вызов delay (2000); loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 6: // О СОЗДАТЕЛЕ выполняем действие, отправляем в Serial, { Serial.println("6"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(200); mp3_play (21); // delay(2000); loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 7: { Serial.println("7"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF digitalWrite(13, !digitalRead(13)); // инвертируем 13 выход delay(200); loopTime2 = currentTime; // СБРОС ТАЙМЕРА Serial.println("INVERSIA LED 13"); mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 8: // выполняем действие, отправляем в Serial, { Serial.println("8"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(500); loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 9: // выполняем действие, отправляем в Serial, { Serial.println("9"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(500); loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} case 0: // выполняем действие, отправляем в Serial, { Serial.println("0"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF delay(200); mp3_play (16); /// какие клавиши нажимать delay(200); loopTime2 = currentTime; // СБРОС ТАЙМЕРА mySerial.println("AT+DDET=1"); // включаем DTMF break;} } } else { currentTime = millis(); // считываем время, прошедшее с момента запуска программы if (currentTime >= (loopTime2 + 40000)) // сравниваем текущий таймер МИН { Serial.println("VIXOD IZ UPRAVLENIIA"); loopTime2 = currentTime; // в loopTime2 записываем новое } break; // ВЫХОДИМ ИЗ ЦИКЛА ЕСЛИ НИЧЕГО НЕ ДЕЛАЕМ 15 СЕК } } } Serial.println("OK!"); mySerial.println("AT+DDET=0"); // ОТКЛ DTMF } digitalWrite(4,HIGH); /// ВЫКЛ СИРЕНЫ ПРИ ВЫХОДЕ ИЗ ЦИКЛА ЕСЛИ ЗАБЫЛИ ЭТО СДЕЛАТЬ delay(500); //////////////КОНЕЦ ПСТ ПРОСЛУШКИ//////////////////// mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(2500); ////////ДОЗВОНЫ //////////////// if ( digitalRead(12) == HIGH ) // ЕСЛИ ГОРИТ 1 ДОЗВОН { mySerial.println(ZVONOKNANOMER); Serial.println("ATD+ NOMER;");// В СОМ ПОРТ delay(15000); mySerial.println("AT+CHUP;");// отбой сброс delay(200); Serial.println("AT+CHUP;");// В СОМ ПОРТ delay(2000); Serial.println("NA OXPAHE"); delay(300); ////// ПРОВЕРКА ШЛЕЙФА ПОСЛЕ ДОЗВОНА////////////////// if ( digitalRead(2) == LOW ) // В ГОТОВНОСТИ { a=0 ; /// ok digitalWrite(6, HIGH); // МИГНЕМ ОК delay(100); digitalWrite(6, LOW); // Serial.println("LINIA A OK"); } else { a=1 ; // блокировка линии двери digitalWrite(6, LOW); // Serial.println("LINIA A NO");} /////// ПРОВЕРКА БАЛКОНА if ( digitalRead(3) == LOW ) // В ГОТОВНОСТИ { b=0 ; // ok digitalWrite(7, HIGH); // МИГНЕМ ОК delay(100); digitalWrite(7, LOW); // Serial.println("LINIA B OK"); } else { b=1 ; /// БЛОКИРУЕМ digitalWrite(7, LOW); // Serial.println("LINIA B NO"); } } if ( digitalRead(12) == LOW ) // ЕСЛИ ГОРИТ 2 ДОЗВОНA { delay(500); mySerial.println(ZVONOKNANOMER); Serial.println("ATD+NOMER;");// В СОМ ПОРТ delay(15000); mySerial.println("AT+CHUP;");// отбой сброс Serial.println("AT+CHUP;");// В СОМ ПОРТ delay(5000); mySerial.println("AT+CLIP=1;");// ВКЛ ОПРЕД НОМЕРА Serial.println("AT+CLIP=1;");// В СОМ ПОРТ delay(500); mySerial.println(ZVONOKNANOMER); Serial.println("ATD+NOMER;");// В СОМ ПОРТ delay(15000); mySerial.println("AT+CHUP;");// отбой сброс Serial.println("AT+CHUP;");// В СОМ ПОРТ delay(1000); Serial.println("CHIAT C OXPAHI"); delay(300); } } ////////КОНЕЦ ДОЗВОНОВ/////////// break; // и выходим } } } else { // иначе mySerial.println("AT"); // спрашиваем состояние модема delay(200); if (mySerial.find("OK")) break; // и если он в "готовности", выходим из цикла } // если звонок в процессе, возвращает +CPAS: 3 } // и крутимся дальше mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(200); } /////////////ПРОГРАММА СИГНАЛИЗАЦИИ ////////////////// if(( digitalRead(12) == HIGH &&(a==0)&& digitalRead(2) == HIGH || digitalRead(12) == HIGH &&(b==0)&& digitalRead(3) == HIGH )) // ////////// ОХРАНА ДВЕРИ //////////////////// { currentTime = 0; /// СБРОС ТАЙМЕРА if((digitalRead(2) == HIGH && a==0)) { digitalWrite(6, HIGH); delay(500); /// МИГНЕМ ПРИ СРАБОТКЕ ЛЕД6 digitalWrite(6, LOW); delay(1000); digitalWrite(6, HIGH); /// вкл индикацию digitalWrite(4, LOW); /// ВКЛ СИРЕНЫ c=1; /// записыв перем сработки и храним в памяти сработок дверь b=1; // блокировка дозвонов с балкона for (int i=0;i<3;i++) // исполним программу 3 раза { mySerial.println(ZVONOKNANOMER); Serial.println("ZVONOK"); for (int n=0;n<5;n++) // исполним программу 5 раза { mp3_play (12); // СООБЩЕНИЕ ТРЕВОГА ДВЕРЬ delay(7000); if( digitalRead(3) == HIGH) { d=1;// если сработал и балкон запись в память и мигнем лед 7 digitalWrite(7, HIGH); delay(300); /// МИГНЕМ ПРИ СРАБОТКЕ ЛЕД 7 digitalWrite(7, LOW); delay(300); } else delay(10); } digitalWrite(4, HIGH); /// ВЫКЛ СИРЕН ////ГОТОВНОСТЬ ДВЕРИ if ( digitalRead(2) == LOW ) // { mp3_play (3); /// delay(3200);} else { mp3_play (5); delay(4700); } /// ПРОВЕРКА БАЛКОНА if ( digitalRead(3) == HIGH ) /// if (d==1) /// если сработал и балкон сообщаем 3 раза { digitalWrite(7, HIGH); // вкл индикацию сраьотки балкона for (int v=0;v<2;v++) // исполним программу 4 раза { mp3_play (13); // СООБЩЕНИЕ ТРЕВОГА ДВЕРЬ delay(7000); } ////ГОТОВНОСТЬ БАЛКОНА if ( digitalRead(3) == LOW ) // { mp3_play (4); /// delay(2000); } else { mp3_play (6); delay(4000); } } else { ////ГОТОВНОСТЬ БАЛКОНА if ( digitalRead(3) == LOW ) // { mp3_play (4); /// delay(2000); } else { mp3_play (6); delay(4000); } delay(15000); } delay(10000); mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(200); Serial.println("SBROS");// В СОМ ПОРТ delay(3000); } } else delay(1); ////////// ОХРАНА БАЛКОНА //////////////////// if(( digitalRead(3) == HIGH && b==0)) // балкон { currentTime = 0; d=1;/// записыв перем сработки и храним в памяти сработок балкон a=1; // блокировка дозвона с вх двери digitalWrite(7, HIGH); delay(500); /// МИГНЕМ ПРИ СРАБОТКЕ ЛЕД7 digitalWrite(7, LOW); delay(1000); digitalWrite(7, HIGH); // вкл индикацию сраьотки digitalWrite(4, LOW); /// ВКЛ СИРЕНЫ for ( int i=0;i<3;i++) // исполним программу 3 раза { mySerial.println(ZVONOKNANOMER); Serial.println("ZVONOK"); for (int n=0;n<5;n++) // исполним программу 5 раза { mp3_play (13); // СООБЩЕНИЕ ТРЕВОГА ДВЕРЬ delay(7500); if( digitalRead(2) == HIGH) { c=1;// если сработал и балкон запись в память и мигнем лед 6 digitalWrite(6, HIGH); delay(300); /// МИГНЕМ ПРИ СРАБОТКЕ ЛЕД6 digitalWrite(6, LOW); delay(300); } else delay(10); } digitalWrite(4, HIGH); /// ВЫКЛ СИРЕН ////ГОТОВНОСТЬ БАЛКОНА if ( digitalRead(3) == LOW ) // { mp3_play (4); /// delay(2000);} else { mp3_play (6); delay(4000); } /// ПРОВЕРКА ДВЕРИ if ( digitalRead(2) == HIGH ) // if (c==1) /// если сработал вх дверь сообщаем 3 раза { digitalWrite(6, HIGH); // вкл индикацию сраьотки двери for (int s=0;s<2;s++) // исполним программу 2 раза { mp3_play (12); // СООБЩЕНИЕ ТРЕВОГА ДВЕРЬ delay(6000); } ////ГОТОВНОСТЬ ДВЕРИ if ( digitalRead(2) == LOW ) // { mp3_play (3); /// delay(3200);} else { mp3_play (5); delay(4700); } } else { ////ГОТОВНОСТЬ ДВЕРИ if ( digitalRead(2) == LOW ) // { mp3_play (3); /// delay(3200);} else { mp3_play (5); delay(4700); } delay(15000); } delay(10000); mySerial.println("AT+CHUP;"); // сбрасываем вызов delay(200); Serial.println("SBROS");// В СОМ ПОРТ delay(3000); } } else delay(1); } }
×
×
  • Создать...