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

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #20
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    60
    Сообщений
    213
    Вес репутации
    246

    По умолчанию Re: Радар-детектор и Arduino

    Вопрос не понятен, что за инициализация?
    Ну, имелось в виду, что каналы заданы как цифровые входа/выхода (D3,D5) и задано начальное значение выхода D5=0...

    зачем digitalWrite(ledPinCam, LOW); в глобальной области?
    Исходное состояние выхода потому что... Смущает лишь то, что задании его HIGH (просто, чтобы проверить как оно работает) - один черт там ноль оказывается...

    Код выложу уже утром (на работе он остался...)

    P.S. Ну вот, собственно, и он:

    PHP код:
    /*
      Семь кнопок: 
      Вкл/Выкл питания нагрузки
      Режим 1 (короткое нажатие)
      Режим 1 (длинное нажатие)
      Режим 2 (короткое нажатие)
      Режим 2 (длинное нажатие)
      Громкость +
      Громкость -
     
     Питание на нагрузку подается либо при начальной инициализации системы, 
     либо программно (для вкл/выкл нагрузки без снятия питания со всей системы)
     По включению питания формируется импульс сброса самотестирования нагрузки. 
     Громкость выставляется в предустановленный уровень.
     
     The circuit:
     * Оптрон Режима 1  attached from pin 9 to ground 
     * Оптрон Режима 2  attached from pin 11 to ground
     * Оптрон Вкл/Выкл  attached from pin 7 to ground
     * Оптрон "Громкость"  attached from pin 10 to ground
     * pin 8 attached to pin 11   
     * pin 7 attached to pin 12
      
      ******************
     modified 22.01.2010
      */

    // constants won't change. They're used here to 
    // set pin numbers:
    const int buttonPin1 12;     // Вход с питания
    const int buttonPin2 8;      // Вход с формирователя сброса
    const int buttonPin7 6;      // Включение/выключение питания
    const int buttonPin3 3;      // Кнопка переключения на камеру- ДОБАВЛЕНО
    const int ledPin5 =  9;        // Управление 1 режимом
    const int ledPin4 =  11;       // Управление 2 режимом/Ипульс сброса теста
    const int ledPin2 =  7;        // Включение нагрузки
    const int redPin   10;       // Управление громкостью
    const int ledPinCam 5;       // Переключение на камеру - ДОБАВЛЕНО
    int val;


    // variables will change:
    int buttonState 0;         // variable for reading the pushbutton status
    int redLEDValue   50;      // Предустановленный уровень громкости

    void setup() {
      
    Serial.begin(115200);              //установка порта 
      // initialize the LED pin as an output:
      
    pinMode(ledPin2OUTPUT);
      
    pinMode(ledPinCamOUTPUT); //- ДОБАВЛЕНО
      
    pinMode(ledPin4OUTPUT); 
      
    pinMode(ledPin5OUTPUT);
      
    pinMode(redPinOUTPUT);   // sets the pins as output
        // initialize the pushbutton pin as an input:
      
    pinMode(buttonPin1INPUT);
      
    pinMode(buttonPin2INPUT);
      
    pinMode(buttonPin7INPUT);
      
    pinMode(buttonPin3INPUT);  //- ДОБАВЛЕНО
      
    analogWrite(redPinredLEDValue);

        
    // turn LED on:    
        
    digitalWrite(ledPin2HIGH); // Первое включение системы
        
    digitalWrite(ledPinCamLOW);   //- ДОБАВЛЕНО
        
        
       
      // read the state of the pushbutton value:
      
    buttonState digitalRead(buttonPin1);

                
    // Если питание подано, формируется импульс сброса с задержкой 2 сек:
      
    if (buttonState == HIGH) {     
        
    // turn LED on: 
       
    delay(2000);                  // пауза на сброс теста for a 2 second (подбирается вручную)
        
    digitalWrite(ledPin5HIGH); // Импульс сброса 1 сек 
       
    delay(1000);  
      } 
      else {
      }
    }

    void loop() {
                
    // Если нагрузка уже инициалирована, переход в рабочую программу
      
    while (digitalRead(buttonPin1) == HIGH) {
         
    work(); 
       }
                 
    // Если нагрузка не инициалирована, переход в инициализацию
      
    while (digitalRead(buttonPin1) == LOW) {
         
    initial(); 
       }
    }
    void initial(){   
      
    delay(1000);                  // пауза на включение
       // Выбор режима Вкл/Выкл:
      
    if (Serial.available())          //если есть принятый символ, 
      
    {
        
    val Serial.read();            //  то читаем его и сохраняем в val  
       
      
    buttonState digitalRead(buttonPin7);
      
      if (
    val == 'd') {     
        
    // turn LED on:    
        
    digitalWrite(ledPin2HIGH); // Включение питания
         

      else {
          }
      
    // read the state of the pushbutton value:
      
    buttonState digitalRead(buttonPin1);

              
    // Если питание подано, формируется импульс сброса с задержкой 2 сек:
      
    if (buttonState == HIGH) {     
        
    // turn LED on: 
       
    delay(2000);                  // пауза на сброс теста for a 2 second (подбирается вручную)
        
    digitalWrite(ledPin5HIGH); // Импульс сброса 1 сек 
       
    delay(1000);  
      } 
      else {
      }

             
    // Если импульс сброса сформирован, переход к рабочему циклу
       
    while (digitalRead(buttonPin2) == HIGH) {
         
    work(); 
       }
    }
    }

    void work(){
      
    //- ДОБАВЛЕНЫЙ БЛОК
      
    buttonState digitalRead(buttonPin3);

                
    // Если кнопка нажата, формируется 2 импульса переключения с задержкой 1 сек:
      
    if (buttonState == HIGH) {     
        
    // turn LED on: 
        
    delay(1000);
           
    digitalWrite(ledPinCamHIGH); // Первый импульс  
       
    delay(1000); 
           
    digitalWrite(ledPinCamLOW); 
       
    delay(1000);
           
    digitalWrite(ledPinCamHIGH); // Второй импульс  
       
    delay(1000); 
           
    digitalWrite(ledPinCamLOW); 
      } 
      
      
    // КОНЕЦ ДОБАВЛЕННОГО БЛОКА

      
    digitalWrite(ledPin5LOW); // Снятие импульса сброса
               
               // Выбор режима 1 короткое/длинное нажатие:
      
      
    if (Serial.available())          //если есть принятый символ, 
      
    {
        
    val Serial.read();            //  то читаем его и сохраняем в val 
      
      
      
    if (val == '1') {     
        
    // turn LED on:    
        
    digitalWrite(ledPin4HIGH); 
       
    delay(1000);                  // Короткое нажатие (Реж.1)
      
    digitalWrite(ledPin4LOW);    // set the LED off 
      

      else {
        
    // turn LED off:
        
    digitalWrite(ledPin4LOW); 
      }
      
      if (
    val == '3') {     
        
    // turn LED on:    
        
    digitalWrite(ledPin4HIGH); 
       
    delay(5000);                  // Длинное нажатие (Реж.1)
      
    digitalWrite(ledPin4LOW);    // set the LED off 
      

      else {
        
    // turn LED off:
        
    digitalWrite(ledPin4LOW); 
      }
                
    // Выбор режима 2 короткое/длинное нажатие:
      
      
    if (val == '5') {     
        
    // turn LED on:    
        
    digitalWrite(ledPin5HIGH); 
       
    delay(1000);                  // Короткое нажатие (Реж.2)
      
    digitalWrite(ledPin5LOW);    // set the LED off 
      

      else {
        
    // turn LED off:
        
    digitalWrite(ledPin5LOW); 
    }

      if (
    val == '7') {     
        
    // turn LED on:    
        
    digitalWrite(ledPin5HIGH); 
       
    delay(5000);                  // Длинное нажатие (Реж.2)
      
    digitalWrite(ledPin4LOW);    // set the LED off 
      

      else {
        
    // turn LED off:
        
    digitalWrite(ledPin5LOW); 
      }
      
      if (
    val == 'b' && redLEDValue 1){ // Уменьшение громкости

    redLEDValue -= 1// Red down
    }

      if (
    val == '9' && redLEDValue 255 ) {  // Увеличение громкости

    redLEDValue += 1// Red up
    }

    // analogWrite() expects 2 parameters, the object/pin and a value between 0 (off) and 255 (full on)
    analogWrite(redPin,   redLEDValue);   // Write current values to LED pins
    delay(50); 
      
      
              
    // Включение/выключение питания:
      
      
    if (val == 'd') {     
        
    // turn LED on:    
        
    digitalWrite(ledPin2LOW); 
       
    delay(1000);                  // 
      
    digitalWrite(ledPin2LOW);    // set the LED off 
      

      else {
      }
         
      }

    Последний раз редактировалось Pinin; 20.07.2011 в 08:47.

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

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

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

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

Ваши права

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