Страница 30 из 44 ПерваяПервая ... 202425262728293031323334353640 ... ПоследняяПоследняя
Показано с 291 по 300 из 435
  1. #291
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Посмотри вот в этом скетче это работает(String)...я сейчас уже с трудом понимаю что здесь насочинял да потом мне помогли в этом месте.
    Там надо было вытащить из переменной в конце кусок и вывести в другом месте на экране
    Или проблемы в другом ???
    PHP код:
    #include <LiquidCrystalRus.h>   //БИБЛИОТЕКА lcd экрана
    #include <OneWire.h>            //БИБЛИОТЕКА цифровой датчик
    volatile unsigned long t0;      //обороты
    volatile unsigned long t1;      //обороты
    volatile unsigned long dt;      //обороты
    OneWire ds(7);                  //ЦИФРОВОЙ ДАТЧИК температуры на цифровом 7 пине
    LiquidCrystalRus lcd(1211105431); //  вместо 2 поставил 1 пин
    int rpm;                        //переменная оборотов
    int volt;                       // ++++++++переделать переменная напряжения
    String volt_str;                // для разделения числа на составные числа
    int temp;                       //переменная температуры аналогового датчика температуры
    String temp_str;  // ????? отладка ?????????????????????????
    int obog;                       //просто переменная
    int x 0;                      //переменная ключ, для вывода времени в пути и температуры на улице
    boolean pitanie LOW;          // переменная габаритов
    boolean gabarit LOW;          // ключ переменная габаритов
    int Temp2;                      //!!!!!!!!!!!!!!??????????????????1!!!!!!!!!!!!!!!???????????????
    int times2 1;                 // для моргания подсветкой при предельных значениях
    int cur_millis lastTick 0;  // переменные времени в пути
    int minshour 0;             // время в пути

    //==============================================================================================================
    void setup()                    
    {
    millis();                            // Время пошло
    lcd.begin(162);                    // Инициализация экрана 16 х 2
    attachInterrupt(0blinkFALLING);  //прерывания обороты
     
    t1 0;                            //   
     
    dt 0;                            //
     
    pinMode(8OUTPUT);                 // 8 пин определяем как выход
     
    digitalWrite(8LOW);               // на 8 пине земля
     
    obog 1;                           //
     
    pinMode (6INPUT);                 // пин для ГАБАРИТОВ
     
    pinMode(9OUTPUT);                 // пин для управления подсветкой экрана
     
    digitalWrite(9LOW);               // подсветка выключена
     
    pinMode(13OUTPUT);                // пин для мигания подсветкой экрана при предельных значениях.
     
    digitalWrite(13LOW);              // подсветка не мигает-выключена

     //------------------------вывод начальной инфы
    lcd.setCursor(00);
    lcd.print("Хозяин Т");
    lcd.setCursor(01);
    lcd.print("ЕЛ");
    delay (1000);

    lcd.clear();                          //очистка экрана

    lcd.setCursor(00);
    lcd.print("91672345");
    lcd.setCursor(01);
    lcd.print("67");
    delay (3000);

    lcd.clear();                          //очистка экрана
    }
    //==========================================================================================================

    void loop() {
    //------------------------------- определение времени мин. в пути----------------------------------------
    cur_millis  millis() / 1000 60;               
         if (
    cur_millis lastTick >= 1) {
           
    lastTick cur_millis;
           
    mins++;
         }
     
    //--------------------------------определение состояния габаритов------------------------------------
      
      
    if (digitalRead(6) == HIGH && pitanie == LOW) {  // ВОЗМОЖНО ПРОЩЕ
       
    gabarit = !gabarit;                             //
       
    pitanie HIGH;
      }
      else { 
    pitanie digitalRead(6); }
    //-----------------------------------включение подсветки-----------------
       
    if (digitalRead(6) == HIGH) {
         
    digitalWrite(9HIGH);
         
    digitalWrite(13HIGH);
       }
         else  { 
    digitalWrite(9LOW); }
    //-----------------------------------цифровой датчик начало-----------
     
    {
      
    byte data[2];
    ds.reset();
    ds.write(0xCC);
    ds.write(0x44);
    delay(750);
    ds.reset();
    ds.write(0xCC);
    ds.write(0xBE);
    data[0] = ds.read();
    data[1] = ds.read();
    Temp2 = (data[1]<<8)+data[0]; 
    Temp2 Temp2>>4;  

    lcd.setCursor(14,1);
    lcd.print(Temp2);                                           // вывод цифрового датчика температуры
    lcd.print(" ");                                             // стераем старое лишнее
     
    }
     
    // -------------------------------цифровой датчик конец--------------
     
    if (dt == 0)                                               //
       
    rpm 0;                                                 //
     
    else                                                       //
    rpm 60000000 dt /50 50;                               // обороты
     //----------------------------------------
     
    volt analogRead(4);                                       //считывание вольт
    volt volt 1.925;                                        //вольты в нормальный вид, без запятой
      
    volt_str String(volt);                                  //
      
    if (volt_str.length() < 4) { volt_str " " volt_str; }    // 
    //------------------------------------------

    temp analogRead(5);                                       // считывание температуры
    temp temp 0.48189 273;                                // температура в градусах цельсия
      
    temp_str String(temp);                                  // 
      
    if (temp_str.length() < 2) { temp_str " " temp_str; } // 
      
    if (temp_str.length() < 3) { temp_str " " temp_str; } //

    //------------------------------------------

     
    if (temp 40)                 // ЗАДАНИЕ ТЕМПЕРАТУРЫ ВКЛЮЧЕНИЯ...доп. оборудования
     
    if (obog == 1)                 //    !!!!!!!!!!!!!!!возможно упростить как с подсветкой lcd!!!!!!!!!!!!
     
    {                              //  
    digitalWrite(8LOW);           //
    obog obog;                //
     
    }

     if (
    temp 40)                 //ЗАДАНИЕ ТЕМПЕРАТУРЫ ВКЛЮЧЕНИЯ...
     
    if (obog == 0)                 // 
     
    {
    digitalWrite(8HIGH);          //
    obog obog;                //
     
    }  
     
    //++++++++++++++++++++++++ВЫВОД НА ЭКРАН++++++++++++++++++++++++++++++++++++++
    if (rpm 1000) {                  // мотор не заведен
      
    lcd.setCursor(0,0);             
      
    lcd.print(temp);                
      
    lcd.print("c");
      
    lcd.print("  ");

      
    lcd.setCursor(5,0);
      
    lcd.print(volt_str[0]);
      
    lcd.print(volt_str[1]);
      
    lcd.print(".");
      
    lcd.setCursor(0,1);
      
    lcd.print(volt_str[2]);
      
    lcd.print(volt_str[3]);
      
    //  1 3 9 c _ 1 2 . 3 4       пример,  температура _ напряжение
      
    delay(500);
      }
    // --------------------------------

    if (gabarit == LOW && rpm 1000) {      // вкл...выкл и мотор работает
       
    if(== 0) {
         
    lcd.clear();                          //очистка экрана
                
         
    if (mins >=60) { hour++;  mins 0; }
         
    lcd.setCursor(00); 
         
    lcd.print(hour);                      //вывод часов в пути
         
    lcd.print(":");  
         if (
    mins 10) {lcd.print("0");}
         
    lcd.print(mins);                      // вывод минут в пути
              
         
    lcd.print(" ");
         
    lcd.print(Temp2);                    // вывод температуры на улице
         
    lcd.print("c");
         
    lcd.print("  ");
         
    delay(2000);
         
    lcd.clear();                          //очистка экрана
         
    1;                               // изменяем ключ, чтоб только один раз использовался цикл
        
    }
        else                                   
        {  
         
    lcd.setCursor(00);                 
         
    lcd.print(rpm);                      
         if (
    rpm <= 9999) { lcd.print(" "); }
      
         
    lcd.setCursor(50);
         
    lcd.print(volt_str[0]);
         
    lcd.print(volt_str[1]);
         
    lcd.print(".");
         
    lcd.setCursor(0,1);
         
    lcd.print(volt_str[2]);
         
    lcd.print(volt_str[3]);
         
    //  9 9 9 9 _ 1 2 . 3 4      пример,   обороты _ напряжение
         
    delay(500);
        }
      }
    //-------------------------------------------------
    if (gabarit == HIGH && rpm 1000) {        // вкл...выкл   мотор работает
       
    if(== 1) {
         
    lcd.clear();                           //очистка экрана

         
    if (mins >=60) { hour++;  mins 0; }   
         
    lcd.setCursor(00); 
         
    lcd.print(hour);                        //вывод часов в пути
         
    lcd.print(":");
         if (
    mins 10) {lcd.print("0");}
         
    lcd.print(mins);                        // вывод минут в пути
       
         
    lcd.print(" ");
         
    lcd.print(Temp2);                       // вывод температуры на улице 
         
    lcd.print("c");
         
    lcd.print("  ");
         
    delay(2000);                            // жде 2сек
         
    lcd.clear();                            //очистка экрана
         
    0;                                  // изменяем ключ, чтоб только один раз использовался цикл
        
    }
        else                           
        {
         
    lcd.setCursor(0,0);                     //
         
    lcd.print(rpm);                         //
         
    lcd.print(" ");
         if (
    rpm <= 9999) { lcd.print(" "); }    // стераем лишнее

         
    lcd.setCursor(6,0);             // 
         
    lcd.print(temp_str[0]);
         
    lcd.print(temp_str[1]);
         
    lcd.setCursor(0,1);
         
    lcd.print(temp_str[2]);
         
    lcd.print("c");
         
    //  9 9 9 9 _ _ 1 3 9 c       пример,  обороты _ температура
         
    delay(500);
        }
      }
    //--------------маргание подсветкой экрана при предельных значениях-------------
    if (volt 1150 || volt 1450 || temp 125) {                  // УСЛОВИЯ
      
    if (millis() / 1000 >= times2 30) {                          // ИНТЕРВАЛ!!!!!!!!!!!
         
    lcd.clear();                                                  //очистка экрана
         
    lcd.setCursor(00);
      
    //-------------------
      
    float volt2;                                                   //переменная с запятой
      
    volt2 volt;
      
    volt2 volt2 100;                                          // вольты в нормальном виде
      
      
    if (volt 1150) {lcd.print(volt2);  lcd.print("v!");}        //вывод предельных значений 
      
    if (volt 1450) {lcd.print(volt2);  lcd.print("v!");}        //вывод предельных значений
      
    if (temp 125) {lcd.print(temp);    lcd.print("c!!!"); }      //вывод предельных значений
      
    if (temp 125 && (volt 1150 || volt 1450)) {lcd.setCursor(00);  
      
    lcd.print(temp); lcd.print("c"); lcd.print(volt2);}            //вывод предельных значений
      //-------------------
      
    digitalWrite(13LOW);                                         // цикл моргания подсветки
      
    delay(200);
      
    digitalWrite(13HIGH);
      
    delay(100);
      
    digitalWrite(13LOW);
      
    delay(200);
      
    digitalWrite(13HIGH); //2
      
    delay(100);
      
    digitalWrite(13LOW);
      
    delay(200);
      
    digitalWrite(13HIGH); //3
      
    delay(100);
      
    digitalWrite(13LOW);
      
    delay(300);
      
    digitalWrite(13HIGH); //3
      
    delay(100);
         
    lcd.clear();                                               //очистка экрана
      
    times2 millis() / 1000;                                     // переменная для цикла
      
    }
     }
    }
    //++++++++++++++++++++++++++++++ПРЕРЫВАНИЯ. ОБОРОТЫ ДВИЖКА+++++++++++++++++++++
    void blink()
    {
     
    noInterrupts();
     
    t0 t1;
     
    t1 micros();
     if (
    t0 0)
     if (
    t0 t1)  
    if (
    t1 t0 5000)
     {
       
    dt t1 t0;
    if (
    dt 500000dt 0;
     }
     else
       
    t1 0;
     
    interrupts();

    А может и TX и RX оба через делитель пустить???
    Последний раз редактировалось igvv; 29.03.2012 в 17:56.

  2. #292
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    В этом скетче просто String. - http://arduino.ru/Reference/String
    Нам нужно работать с "substring". - http://arduino.cc/en/Tutorial/StringSubstring
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  3. #293
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Хрен редьки не слаще... я не разберусь.

    Вот этот твой код(с мелким изменением) отработал 10 раз без ошибок. походу у меня только с терминалом телефон не дружит!!!

    PHP код:
    #include <NewSoftSerial.h> 
     
    char inchar[40];
     
    //NewSoftSerial gsm(2,3);
     
    NewSoftSerial gsm(9,8);
     
    int ledpin 13;
     
    long previousMillis 0;
     
    long interval 30000;
     
    void setup() 
     { 
     
    pinMode(ledpinOUTPUT);
     
    gsm.begin(19200); // эксперементируй со скоростью 
     
    Serial.begin(19200);
     
    gsm.flush();
     
    delay(5000);
     
    gsm.println("AT+CPMS =MT" ); // тут тоже эксперементы, или SM или МТ
     
    delay(2000);
     
    gsm.println("AT+CNMI=1,1\r");
     
    delay(2000);
     }

     
    void loop() 
     { 
     
    unsigned long currentMillis millis();
     if(
    currentMillis previousMillis interval)

     {
     
    previousMillis currentMillis;
     
    gsm.println("AT+CMGL=4\r");
     
    delay(1000); 
    }

     if(
    gsm.read()=='0'&&gsm.read()=='7'&&gsm.read()=='9'&&gsm.read()=='1'&&gsm.read()=='9'&&gsm.read()== '7'&&gsm.read()=='6'&&gsm.read()=='1')

    {
    digitalWrite(ledpin,HIGH);
    delay(60000);
    gsm.println("AT+CMGD=1\r");
    delay(2000);
    digitalWrite(ledpin,LOW);
    delay(1000);
    }


  4. #294
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    В терминале:
    1- выставь скорость, которая в скетче в Serial
    2- выставь Both NL & CR
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  5. #295
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Цитата Сообщение от metaforos Посмотреть сообщение
    В терминале:
    1- выставь скорость, которая в скетче в Serial
    2- выставь Both NL & CR
    1 скетч пока этот пользую с терминалом putty
    //http://www.compcar.ru
    uint8_t TX_Pin=9; // 2
    uint8_t RX_Pin=8; //3

    void setup()
    {
    pinMode(0, INPUT); //RX
    pinMode(1, OUTPUT);//TX

    pinMode(RX_Pin, OUTPUT);
    pinMode(TX_Pin, INPUT);
    }

    void loop()
    {
    PORTB = PIND;
    PORTD = PINB;
    }

    2 Извини, а что это, где копать, в putty(на русском) не нашел такого! а ардуиновский в ответ пишет то что я шлю.

  6. #296
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    В Ардуиновском Serial Мониторе. Если используещь NewSoftSerial, для тестов попробуй вот что:

    Tx телефона подключи к 2 пину, а Rx к 3 пину

    PHP код:
    #include <string.h>  
    #include <NewSoftSerial.h>
    NewSoftSerial phone(2,3);        
    char incoming_char=0;      

     
    void setup()
    {

     
    Serial.begin(9600);
     
    phone.begin(9600);
     
    Serial.println("Starting Communication..."); 
     } 
     
     
    void loop() { 

     if(
    phone.available() >0){
       
    incoming_char=phone.read();    
      
    Serial.print(incoming_char);  
      }

     if(
    Serial.available() >0){
       
    incoming_char=Serial.read();  
      
    Serial.print(incoming_char);
      
    phone.print(incoming_char);   
     }
     } 
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  7. #297
    Пользователь
    Регистрация
    12.11.2011
    Возраст
    49
    Сообщений
    64
    Вес репутации
    166

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    metaforos
    Спасибо... и с этим помог. Теперь команды идут отлично и ответ всегда правильный!!!

    Но есть странность
    Шлю AT а в ответ...
    at
    at
    OK
    То есть любой мой посыл два раза печатается, потом нормальный ответ.
    Мне кажется так не должно быть. Ну да и бог с ним главное проблема пропала.

  8. #298
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    У меня точно так-же
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  9. #299
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Теперь вопрос к Chip. У меня начало происходить что-то странное. Использую http://www.compcar.ru/forum/showpost...&postcount=208

    Все работает, но очень-очень тускло горят светодиоды. Раньше нормально было. Проверяю пины со светиками Blink'ом, - ярко горят. Посылаю СМС - тускло. В чем дело может быть?
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

  10. #300
    Продвинутый
    Регистрация
    20.05.2011
    Сообщений
    325
    Вес репутации
    225

    По умолчанию Re: Управление внешними устройствами с Arduino при помощи СМС

    Цитата Сообщение от metaforos Посмотреть сообщение
    Теперь вопрос к Chip. У меня начало происходить что-то странное. Использую http://www.compcar.ru/forum/showpost...&postcount=208

    Все работает, но очень-очень тускло горят светодиоды. Раньше нормально было. Проверяю пины со светиками Blink'ом, - ярко горят. Посылаю СМС - тускло. В чем дело может быть?
    Извините, туплю... Пины то я перевесил, а здесь не поменял - for(byte i=10; i<14; i++) pinMode(i, OUTPUT);
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

Страница 30 из 44 ПерваяПервая ... 202425262728293031323334353640 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •