Страница 1 из 11 1234567 ... ПоследняяПоследняя
Показано с 1 по 10 из 101
  1. #1
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,382
    Вес репутации
    10

    По умолчанию Автоматическое переключение на камеру заднего хода.

    Данное решение предназначено , для мониторов не имеющих автоматического переключения на камеру заднего хода .
    При сборке главное не перепутать полярность диода, иначе контроллер умрет.

    Код для Carduino nano v.3 (Arduino, Freeduino)
    PHP код:
    int av_mode 13;     //Выход для нажатии кнопки
    int back_on 12;    //вход сигнал включения задней скорости

    void setup() 

      
    pinMode(av_modeOUTPUT);  
      
    pinMode(back_onINPUT);
      
    digitalWrite(back_onHIGH); //Подключить внутренний подтягивающий резистор
      
    digitalWrite(av_modeLOW);
      
    Serial.begin(115200); 

    //----------------------------------------------- 
    void loop() 

      if (
    digitalRead(back_on) == HIGH)  //проверить включен ли задний ход
      
    {
        
    button_on();  //превое нажатие
        
    button_on();   //второе нажатие
      
           
    while(digitalRead(back_on) == HIGH)
           {
             
    // тупо зацикливаем пока не выключится задний ход  
           
    }
           
           
    delay(500); //ЗДЕСЬ МОЖНО СДЕЛАТЬ ЗАДЕРЖКУ ВЫКЛЮЧНИЯ КАМЕРЫ ЗХ
          
             
    button_on();  // нажатие кнопки для возврата монитора в режим PC  
        
    }    

    //-----------------------------------------------
    void button_on() 
    {
            
    digitalWrite(av_modeHIGH);  // нажать кнопку
            
    delay(200);                //длительность нажатия кнопки
            
    digitalWrite(av_modeLOW);  // отпустить кнопку  
            
    delay(200);                //длительность между нажатиями кнопки   

    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	cam_on.PNG 
Просмотров:	8727 
Размер:	10.6 Кб 
ID:	6423   Нажмите на изображение для увеличения. 

Название:	cam_on1.PNG 
Просмотров:	6725 
Размер:	8.2 Кб 
ID:	6424  
    Последний раз редактировалось Chip; 22.02.2011 в 13:20.

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

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Можно также сделать переключатель на камеру З.Х. для ноутбуков .
    Последний раз редактировалось Chip; 12.09.2009 в 20:18.

  3. #3
    Новичок
    Регистрация
    04.11.2009
    Возраст
    53
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Я предложу свой вариант. Еще сырой. но идея развивается. Мой код работает на прерываниях и без задержек в теле программы. При одновременной обработке нескольких задач это критично.
    Сейчас программка работает с енкодером для регулировки громкости и переключает монитор. Дальше можно добавлять все что надо. У меня будет включать/выключать bluetooth gps, энкодер будет рулить основными параметрами звука (громкость, баланс, фадер), мониторить температуру за бортом и в салоне, может еще что придумаю. Часть функций будут отрабатывать напрямую исполнительными устройствами, а часть будет заведена на комп (например температура).
    Еще раз подчеркну - код не оптимальный совсем. Сегодня только начал писать.

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

    #define BACKINPUTPIN 2    // Вход включения задней передачи
    #define BACKOUTPUTPIN 13  // Выход на кнопку монитора
    #define TIMEOUTBACKON 20 // Задержка ожидания на включение камеры для устранения дребезга контактов и ложных срабатывания при включении передачи (у меня автоматическая коробка)
    #define ENCODERPIN1 4    // Вход энкодера 1
    #define ENCODERPIN2 5    // Вход энкодера 2
                                        // центральный вход энкодера на массу

    int stateprevstate 0count 0backstate LOWcurrent_backstate LOW;
    int set_flag_control_state_back 0;
    int command_run 0set_command 0;
    int time_massive13[5] = {0,0,0,0,0};
    int stat_massive13[5] = {0,0,0,0,0};
    int pos_massive13 0;
    int nextEncoderState[4] = { 203};
    int prevEncoderState[4] = { 130};

    void setup()
    {
      
    pinMode(BACKINPUTPININPUT);
      
    pinMode(ENCODERPIN1INPUT);
      
    pinMode(ENCODERPIN2INPUT);
      
    digitalWrite(BACKINPUTPINHIGH);
      
    digitalWrite(ENCODERPIN1HIGH);
      
    digitalWrite(ENCODERPIN2HIGH);
      
    Serial.begin(9600); 
      
    pinMode(BACKOUTPUTPINOUTPUT);
      
    digitalWrite(BACKOUTPUTPINLOW);
      
    current_backstate digitalRead(BACKINPUTPIN);
      
    backstate digitalRead(BACKINPUTPIN);
      
    MsTimer2::set(100flash); // 100ms period
      
    MsTimer2::start();
    }

    void loop()
    {

      if(
    change_state_back())
      {
        
    set_flag_control_state_back TIMEOUTBACKON;  // взвели флаг контроля для устранения дребезга
        
    set_command 1;
      }

      
    state = (digitalRead(ENCODERPIN2) << 1) | digitalRead(ENCODERPIN1);
      if (
    state != prevstate) {
        if (
    state == nextEncoderState[prevstate]) {
           
    count++;
        } else if (
    state == prevEncoderState[prevstate]) {
           
    count--;
        }
        
    Serial.println(countDEC);
        
    prevstate state;
      }
    }

    void flash() {
      if(
    pos_massive13)
      {
        

        if(
    time_massive13[pos_massive13-1]--)
        {
          return;
        }
        
    digitalWrite(BACKOUTPUTPINstat_massive13[pos_massive13-1]);
        
    pos_massive13++;
        if(!
    time_massive13[pos_massive13-1])
        {
          
    pos_massive13 0;
          return;
        }
      }
      else if(
    set_flag_control_state_back)
      {
        if(!--
    set_flag_control_state_back)
        {
          if(
    current_backstate != backstate)
          {
            
    current_backstate backstate;
            if(
    backstate)
            {
              
    stat_massive13[0] = 1;  // команда "один раз зажечь на 0.2с и потушить.
              
    time_massive13[0] = 2;
              
    stat_massive13[1] = 0;
              
    time_massive13[1] = 2;
              
    time_massive13[2] = 0;
              
    pos_massive13 1;
            }
            else
            {
              
    stat_massive13[0] = 1;  // команда "два раза зажечь на 0.2с и потушить.
              
    time_massive13[0] = 2;
              
    stat_massive13[1] = 0;
              
    time_massive13[1] = 2;
              
    stat_massive13[2] = 1;
              
    time_massive13[2] = 2;
              
    stat_massive13[3] = 0;
              
    time_massive13[3] = 2;
              
    time_massive13[4] = 0;
              
    pos_massive13 1;
            }
          }
        }
      }
      return;
    }
      

    int change_state_back()
    {
      if(
    backstate != digitalRead(BACKINPUTPIN))
      {
        
    backstate digitalRead(BACKINPUTPIN);
        return 
    1;
      }
      return 
    0;

    Последний раз редактировалось Chip; 04.11.2009 в 12:45.

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

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Жалко для задней скорости прерывание использовать, для нее не требуется моментальной реакции(мкс), а внешних прерываний всего 2 и из них одно уже выделено под энкодер.
    Последний раз редактировалось Chip; 04.11.2009 в 13:35.

  5. #5
    Новичок
    Регистрация
    04.11.2009
    Возраст
    53
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Цитата Сообщение от Chip Посмотреть сообщение
    Жалко для задней скорости прерывание использовать, для нее не требуется моментальной реакции(мкс), а внешних прерываний всего 2 и из них одно уже выделено под энкодер.
    В настоящий момент задействовано только таймерное прерывание. Энкодер по опросу работает. Я тоже не вижу смысла под периферию юзать прерывания. Может только под что-то критическое?

  6. #6
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    692

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    а если деть больше некуда, то не все ли равно?
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

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

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Цитата Сообщение от (vS) Посмотреть сообщение
    а если деть больше некуда, то не все ли равно?
    В том то и проблема , что прерываний как всегда не хватает

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

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Цитата Сообщение от vab3 Посмотреть сообщение
    В настоящий момент задействовано только таймерное прерывание. Энкодер по опросу работает. Я тоже не вижу смысла под периферию юзать прерывания. Может только под что-то критическое?
    Извини сразу код не глянул.

  9. #9
    Местный
    Регистрация
    23.09.2009
    Возраст
    45
    Сообщений
    152
    Вес репутации
    217

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    У меня коробка автомат и мне нужен алгоритм переключения на камеру ЗХ с задержками, т.е. при коротком импльсе ничего не происходит, при длинном импульсевыдается сигнал на моник, который и переключает на камеру ЗХ. Хотел реализовать на кардуине, но чего-то не получается =(

    вот код.

    PHP код:
    int av_mode 13;     //Выход для нажатии кнопки 
    int back_on 12;    //вход сигнал включения задней скорости 

    void setup()  
    {  
      
    pinMode(av_modeOUTPUT);   
      
    pinMode(back_onINPUT); 
      
    digitalWrite(back_onHIGH); //Подключить внутренний подтягивающий резистор 
      
    digitalWrite(av_modeLOW); 
      
    Serial.begin(115200);  
    }  
    //-----------------------------------------------  
    void loop()  
    {  
      if (
    digitalRead(back_on) == HIGH)  //проверить включен ли задний ход 
      

        
    button_on();  //превое нажатие 
       
           
    while(digitalRead(back_on) == HIGH
           { 
             
    // тупо зацикливаем пока не выключится задний ход   
           

            
           
    delay(500); //ЗДЕСЬ МОЖНО СДЕЛАТЬ ЗАДЕРЖКУ ВЫКЛЮЧНИЯ КАМЕРЫ ЗХ 
           
             
    button_off();  // нажатие кнопки для возврата монитора в режим PC   
        
    }     
    }  
    //----------------------------------------------- 
    void button_on()  

            
    digitalWrite(av_modeHIGH);  // нажать кнопку 


    void button_off()  

            
    digitalWrite(av_modeLOW);  // отпустить кнопку   

    к VIN и gnd поключил +12 и -12В соответственно от компьютерного блока питания, к D13 и к gnd подключил мильтимитр. Включаю комповый БП, мильтиметр показывает 0В. Все правильно. На D12 подаю +12В от VIN (тупо на него замыкаю) Начинают дико грется контроллер. Убираю 12В с D12 мильтиметр скачет на 1.5в, а потом опять показывает ноль. Где моя ошибка?

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

    По умолчанию Re: Автоматическое переключение на камеру заднего хода.

    Диод правильно подключил?

Страница 1 из 11 1234567 ... ПоследняяПоследняя

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

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

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

Ваши права

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