Охранная система на Arduino

Тема в разделе "Arduino & Shields", создана пользователем Amidey, 15 апр 2017.

  1. Slavdej

    Slavdej Нерд

    Доброго времени суток!)
    На выходных нашлось немного времени на доработку моего проекта и столкнулся с вот какой проблемой:
    1. Никак не могу понять как оставить запрет повотрных вызовов и включить функцию на звонок при повторном срабатывании концевика.
    2. Сейчас собрал всё на плате, вообще перестало работать, но на плате ошибок нет, я всё перепроверил несколько раз, безрезультатно.
    Вот фото почти готового девайса, а код наверное нужно переписывать, там какой то конфликт, а я недостаточно опытен наверное что бы понять в чём именно этот конфликт.
    БУду наверное с кусков заново код собирать(
    Код (C++):
    #include <LiquidCrystal.h>
    LiquidCrystal lcd(2, 3, 4, 5, 11, 12);


    int analogInput = 0; // переменная для удобства инициализации и работы с аналог. портом 0
    float vout = 0.0; // переменная с значением выходного напряжения
    float vin = 0.0; // переменная с результатом измерений
    float R1 = 100000.0; // сопротивление R1
    float R2 = 10000.0; // сопротивление R2
    int value = 0; // переменная хранения данных
    int btnPin = 10; // переменная прерывателя
    int state = 1 ; // статус СМС
    int flag = 1 ; // флаг дозвона
    void setup()
    {

    Serial.begin(19200);
    pinMode(btnPin, INPUT);
    //Включаем GPRS Shield, эмулируя нажатие кнопки POWER
    pinMode(9, OUTPUT);
    digitalWrite(9, HIGH); // Подаем High на пин 9
    delay(500); // на 3 секунды
    digitalWrite(9, LOW); // и отпускаем в Low.
    delay(5000); // Ждём 5 секунд для старта шилда
    {
    lcd.begin(16, 2);
    lcd.print("DC VOLTMETER");

    }
    }

    void loop()
    {
    //Serial.println("start"); // чисто для отладки
    if (digitalRead(btnPin) == HIGH)
    {
    if (flag == 1) //и флаг поставлен

    //сразу после нажатия кнопки начинаем звонить по заданному номеру
    Serial.println("ATD +380686617468;");
    delay(100);
    flag = 0; //блокируем повторные дозвоны
    }
    {
    value = analogRead(analogInput);// читаем аналоговый сигнал, с аналог. порта - 0
    vout = (value * 4.95) / 1024.0; // не забываем про внесение поправки (5.0 - это идеальный вариант,хотя все возможно)
    vin = vout / (R2/(R1+R2)); // в переменной будет значение входного напряжения
    }
    if (vin<0.09) // проверка, для получ. 0
    { vin=0.0; // обнуляем нежелательное значение

    } if(vin<=12.65)

    {
    if (state == 1) // и флаг поставлен
    {
    // Устанавливает текстовый режим для SMS-сообщений
    Serial.print("AT+CMGF=1\r");
    delay(100); // даём время на усваивание команды
    // Устанавливаем адресата: телефонный номер в международном формате
    Serial.println("AT + CMGS = \"+***********\"");
    delay(100);
    // Пишем текст сообщения
    Serial.println("Alarm Low Bat Voltage!!!");
    Serial.println(vin);
    delay(100);
    // Отправляем Ctrl+Z, обозначая, что сообщение готово
    Serial.println((char)26);
    state = 0; //блокируем повторные отправки
    }

    {
    lcd.setCursor(0, 1);
    lcd.print("INPUT V= ");
    lcd.print(vin);
    //Serial.println(vin); // чисто для отладки
    delay(500);
    }

    }
    }
    Не работает , помогите плиз знающие люди, в чём проблема может быть...
     

    Вложения:

    • CdxPtOo2JEI.jpg
      CdxPtOo2JEI.jpg
      Размер файла:
      123 КБ
      Просмотров:
      427
    • -EfPn-n88zw.jpg
      -EfPn-n88zw.jpg
      Размер файла:
      195,2 КБ
      Просмотров:
      423
    • tDHR5cLBJo4.jpg
      tDHR5cLBJo4.jpg
      Размер файла:
      113,2 КБ
      Просмотров:
      650