Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12
  1. #1
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Кнопка с электронной фиксацией на Ардуино Мини.

    Здравствуйте.
    Подскажите, как реализовать включение-выключение компа на ардуине, как в этой теме http://compcar.ru/forum/showthread.php?t=3163
    Ищу давно, но толком ничего нет. Кнопка на 564 серии изготовлена давно, качество работы не устраивает. Может после выключения опять комп включить, или наоборот не включает.
    Читал и тут http://compcar.ru/forum/showthread.php?t=5329 и тут http://compcar.ru/forum/showthread.php?t=5804. Но к сожалению доизобрести не смог ничего.
    Мне кажется что этот код проще всего дописать, только я не знаю как.
    PHP код:
    unsigned char  button_state
    unsigned char  button_mem

    #define BUTTON 12 
    #define RELAY 13 
    void setup() 

      
    pinMode(RELAY,OUTPUT);  
      
    pinMode(BUTTON,INPUT); 
      
    digitalWrite(BUTTONHIGH); //подключить внутренний подтягивающий резистор 

    void loop() 

        
    button_state digitalRead(BUTTON); //прочитать состояние кнопки 
        
    delay(30); // пауза для проверки дребезга  
        
    if (digitalRead(BUTTON) == LOW && button_state == LOW  &&  button_mem == 0
        { 
           
    digitalWrite(RELAYHIGH);  
           
    button_mem=255;  //запомнить состояние реле 
           
    while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки 
        
    } else  
            { 
              if (
    digitalRead(BUTTON) == LOW && button_state == LOW  &&  button_mem == 255
              { 
               
    digitalWrite(RELAYLOW);  
                
    button_mem=0//запомнить состояние реле 
               
    while(digitalRead(BUTTON) == LOW){ delay(10);}//ждем отпускания кнопки 
              

            }    

    Заранее благодарен.
    ps Ардуину для хорошего дела не жалко.
    pps
    ещё раз про смысл того, что мне нужно:
    я приезжаю на автомойку полностью набитую мойщиками-таджиками
    они начинают мыть машину
    и пока они там своими кривыми руками и ссаными тряпками всё трут они нажав всего 1 раз на кнопку включают вдобавок ещё и комп, а мне это уж точно не нужно в мойке, где и так полно воды и люботных всяких чертей
    или ещё один случай из жизни
    например, что-то случилось с компом (ну бывает иногда), а тут старый-добрый приятель попросил довезти его куда-то, а у приятеля ручки шаловливые. Садится он в машинку и вдруг нажимает кнопочку включения НЕ ИСПРАВНОГО компа одновременно задавая вопрос "а что это такая за кнопочка???" - много раз такое видел в своей машине ))))

    так вот, чтобы этих всех проблем избежать, мне требуется схема кнопки, которая будет замыкать цепь питания ИМЕННО ПОСЛЕ 3-4 секунд удержания кнопки В НАЖАТОМ СОСТОЯНИИ

    фуф...
    вот я о чём собственно спрашивал ))))
    есть идеи как это реализовать?
    Последний раз редактировалось basurman971; 03.05.2014 в 02:36.

  2. #2
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Может я вопрос неправильно задал?

  3. #3
    Продвинутый
    Регистрация
    15.12.2008
    Возраст
    38
    Сообщений
    229
    Вес репутации
    399

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Я правильно понял, что надо в приведенный код длинное нажатие дописать просто?
    Если так, то я бы типа такого сделал:
    PHP код:
    #include <avr/interrupt.h>
    #include <avr/io.h>
    #define BUTTON 2 
    #define RELAY 3 
    #define PAUSE 4
    byte time=0;
    boolean state=false;
    boolean a=false;

    ISR(TIMER1_COMPA_vect
    {
      
    TCNT1H=0x00;
      
    TCNT1L=0x00;
      if (
    digitalRead(BUTTON) == LOW)
      {
        
    time++;
        if(
    time>PAUSE && !a)
        {
          if(!
    state)
          {
            
    digitalWrite(RELAYHIGH);
            
    state=true;
            
    a=true;
          }
          else
          {
            
    digitalWrite(RELAYLOW);
            
    state=false;
            
    a=true;
          }
        }
      }
    }

    void setup() 

      
    pinMode(RELAY,OUTPUT);  
      
    pinMode(BUTTON,INPUT); 
      
    digitalWrite(BUTTONHIGH); //подключить внутренний подтягивающий резистор
      
    TCCR1A=0x00;
      
    TCCR1B=0x04;
      
    TCNT1H=0x00;
      
    TCNT1L=0x00;
      
    OCR1AH=0x7A;
      
    OCR1AL=0x12;
      
    TIMSK1=0x02;

    void loop() 

      if (
    digitalRead(BUTTON) == HIGH)
      {
        
    a=false;
        
    time=0;
      } 

    Последний раз редактировалось manu_245; 13.05.2014 в 01:56.

  4. #4
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Спасибо, сегодня вечером попробую. Я уже и нечаял, что сбудется. Ты как всегда вовремя.

  5. #5
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Здорово, все работает как надо. Спасибо тебе преогромнейшее. Теперь то можно наворачивать ардуинку. Скорей всего еще попристаю.

  6. #6
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    manu_245 скажи пожалуйста, а буззер можно к этому скетчу прицепить.

  7. #7
    Продвинутый
    Регистрация
    15.12.2008
    Возраст
    38
    Сообщений
    229
    Вес репутации
    399

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Можно. Только delay я бы в прерывание не ставил. Лучше в таймере флаг звука поднять, а потом из loop уже управлять ногой бузера.

  8. #8
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Лучше сразу бы сказал- застрелись.

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

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Цитата Сообщение от basurman971 Посмотреть сообщение
    Лучше сразу бы сказал- застрелись.
    Это не решит задачу подключения бузера к ардуино))

    Поскольку не было сформулировано, когда, как и сколько раз должен работать излучатель, и, особенно, источник со встроенным генератором или нет, я и написал только общие рекомендации.
    PHP код:
    #include <avr/interrupt.h>
    #include <avr/io.h>
    #define BUTTON 2 
    #define RELAY 3 
    #define PAUSE 4
    #define BUZZER 4
    byte time=0;
    boolean state=false;
    boolean a=false;
    boolean buz=false;

    ISR(TIMER1_COMPA_vect
    {
      
    TCNT1H=0x00;
      
    TCNT1L=0x00;
      if (
    digitalRead(BUTTON) == LOW)
      {
        
    time++;
        if(
    time>PAUSE && !a)
        {
          
    buz=true;
          if(!
    state)
          {
            
    digitalWrite(RELAYHIGH);
            
    state=true;
            
    a=true;
          }
          else
          {
            
    digitalWrite(RELAYLOW);
            
    state=false;
            
    a=true;
          }
        }
      }
    }

    void setup() 

      
    pinMode(RELAY,OUTPUT); 
      
    pinMode(BUZZER,OUTPUT); 
      
    pinMode(BUTTON,INPUT); 
      
    digitalWrite(BUTTONHIGH); //подключить внутренний подтягивающий резистор
      
    TCCR1A=0x00;
      
    TCCR1B=0x04;
      
    TCNT1H=0x00;
      
    TCNT1L=0x00;
      
    OCR1AH=0x7A;
      
    OCR1AL=0x12;
      
    TIMSK1=0x02;

    void loop() 

      if (
    digitalRead(BUTTON) == HIGH)
      {
        
    a=false;
        
    time=0;
      }
      if(
    buz)
      {
        
    //здесь управляем ногой бузера
        //Например:
        
    digitalWrite(BUZZERHIGH);
        
    delay(1000);
        
    digitalWrite(BUZZERLOW);
        
    buz=false;
      } 


  10. #10
    Ломастер Аватар для basurman971
    Регистрация
    13.02.2011
    Возраст
    53
    Сообщений
    396
    Вес репутации
    324

    По умолчанию Re: Кнопка с электронной фиксацией на Ардуино Мини.

    Извини не подумал. Я хотел, чтобы при включении-выключении было бип (в смысле включилось-бип, выключилось-бип). Буз простой без генератора. Из щитка QX56.
    Последний раз редактировалось basurman971; 22.05.2014 в 16:42.

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

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

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

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

Ваши права

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