Страница 1 из 5 12345 ПоследняяПоследняя
Показано с 1 по 10 из 43
  1. #1
    Продвинутый
    Регистрация
    03.06.2012
    Возраст
    38
    Сообщений
    210
    Вес репутации
    196

    По умолчанию Стеклоподъемники с сенсорными кнопками

    Ну вот теперь новый проект все конечно знают мой первый http://compcar.ru/forum/showthread.php?t=9067 так вот почему я решил выделить его в отдельную тему по тому что здесь все по другому с самого начала я хотел это сделать довеском уже к имеющейся плате (управление голосом и ее компоненты) но потом мне не хватило выходов на плате я начал их множить при помощи сдвигового регистра хотел все реализовать на доводчиках аннн нет после юзанья такого доводчика я понял (он не удовлетворял моим требованиям) что придется делать все самому С тех пор понеслась я заказал ардуино мега2560 Вот она к стате лежит сверкает по левую мою руку

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

Название:	DSC_1728[1].jpg 
Просмотров:	2017 
Размер:	115.3 Кб 
ID:	17570


    стабилизатор напряжения у меня был все с тогоже сайта заказывал ранее плата для зборки у меня была.

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

Название:	DSC_1729[1].jpg 
Просмотров:	1586 
Размер:	120.7 Кб 
ID:	17571

    схема нарисовал только вчера

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

