Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя
Показано с 31 по 40 из 67
  1. #31
    Местный
    Регистрация
    04.08.2009
    Возраст
    43
    Сообщений
    184
    Вес репутации
    217

    По умолчанию Re: Парктронник

    Работа двигается потихоньку осталось решить два вопроса

    1. Это у меня не работает функция Serial.Write(), приходится использовать Serial.print(), вот что она выводит.
    1е число содержит бит-флаг-- есть препятствие и номер датчика
    2е число расстояние до препятствия в сантиметрах
    PHP код:
    137 255 0 0 ------
    ------
    138 255 0 0 ------
    ------
    136 255 0 0 ------
    ------
    139 255 0 0 ------
    ------
    137 255 0 0 ------
    ------ 
    2. Адаптировать плугин из центрифуги под ардуно.


    Все оказалось настолько просто что у меня возник вопрос почему ни кто это ранее не делал ?

    Собственно скетч.
    PHP код:
    #include <TimerOne.h>

    #define LEDPIN 13        // Вывод светодиода
    #define BTNPIN 2 

    #define BUFFER_LENGTH 100

    volatile uint16_t startImpuls;
    volatile uint16_t lengthImpuls;
    volatile uint16_t timerCount=0;

    byte buffPos 0;
    byte Buffer[BUFFER_LENGTH];

    byte packet[4];
    byte posInPacket=0;

    byte startBYTE 15;

    void setup()
    {  
    /*
        LOW — вызов прерывания всякий раз, когда на порту низкий уровень напряжения;
        CHANGE – прерывание вызывается при изменении значения на входе;
        RISING – вызов прерывания при изменении уровня напряжения с низкого (LOW) на высокое(HIGH)
        FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкое (LOW)
      */
      
    startImpuls=0;
      
    lengthImpuls=0;
      
      
    pinMode(BTNPININPUT);  
      
      for(
    int i=0iBUFFER_LENGTHi++)
        
    Buffer[i]=0;
        
      
    Serial.begin(115200);
      
      
    Timer1.initialize(20);
      
    Timer1.attachInterrupt(callback);  // attaches callback() as a timer overflow interrupt

      
    attachInterrupt(0fireUpRISING);
    }
    void callback() {  timerCount++; }

    void loop()
    {
      if (
    lengthImpuls 0)
      {
        
    uint16_t temp=0;
        
    uint16_t li lengthImpuls;
        
    lengthImpuls=0;
        
        
    //--------------------------//
        // получена приамбула "1 1 1 1"
        
    if (li >50 && li <60)
        {
           
    posInPacket =0;
        }
        
    // Расчитываю позицию массиве
        
    temp posInPacket 8;
        
    uint16_t bitPos posInPacket;
        
    // Разворачиваю позицию для метода bitSet(x,n)
        
    bitPos bitPos;
        if (
    bitPos >= 8)
        {
          
    bitPos =  posInPacket - (8*temp);
        }
       
        
    // Получен "0"
        
    if (li >&& li <6)
        {
          
    posInPacket ++;
        }

         
    // Получен "1"
        
    else if (li >10 && li <15)
        {
          
    bitSet(packet[temp],bitPos);
          
    posInPacket ++;
        }
        
    //digitalWrite(13,LOW);
        // Отправить пакет "большему брату"
        
    if (posInPacket 15)
        {
          
    detachInterrupt(0);
          
    Serial.println("------");

          for(
    int i=0i<4i++)
          {
            
    Serial.print(packet[i], DEC);
            
    Serial.print(" ");
            
    packet[i]=0;
          }
          
    Serial.println("------");
          
    posInPacket 0;
          
    attachInterrupt(0fireUpRISING);
        }
        
        
    //--------------------------//
      
    }
     }

    // Функция обработки прерывания на подъем
    void fireUp()
    {

      
    detachInterrupt(0);
      
    startImpuls timerCount;
      
    attachInterrupt(0fireDownFALLING);
    }

    // Функция обработки прерывания на подъем
    void fireDown()
    {
      
    detachInterrupt(0);
      
    lengthImpuls timerCount startImpuls;
      
    startImpuls=0;
      
    timerCount=0;
      
    attachInterrupt(0fireUpRISING);

    Последний раз редактировалось oops1; 20.02.2011 в 00:12.

  2. #32
    Местный
    Регистрация
    04.08.2009
    Возраст
    43
    Сообщений
    184
    Вес репутации
    217

    По умолчанию Re: Парктронник

    И так первую проблему решил

    Принимаются советы по улучшению/оптимизации скетча

    PHP код:
    #include <TimerOne.h>

    #define LEDPIN 13        // Вывод светодиода
    #define BTNPIN 2 

    volatile uint16_t startImpuls;
    volatile uint16_t lengthImpuls;
    volatile uint16_t timerCount=0;

    //byte buffPos = 0;

    byte packet[2];
    byte posInPacket=0;

    byte startBYTE 15;

    void setup()
    {  
    /*
        LOW — вызов прерывания всякий раз, когда на порту низкий уровень напряжения;
        CHANGE – прерывание вызывается при изменении значения на входе;
        RISING – вызов прерывания при изменении уровня напряжения с низкого (LOW) на высокое(HIGH)
        FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкое (LOW)
      */
      
    startImpuls=0;
      
    lengthImpuls=0;
      
      
    pinMode(BTNPININPUT);  
      
      
    Serial.begin(115200);
      
      
    Timer1.initialize(20);
      
    Timer1.attachInterrupt(callback);  // attaches callback() as a timer overflow interrupt

      
    attachInterrupt(0fireUpRISING);
    }
    void callback() {  timerCount++; }

    void loop()
    {
      if (
    lengthImpuls 0)
      {
        
    uint16_t temp=0;
        
    uint16_t li lengthImpuls;
        
    lengthImpuls=0;
        
        
    //--------------------------//
        // получена приамбула "1 1 1 1"
        
    if (li >50 && li <60)
        {
           
    posInPacket =0;
        }
        
    // Расчитываю позицию массиве
        
    temp posInPacket 8;
        
    uint16_t bitPos posInPacket;
        
    // Разворачиваю позицию для метода bitSet(x,n)
        
    bitPos bitPos;
        if (
    bitPos >= 8)
        {
          
    bitPos =  posInPacket - (8*temp);
        }
       
        
    // Получен "0"
        
    if (li >&& li <6)
        {
          
    posInPacket ++;
        }

         
    // Получен "1"
        
    else if (li >10 && li <15)
        {
          
    bitSet(packet[temp],bitPos);
          
    posInPacket ++;
        }
        
    //digitalWrite(13,LOW);
        // Отправить пакет "большему брату"
        
    if (posInPacket 15)
        {
          
    detachInterrupt(0);
         
         
    // Если есть препятствие тогда посылаем пакет
         
    if ((packet[0] & 8) == 0)
            
    Serial.write(packet,2);
          
          
    // сбрасываю буффер
          
    packet[0] = 0;
          
    packet[1] = 0;
          
          
    posInPacket 0;
          
          
    attachInterrupt(0fireUpRISING);
        }
        
        
    //--------------------------//
      
    }
     }

    // Функция обработки прерывания на подъем
    void fireUp()
    {

      
    detachInterrupt(0);
      
    startImpuls timerCount;
      
    attachInterrupt(0fireDownFALLING);
    }

    // Функция обработки прерывания на подъем
    void fireDown()
    {
      
    detachInterrupt(0);
      
    lengthImpuls timerCount startImpuls;
      
    startImpuls=0;
      
    timerCount=0;
      
    attachInterrupt(0fireUpRISING);

    Последний раз редактировалось oops1; 20.02.2011 в 01:07.

  3. #33
    Местный
    Регистрация
    04.08.2009
    Возраст
    43
    Сообщений
    184
    Вес репутации
    217

    По умолчанию Re: Парктронник

    Все основную работу сделал. теперь надо оптимизировать

  4. #34
    Местный Аватар для zhserg
    Регистрация
    12.11.2010
    Сообщений
    135
    Вес репутации
    192

    По умолчанию Re: Парктронник

    Молодец, поздравляю! Теперь нужно в боевых условиях испытывать.
    Плагин какой взял, переделывал его?

  5. #35
    Местный
    Регистрация
    04.08.2009
    Возраст
    43
    Сообщений
    184
    Вес репутации
    217

    По умолчанию Re: Парктронник

    Плагин тот что в центрифуге. до боев еще рано , надо код оптимизировать.

  6. #36
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Парктронник

    Молодец !!!

  7. #37
    Гуру Аватар для St@rz
    Регистрация
    20.06.2008
    Возраст
    49
    Сообщений
    2,293
    Вес репутации
    860

    По умолчанию Re: Парктронник

    oops1, класс!!!

    P.S.
    Извиняюсь за флуд. Не удержался.
    Последний раз редактировалось St@rz; 20.02.2011 в 22:07.

  8. #38
    Гуру Аватар для St@rz
    Регистрация
    20.06.2008
    Возраст
    49
    Сообщений
    2,293
    Вес репутации
    860

    По умолчанию Re: Парктронник

    Цитата Сообщение от oops1 Посмотреть сообщение
    2. Парктронник китайского производства
    oops1, а можно точнее сказать модель парктронника? А то меня тут спрашивают.

  9. #39
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Парктронник

    Цитата Сообщение от St@rz Посмотреть сообщение
    oops1, а можно точнее сказать модель парктронника? А то меня тут спрашивают.
    Внимательней прочитай сообщение в шапке.

  10. #40
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Парктронник

    Все основную работу сделал. теперь надо оптимизировать
    Плагин для CF правил или под него подстроился?

Страница 4 из 7 ПерваяПервая 1234567 ПоследняяПоследняя

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

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

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

Метки этой темы

Ваши права

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