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

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

    Вобщем ничего нового не скажу ... после определенного места в массиве на Freeduino2009 начинаются ошибки.
    У кого платка с ATmega168, проверьте у себя этот скетч!!! также будет или нет???
    Да, скорости менял, не помогает.
    PHP код:
    #include <NewSoftSerial.h>
     
    NewSoftSerial mySerial(2,3); 
     
    int i=1;
     
    char strok[61]="";
     
    int ledpin 13;
     
    long previousMillis 0;
     
    long interval 30000;
     
     
    void setup() 
     { 
     
    pinMode(ledpinOUTPUT);
     
    mySerial.begin(9600);
     
    Serial.begin(9600);
     
    mySerial.flush();
     
    delay(2000);
     
    mySerial.println("AT+CPMS =MT\r" );
     
    delay(2000);
     
    mySerial.println("AT+CNMI=1,1\r");
     
    delay(2000);
     }

     
    void loop() 

    unsigned long currentMillis millis();
    if(
    currentMillis previousMillis interval)

     
    previousMillis currentMillis;
     
    mySerial.println("AT+CMGL=4\r");
     
    delay(100); 
    }
     
    // отправляю СМС  -   #a1
    if(mySerial.read()=='0'&&mySerial.read()=='7'&&mySerial.read()=='9'//только, если в Serial1 есть СМС, а то он начинает читать с АТ+ и т.д.
    {
     for (
    i=1i<58i++) strok [i] = mySerial.read(); delay(100);
            
    //ОТПРАВЛЮЯ   #a1
                             // ЭТАЛОН
                               //  0 
                               //  7
                               //  9
     
    Serial.println(strok[1]); //  1    1
     
    Serial.println(strok[2]); //  9    9
     
    Serial.println(strok[3]); //  7    7
     
    Serial.println(strok[4]); //  6    6
     
    Serial.println(strok[5]); //  1    1
     
    Serial.println(strok[6]); //  9    9
     
    Serial.println(strok[7]); //  8    8
     
    Serial.println(strok[8]); //  9    9
     
    Serial.println(strok[9]); //  9    9
     
    Serial.println(strok[10]); // 0    0
     
    Serial.println(strok[11]); // 1    1
     
    Serial.println(strok[12]); // F    F
     
    Serial.println(strok[13]); // 0    0
     
    Serial.println(strok[14]); // 2    2
     
    Serial.println(strok[15]); // 4    4
     
    Serial.println(strok[16]); // 0    0
     
    Serial.println(strok[17]); // B    B
     
    Serial.println(strok[18]); // 9    9
     
    Serial.println(strok[19]); // 1    1
     
    Serial.println(strok[20]); // 9    9 
     
    Serial.println(strok[21]); // 7    7
     
    Serial.println(strok[22]); // 6    6
     
    Serial.println(strok[23]); // 1    1
     
    Serial.println(strok[24]); // 4    4
     
    Serial.println(strok[25]); // 6    6
     
    Serial.println(strok[26]); // 4    4
     
    Serial.println(strok[27]); // 3    3
     
    Serial.println(strok[28]); // 3    3
     
    Serial.println(strok[29]); // 9    9
     
    Serial.println(strok[30]); // F    F  ПОСЛЕ ЭТОГО МЕСТА ИДУТ ОШИБКИ
     
    Serial.println(strok[32]); // 2    0  0  ошибка 
     
    Serial.println(strok[32]); // 0    0  0  ошибка 
     
    Serial.println(strok[33]); // 0    0  7  ошибка 
     
    Serial.println(strok[34]); // 0    7  0  ошибка 
     
    Serial.println(strok[35]); // 0    0  1  ошибка 
     
    Serial.println(strok[36]); // 2    1  1  ошибка   
     
    Serial.println(strok[37]); // 1    1  2  ошибка 
     
    Serial.println(strok[38]); // 4    2  0  ошибка 
     
    Serial.println(strok[39]); // 0    0  4  ошибка 
     
    Serial.println(strok[40]); // 7    4  3  ошибка 
     
    Serial.println(strok[41]); // 0    3  6  переменная
     
    Serial.println(strok[42]); // 1    6  1  переменная
     
    Serial.println(strok[43]); // 1   "1" 0  переменная
     
    Serial.println(strok[44]); // 2   "0" 3  переменная
     
    Serial.println(strok[45]); // 0   "3" A  переменная
     
    Serial.println(strok[46]); // 4   "A" 3  переменная
     
    Serial.println(strok[47]); // 3   "3" 7
     
    Serial.println(strok[48]); // 6   "7" 0 
     
    Serial.println(strok[49]); //"1"  "0" 0 
     
    Serial.println(strok[50]); //"0"   0  C
     
    Serial.println(strok[51]); //"3"   *  *
     
    Serial.println(strok[52]); //"A"   *  *
     
    Serial.println(strok[53]); //"3"   *  *
     
    Serial.println(strok[54]); //"7"   *  *
     
    Serial.println(strok[55]); //"0"   *  
     
    Serial.println(strok[56]); // 0    *  *
     
    Serial.println(strok[57]); // C    C  *
     
    Serial.println(strok[58]); //         *

     
    digitalWrite (ledpinHIGH);
     
    delay(3000); 
     
    digitalWrite (ledpinLOW);
     
    delay(10000); 
    }

    Присутствует пропуск-потеря информации, неверная информация и закорючки...и все это происходит строго после определенного момента. происходит.
    .
    Последний раз редактировалось igvv; 09.04.2012 в 02:23.

  2. #352
    Пользователь
    Регистрация
    08.12.2011
    Сообщений
    84
    Вес репутации
    169

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

    еще вариант незаметил где очистка флеша идет и еще я так понял в терминале таие же моменты происходят
    Последний раз редактировалось andrei2882; 08.04.2012 в 01:19.

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

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

    Как определить что подкрутить когда этот флеш чистится.???
    Пробовал менять mySerial.flush(); delay(2000); на 5000. Но это не....то.

    В терминале если я даю команду- ручками вбиваю, то в терминал ответ приходит четко! без ошибок и закорючек!!! С терминалом проблем нету никаких...все работает как надо. Вся строка СМС выводится по команде AT+CMGL=4 целиком без ошибок.

    Проблема только в этом месте...ну не хочет без ошибок считываться с телефона никак блин. А кто тут виноват телефон или ардуина....больше похоже на ардуину! ИМХО.
    ВОТ БЫ КТО ПРОВЕРИЛ!

    + + + +
    А если в терминальном скетче забить строку
    mySerial.println("AT+CMGL=4\r");
    Будет ответ в терминал? Надо попробовать позже.
    Последний раз редактировалось igvv; 08.04.2012 в 02:29.

  4. #354
    Пользователь
    Регистрация
    08.12.2011
    Сообщений
    84
    Вес репутации
    169

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

    очистку флеша делай перед вызвом AT+CMGL=4\r в цикле void loop()

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

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

    Цитата Сообщение от andrei2882 Посмотреть сообщение
    очистку флеша делай перед вызвом AT+CMGL=4\r в цикле void loop()
    Так?
    mySerial.flush();
    delay(2000);
    mySerial.println("AT+CMGL=4\r");

    Попробовал, ну что сказать -стало заметно стабильнее как-то, но всеравно есть пропуски там где и раньше где 0000 подряд. То 00 вылезет то 000 то 0000 затем вроде идет все правильно а в конце последние 2-4 символа косячат. А иной раз без ошибки выдает. Первые символы смс #a1 - 103А выдает стабильно, остальные *** как повезет.

    Потом подробнее-поточнее попробую потестить.

  6. #356
    Пользователь
    Регистрация
    08.12.2011
    Сообщений
    84
    Вес репутации
    169

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

    опробуй так

    unsigned long currentMillis = millis();

    if(currentMillis - previousMillis > interval) {

    previousMillis = currentMillis;

    delay(1000);

    mySerial.flush();

    delay(1000);

    mySerial.println("AT+CMGL=4\r"); }

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

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

    Так стало хуже, уже с того известного места строго стабильно идут закорючки.

    Вобщем я ничего не понимаю, почему это происходит в скетче и почему этого нету чисто в терминале кщ

    Потом как я только не пробовал всегда последние 6-7 символов закорючками, видимо какая то часть информации из этой строки несчитывается в телефоне и пропадает.
    Возможно виноват и телефон где-то читал что на МЕ45 (и кажетсяS45) какаято своеобразная флеш память и там с этим были заморочки.

    Попробую понять что за часть пропадает и за что она отвечает.

    Хотелось бы чтоб ктото имеющий freeduino протестил на другом телефоне скетч.

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

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

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

    И еще вопрос! почему в прошлых скетчах получалось 60символов а тут 1символ равен двум цифрам и того выходит 120???

    PHP код:
     #include <NewSoftSerial.h>
     
    NewSoftSerial mySerial(2,3); 
     
    int a=1;
     
    int i=1;
     
    int ledpin 8;
     
     
    void setup() 
     {  
     
    pinMode(ledpinOUTPUT);
     
    mySerial.begin(9600);
     
    Serial.begin(9600);
     
    mySerial.flush();
     
    delay(1000);
     
    mySerial.println("AT+CPMS =MT\r" );
     
    delay(1000);
     
    mySerial.println("AT+CNMI=1,1\r");
     
    delay(1000);
     }

     
    void loop() 
     {
       
    mySerial.flush();
     
    delay(1000);
     
    mySerial.println("AT+CMGL=4\r");
     
    delay(100); 
             
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //   
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //   
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //
     
    Serial.print(mySerial.read()); //  
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); // 
     
    Serial.print(mySerial.read()); //
     
    Serial.println(mySerial.read()); //

     
    Serial.print("a=");
     
    a=mySerial.read();
     
    Serial.println(a); //  
     
     
    i=mySerial.read();
     
    Serial.print("i=");
     
    Serial.println(i); // 
     
      
    if(a==70 && i==50)
     {
      
    digitalWrite(ledpin,HIGH);
       
    delay(5000);
      
    digitalWrite(ledpin,LOW);
       
    delay(1000); 
     }
     
     
    delay(10000); 



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

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

    60-120 скорее всего из-за разности в типе данных и кодировке. Ты засовываешь информацию в int, которая занимает 2 байта памяти, а в предыдущих скетчах был char - занимает 1 байт памяти.
    Liliput 629 GL, Intel Atom N230 1.6, HDD 200 GB, ОЗУ 2GB, Globalsat GT-100.

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

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

    Мой прошлый скетч оказывается с той же проблемой.

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

    .

    .

    Всеж меня мучает ...а почему в этом скетче все выводится как надо!
    PHP код:
    #include <string.h>  
    #include <NewSoftSerial.h>
    NewSoftSerial phone(2,3);   //    Tx телефона подключи к 2 пину, а Rx к 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);   
     }
     } 

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

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

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

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

Ваши права

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