Название:	img005.jpg 
Просмотров:	2095 
Размер:	153.9 Кб 
ID:	17572

    Принцип работы:

    Всего 9 кнопок, по 2 на каждую дверь и 3 на дверь водителя. На всех дверях функция атомата которая срабатывает по двойному клику, почму двойному, по тому, что может получиться эффект скольжения. Те кто ставили доводчики сктекол с функцией автомата, поймут меня (стекло очень трудно подогнать в то место в которое хочешь ), а тут гоняй сколько хочешь . Автомат и вуерх и вниз. И только по двойному клику, на практике посмотрим как это будет выглядить. В водительской двери третья кнопка, будет иметь функцию переключателя. Например нажатие на 2 секунды на табло загорается соответствующий диод или цифра (пока еще не определился) и уже с водительской двери можно будет управлять любым стеклоподъемником, в зависимости от цифры или индикатора. А если ее зажать на 4 секунды то сработает режим блока, все три стеклоподъемника закроются и заблокируются, а водитель сможет ими управлять путем 2-х секундного переключения между ними. Tще была мысль, поставить бипер с условными сигналами, было бы удобно. Еще можно будет управлять магнитолой. На рисунке, на втором, который я нарисовал от руки, я нарисовал сдвиговый регистр, от которого я отказался, так как у меги вполне хватает выходов и все управление магнитолой, можно будет сделать на одной плате с минимальной разводкой. Управлять я смогу громкостью, переключениями треков и тишиной. Все это работает через блютус. Сначала нано принимает сигнал, а потом по Тх и Рх посылает на мегу, а та в свою очередь управляет магнитолой. Так же с телефона по блютус можно будет управлять и стеклоподъемниками, но только по парам и по сторонам и то, только в крайних полождениях, либо открыть, либо закрыть. Еще думал, но уже в качестве прикола, попробывать сделать при одновременном зажатии 2-х кнопок, на любой из задних дверей, на 2 секунды, отключение управления стеклоподъемником и подключением функции управления магнитолой. Например громгостью! При отключении питания, (постановке на сигнализацию) ардуино будет видеть это и закрывать все стеклоподъемники, по парам или нет, еще не определился и отключаться путем, отключения питания на транзисторе, который будет отключать полностью питание, на всем устройстве! Естесственно, при обрыве тросика, стеклоподъемник будет работать в ту или иную сторону, не более 10-15 секунд, а потом отклюаться.



    вууух вроде как то так ес что вспомню то напишу по ходу


    есть уже первые наработки во первых мне удалось вынести сенсорную кнопку на конец 6-и метрового провода (обязательно экранированного ) и удалось опять же таки не без помощи manu_245 сделать эту кнопку мулькликовой

    PHP код:
    /* 4-Way Button:  Click, Double-Click, Press+Hold, and Press+Long-Hold Test Sketch

    By Jeff Saltzman
    Oct. 13, 2009

    To keep a physical interface as simple as possible, this sketch demonstrates generating four output events from a single push-button.
    1) Click:  rapid press and release
    2) Double-Click:  two clicks in quick succession
    3) Press and Hold:  holding the button down
    4) Long Press and Hold:  holding the button for a long time 
    */

    #include <CapacitiveSensor.h>

    CapacitiveSensor   Sensor1 CapacitiveSensor(4,2);
    #define buttonPin 19        // analog input pin to use as a digital input
    #define ledPin1 18          // digital output pin for LED 1
    #define ledPin2 17          // digital output pin for LED 2
    #define ledPin3 16          // digital output pin for LED 3
    #define ledPin4 15          // digital output pin for LED 4


    // LED variables
    boolean ledVal1 false;    // state of LED 1
    boolean ledVal2 false;    // state of LED 2
    boolean ledVal3 false;    // state of LED 3
    boolean ledVal4 false;    // state of LED 4

    // Button timing variables
    int debounce 20;          // ms debounce period to prevent flickering when pressing or releasing the button
    int DCgap 250;            // 
    int holdTime 1000;        // ms hold period: how long to wait for press+hold event
    int longHoldTime 3000;    // ms long hold period: how long to wait for press+hold event



    boolean flag=false;
    int checkButton();   

     
        
    // Button variables
    boolean buttonVal HIGH;   // value read from button
    boolean buttonLast HIGH;  // buffered value of the button's previous state
    boolean DCwaiting false;  // whether we're waiting for a double click (down)
    boolean DConUp false;     // whether to register a double click on next release, or whether to wait and click
    boolean singleOK true;    // whether it's OK to do a single click
    long downTime = -1;         // time the button was pressed down
    long upTime = -1;           // time the button was released
    boolean ignoreUp false;   // whether to ignore the button release because the click+hold was triggered
    boolean waitForUp false;        // when held, whether to wait for the up event
    boolean holdEventPast false;    // whether or not the hold event happened already
    boolean longHoldEventPast false;// whether or not the long hold event happened already


    //=================================================

    void setup() {
      
      
    Serial.begin(115200);
      
        
    // Set button input pin
        
    pinMode(buttonPinINPUT);
        
    digitalWrite(buttonPinHIGH );
        
    // Set LED output pins
        
    pinMode(ledPin1OUTPUT);
        
    digitalWrite(ledPin1ledVal1);
        
    pinMode(ledPin2OUTPUT);
        
    digitalWrite(ledPin2ledVal2);
        
    pinMode(ledPin3OUTPUT);    
        
    digitalWrite(ledPin3ledVal3);
        
    pinMode(ledPin4OUTPUT);    
        
    digitalWrite(ledPin4ledVal4);
        


    }


    void loop()                      
    {  
        
     
       
       
       
    int b checkButton();
        
        if (
    == 1clickEvent();
        if (
    == 2doubleClickEvent();
        if (
    == 3holdEvent();
        if (
    == 4longHoldEvent();
      }
        
    // Get button event and act accordingly
        
      
    int checkButton()
        {  
        
    int event 0;
        
        
    long temp1 =  Sensor1.capacitiveSensor(30);
        
    Serial.println(temp1);
        if(
    temp1>1000)
        
    {
      
    buttonVal=0;
    }
    else 
    buttonVal=1;

       
        
        
    // Button pressed down
        
    if (buttonVal == LOW && buttonLast == HIGH && (millis() - upTime) > debounce )
        {
            
    downTime millis();
            
    ignoreUp false;
            
    waitForUp false;
            
    singleOK true;
            
    holdEventPast false;
            
    longHoldEventPast false;
            if ((
    millis()-upTime) < DCgap && DConUp == false && DCwaiting == true )  DConUp true;
            else  
    DConUp false;
            
    DCwaiting false;
        }
        
    // Button released
        
    else if (buttonVal == HIGH && buttonLast == LOW && (millis() - downTime ) > debounce)
        {        
            if (
    not ignoreUp)
            {
                
    upTime millis();
                if (
    DConUp == falseDCwaiting true;
                else
                {
                    
    event 2;
                    
    DConUp false;
                    
    DCwaiting false;
                    
    singleOK false;
                }
            }
        }
        
    // Test for normal click event: DCgap expired
        
    if ( buttonVal == HIGH && (millis()-upTime) >= DCgap && DCwaiting == true && DConUp == false && singleOK == true && event != )
        {
            
    event 1;
            
    DCwaiting false;
        }
        
    // Test for hold
        
    if (buttonVal == LOW && (millis() - downTime) >= holdTime ) {
            
    // Trigger "normal" hold
            
    if (not holdEventPast)
            {
                
    event 3;
                
    waitForUp true;
                
    ignoreUp true;
                
    DConUp false;
                
    DCwaiting false;
                
    //downTime = millis();
                
    holdEventPast true;
            }
            
    // Trigger "long" hold
            
    if ((millis() - downTime) >= longHoldTime)
            {
                if (
    not longHoldEventPast)
                {
                    
    event 4;
                    
    longHoldEventPast true;
                }
            }
        }
        
    buttonLast buttonVal;
        return 
    event;

      }





    //=================================================
    // Events to trigger

     
    void clickEvent()

     {
        
    ledVal1 = !ledVal1;
        
    digitalWrite(ledPin1ledVal1);
    }
    void doubleClickEvent() {
        
    ledVal2 = !ledVal2;
        
    digitalWrite(ledPin2ledVal2);
    }
    void holdEvent() {
        
    ledVal3 = !ledVal3;
        
    digitalWrite(ledPin3ledVal3);
    }
    void longHoldEvent() {
        
    ledVal4 = !ledVal4;
        
    digitalWrite(ledPin4ledVal4);
        
        
         
    Serial.println (buttonVal);



    на сегодняшний день жду датчики тока но уже сейчас подбираю кое какие компоненты к примеру на рисунке к каждому входу ULN2003A параллельно подключены светодиоды для визуализации и отладки процессов так вот планирую теперь применять резисторные сборки принимается любая критика)))) ааа чуть не забыл доп информация, покупал все в магазине https://duino.ru/
    Последний раз редактировалось Chip; 19.03.2017 в 03:05.

  2. #2
    Продвинутый
    Регистрация
    03.06.2012
    Возраст
    38
    Сообщений
    210
    Вес репутации
    196

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    только что опытным путем выяснил что вполне достаточно резистора в 50 кОм при касании значение в мониторе порта не превышает 50 - 60 а при состоянии покоя 2-3 а когда был 1 мОм то значение при касании могло подняться до 170000 и скорость значительно падала а вот от конденсатора избавиться не удалось иногда значения подвисали!

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

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    При использовании 50к, через пластиковую карту срабатывает?

  4. #4
    Продвинутый
    Регистрация
    03.06.2012
    Возраст
    38
    Сообщений
    210
    Вес репутации
    196

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    нет у меня концелярские кнопки разноцветные так вот при 50 кОм работает отлично а когда слой изоленты сверху налепишь то уже гораздо сложнее думаю что через пластиковую карту уже это будет не возможно при таком номинале Я планмрую перекрасить кнопки в спец краску светоотражающую кислотного цвета в слоев 5 )))) по этому в моем случае 50 кОм то что надо

  5. #5
    Продвинутый
    Регистрация
    16.01.2013
    Сообщений
    259
    Вес репутации
    205

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    идея конечно хороша! но-о! вся проблема в том как этим управлять в пути(тактильность) и случайные прикосновения рук?! и ещё: насколько увеличится кол-во проводов на каждую дверь?
    Последний раз редактировалось Vlad-bodryi; 27.02.2014 в 17:10.

  6. #6
    Продвинутый
    Регистрация
    03.06.2012
    Возраст
    38
    Сообщений
    210
    Вес репутации
    196

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    Насчет тактильности, я же использую канцелярские кнопки из любой поверхности они будут выпирать, этого достаточно. На классических ручках я уже прикинул где они будут стоять! Там случайных касаний не будет, получится как кнопки на штурвале, только когда там будет рука, туда можно будет докоснуться пальцем. Количество проводов в водительскую дверь 3 экранированных и два на подъемник, во все остальные по 2 экранированных и по 2 на подъемники. Прошу заметить, что не получится пустить три жили вместе в одном экране, каждая жила должна быть в экране. От подсветки я отказался по тому как у меня не решений по этому поводу.

  7. #7
    Продвинутый
    Регистрация
    16.01.2013
    Сообщений
    259
    Вес репутации
    205

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    может надо на таких штуках делать?
    http://we.easyelectronics.ru/shurik3...uglyashok.html

  8. #8
    Продвинутый
    Регистрация
    03.06.2012
    Возраст
    38
    Сообщений
    210
    Вес репутации
    196

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    неет такие штуки придется располагать в каждой двери я думал о том что бы сделать как на VW - ганех в каждой двери по блоку а между собой они общаются по шине данных но потом отошел от этой идеи и решил сделать все в одном устройстве а так можно было и так сделать
    Нажмите на изображение для увеличения. 

Название:	news_110411.gif 
Просмотров:	1053 
Размер:	5.4 Кб 
ID:	17580
    но у меня получается полноценный блок стеклоподъемников с функцией автомат доводчиками и всеми вытекающими прелестями

  9. #9
    Продвинутый
    Регистрация
    03.06.2012
    Возраст
    38
    Сообщений
    210
    Вес репутации
    196

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    У меня вот такое индикаторное табло по которому я планирую показывать какой стеклоподъемник находится под моим контролем.
    Нажмите на изображение для увеличения. 

Название:	3013.png 
Просмотров:	1038 
Размер:	44.5 Кб 
ID:	17583
    Из даташита я понял, что у него напряжение питания 2.1 вольта. Если я собираюсь подсоединять его напрямую к ардуино, то получается нужно вешать резисторы, как по плюсу, так и по минусу, что бы получился делитель напряжения вот схема:
    Название: s3013-1.gif
Просмотров: 4561

Размер: 1.6 Кб
    я правильно рассуждаю?

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

    По умолчанию Re: Стеклоподъемники с сенсорными кнопками

    Нужно только ограничить ток, включив последовательно светодиоду резистор

Страница 1 из 5 12345 ПоследняяПоследняя

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

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

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

Ваши права

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