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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Местный
    Регистрация
    07.12.2014
    Сообщений
    102
    Вес репутации
    137

    По умолчанию Re: Бортовой компьютер мотоцикла

    Индикатор включенной передачи.

    Пока вместо герконов ,пока использую кнопки, они подключены к аналоговому входу через делитель напряжения.
    Принцип работы : при замыкании геркона UP номер передачи прирастает от 1 до 5, при замыкании геркона DOWN убывает от 5 до 1, время удержания геркона замкнутым роли не играет. Для сигнала о нейтральной передаче используется цифровой вход (кнопки не нашёл, просто замыкаю на массу ), поскольку нейтральная передача возможна только между первой и второй передачей, после нейтрали можно включить либо первую либо вторую скорость (герконы UP и DOWN), так же минус с датчика нейтрали нужен для синхронизации счётчика, ведь мотоцикл можно завести не только на нейтрали но и на скорости

    http://www.youtube.com/watch?feature...&v=RLtfptgGj3s

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

    static PCD8544 lcd;

    const 
    int GEAR_ANALOG_CONTROL_PIN 4;
    const 
    int GEAR_DIGITAL_NEITRAL_PIN 12;

    const 
    int UP_GEAR 300 // Делитель напряжения А4
    const int DOWN_GEAR 550// Делитель напряжения А4

    int GEAR_CURENT;
    int gearneital;
    int ug;

    boolean flag_gearH falseflag_gearL false;

    void setup()
    {
      
    pinMode(GEAR_DIGITAL_NEITRAL_PININPUT);         
      
    digitalWrite(GEAR_DIGITAL_NEITRAL_PINHIGH);       // включить подтягивающий резистор
      
    lcd.begin(8448);
    }

    int _Gear_Switch(int abcint gear1)// напряжение ацп, up или down
    {
      
    abcgear1;

      if (
    g) {flag_gearL true;}
      if (
    == && flag_gearL == true) {flag_gearH true;}
      if (
    flag_gearH == true && flag_gearL == true)
      {
        
    flag_gearH false
        
    flag_gearL false
        if (
    == UP_GEAR && GEAR_CURENT 5GEAR_CURENT++; //Ограничиваем наивысшую передачу на 5
        
    if (== DOWN_GEAR && GEAR_CURENT 1GEAR_CURENT--;//Ограничиваем низшую передачу на 1
        
    lcd.print("               ");
        
    lcd.setCursor(00);
        
    lcd.print("Gear - ");
        
    lcd.print(GEAR_CURENT);
       }
    }

    void loop()
    {   
      
    int anread analogRead(GEAR_ANALOG_CONTROL_PIN);
      if (
    anread DOWN_GEAR) {_Gear_Switch(anread,DOWN_GEAR);gear DOWN_GEAR;} // Если напряжение на делителе "равно" константе (замкнут геркон DOWN) то передаём в функцию напряжение и константу
        
    else if (anread UP_GEAR) {_Gear_Switch(anread,UP_GEAR);gear UP_GEAR;} // Замкнут геркон UP

      
    if (anread == && gear == DOWN_GEAR) {_Gear_Switch(0,DOWN_GEAR);gear 0;} // Передам в функцию ноль, геркон отключен
      
    if (anread == && gear == UP_GEAR) {_Gear_Switch(0,UP_GEAR);gear 0;} //
      
      
    if ( digitalRead(GEAR_DIGITAL_NEITRAL_PIN)== LOW ) {lcd.setCursor(00); lcd.print("Neitral        "); GEAR_CURENT 1;} //Если нейтраль то номер передачи равен одному
     

    Последний раз редактировалось Oleg_33; 15.01.2015 в 11:44.

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

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

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

Ваши права

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