Показано с 1 по 10 из 67

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Местный
    Регистрация
    04.08.2009
    Возраст
    43
    Сообщений
    184
    Вес репутации
    218

    По умолчанию 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.

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

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

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

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

Ваши права

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