подскажите.....

Тема в разделе "Arduino & Shields", создана пользователем Makar, 17 апр 2014.

  1. Makar

    Makar Нуб

    Подскажите пожалуйста, как можно сделать чтобы при окончание таймера возвращалось время которое мы ввели кнопками. Вот программа рабочая, но тут время обнуляется, а нужно чтобы таймер работал циклично, пока не нажата кнопка выхода из цикла
    Код (Text):

    #include <LiquidCrystal.h> //Libreria del display LCD

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Инициализировать библиотеку с числом контактов, используемых

    int buzzer = 13;           //Alarma
    int ahoras = 0;            //Переменная будет отображаться на ЖК-дисплее horas
    int aminutos = 0;          //Переменная будет отображаться на ЖК-дисплее minutos
    int asegundos = 0;         //Переменная будет отображаться на ЖК-дисплее segundos
    int segundostotal = 0;     //полное время
    int msg= 0;                //Баррера для приветствия
    int offhoras = 0;            //Переменная будет отображаться на ЖК-дисплее horas
    int offminutos = 0;          //Переменная будет отображаться на ЖК-дисплее minutos
    int offsegundos = 0;
    int offsegundostotal = 0;


    int start = A0;            //кнопка arranque
    int empieza = 1024;        // Переменная кнопка хранения Старт

    int buth = A5;             //кнопка Horas
    int butm = A4;             //кнопка Minutos
    int mode = A3;           //кнопка on/off

    int varbuth = 0;           //Переменная для хранения значения кнопки buth
    int varbutm = 0;           //Переменная для хранения значения кнопки  minutos
    int varbuts = 0;           //Переменная для хранения значения кнопки  segundos

    int offbuth=0;             //Переменная для хранения значения кнопки offbuth
    int offbutm=0;             //Переменная для хранения значения кнопки offbutm
    int offbust=0;             //Переменная для хранения значения кнопки offbust
    int a=1024;

    void setup()
    {
       lcd.begin(16, 2);         // Мы задать количество строк и столбцов ЖК-дисплее.
       lcd.print("Loading");
       delay(500);
       lcd.print(".");
       delay(500);
       lcd.print(".");
       delay(1000);
       lcd.clear();
     
     
       pinMode(buzzer, OUTPUT);
       pinMode(buth, INPUT);  
       pinMode(butm, INPUT);  
       pinMode(mode, INPUT);  
       pinMode(start, INPUT);
     
       msg = 0;                
       empieza = 1024;        
     
      varbuth = 1;          
      varbutm = 1;          
      varbuts = 1;

       offbuth=1;          
       offbutm=1;          
       offbust=1;
      a=1024;
    }

    void loop()
    {
         do                
         {
         
           varbuth = analogRead(buth);   // horas
           varbutm = analogRead(butm);   // minutos
       
         
           if(varbuth == 0)            
           {
            ahoras = ahoras + 1 ;
            delay(250);
           }
         
            if(varbutm == 0)          
           {
             aminutos = aminutos + 1;
             delay(250);
           }
         
     
               
           lcd.setCursor(0,0);
           lcd.print("Setting the time");
         
           lcd.setCursor(5,1);  

          if (ahoras < 10) lcd.print("0");  
           lcd.print(ahoras);                
           lcd.print(":");

          if (aminutos < 10) lcd.print("0");
           lcd.print(aminutos);              

           
       
       
           lcd.setCursor(11,1);                 ///////
           lcd.print("hh:mm");                  ///////
         
           lcd.setCursor(0,1);                 ///////
           lcd.print("on");
       
       
       
       
               
        arranque.
          a=analogRead(mode);
        } while(a != 0);
          ////////////////////////////////////////////////////////
         
          do                
         {
             offbuth = analogRead(buth);   // horas
           offbutm = analogRead(butm);   // minutos
       
         
           if(offbuth == 0)            
           {
            offhoras = offhoras + 1 ;
            delay(250);
           }
         
            if(offbutm == 0)        
           {
             offminutos = offminutos + 1;
             delay(250);
           }
         
     
               
           lcd.setCursor(0,0);
           lcd.print("Setting the time");
         
           lcd.setCursor(5,1);  

          if (offhoras < 10) lcd.print("0");  
           lcd.print(offhoras);              
           lcd.print(":");

          if (offminutos < 10) lcd.print("0");
           lcd.print(offminutos);
           lcd.setCursor(0,1);              
           lcd.print("off");
       
           empieza =analogRead(start);
         
         
           if (empieza == 0)            
           {
            segundostotal = asegundos + (aminutos * 60) + (ahoras * 60 * 60);
         
           }
               
     
          } while(empieza != 0);
          while(1)
          {
          //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
          while (segundostotal > 0)
          {
            delay (1000);        
            segundostotal--;  
     
            ahoras = ((segundostotal / 60)/ 60);  
            aminutos = (segundostotal / 60) % 60;
            asegundos = segundostotal % 60;      

            lcd.setCursor(0,0);
            lcd.print("Track of time");      
            lcd.setCursor(5,1);
            if (ahoras < 10) lcd.print("0");    
            lcd.print(ahoras);                  
            lcd.print(":");

            if (aminutos < 10) lcd.print("0");
            lcd.print(aminutos);                
            lcd.setCursor(0,1);                 ///////
            lcd.print("on");
         
         //   lcd.print(":");
         //   if (asegundos < 10) lcd.print("0");  
         //   lcd.print(asegundos);              
         
             if (segundostotal==0)    
           {
            offsegundostotal = offsegundos + (offminutos * 60) + (offhoras * 60 * 60);
         
              while (offsegundostotal > 0)          
              {      
                  delay (1000);  
                  offsegundostotal--;  
     
            offhoras = ((offsegundostotal / 60)/ 60);  
            offminutos = (offsegundostotal / 60) % 60;
            offsegundos = offsegundostotal % 60;      

            lcd.setCursor(0,0);
            lcd.print("Track of time");      
            lcd.setCursor(5,1);
            if (offhoras < 10) lcd.print("0");    
            lcd.print(offhoras);                
            lcd.print(":");

            if (offminutos < 10) lcd.print("0");  
            lcd.print(offminutos);              
           lcd.setCursor(0,1);                
           lcd.print("off");
              }
           }
          }
           
         
         }
       
    }
     
     
    Последнее редактирование: 18 апр 2014
  2. Mitrandir

    Mitrandir Гуру

    Запомнить гдето secundostotal и восстанавливать посде while(1)
     
  3. lerik2703

    lerik2703 Гик

    можно было и в старой ветке задать вопрос :),и скетч закрывайте тегами [C ODE][/CO DE]
     
  4. Makar

    Makar Нуб

    извините, а куда это ставить и что этот тег добавляет... Я в си недавно программировать стал
     
  5. lerik2703

    lerik2703 Гик

    Код (Text):
    #include <LiquidCrystal.h> //Libreria del display LCD

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Инициализировать библиотеку с числом контактов, используемых

    int buzzer = 13; //Alarma
    int ahoras = 0; //Переменная будет отображаться на ЖК-дисплее horas
    int aminutos = 0; //Переменная будет отображаться на ЖК-дисплее minutos
    int asegundos = 0; //Переменная будет отображаться на ЖК-дисплее segundos
    int segundostotal = 0; //полное время
    int msg= 0; //Баррера для приветствия
    int offhoras = 0; //Переменная будет отображаться на ЖК-дисплее horas
    int offminutos = 0; //Переменная будет отображаться на ЖК-дисплее minutos
    int offsegundos = 0;
    int offsegundostotal = 0;


    int start = A0; //кнопка arranque
    int empieza = 1024; // Переменная кнопка хранения Старт

    int buth = A5; //кнопка Horas
    int butm = A4; //кнопка Minutos
    int mode = A3; //кнопка on/off

    int varbuth = 0; //Переменная для хранения значения кнопки buth
    int varbutm = 0; //Переменная для хранения значения кнопки minutos
    int varbuts = 0; //Переменная для хранения значения кнопки segundos

    int offbuth=0; //Переменная для хранения значения кнопки offbuth
    int offbutm=0; //Переменная для хранения значения кнопки offbutm
    int offbust=0; //Переменная для хранения значения кнопки offbust
    int a=1024;

    void setup()
    {
    lcd.begin(16, 2); // Мы задать количество строк и столбцов ЖК-дисплее.
    lcd.print("Loading");
    delay(500);
    lcd.print(".");
    delay(500);
    lcd.print(".");
    delay(1000);
    lcd.clear();


    pinMode(buzzer, OUTPUT);
    pinMode(buth, INPUT);
    pinMode(butm, INPUT);
    pinMode(mode, INPUT);
    pinMode(start, INPUT);

    msg = 0;
    empieza = 1024;

    varbuth = 1;
    varbutm = 1;
    varbuts = 1;

    offbuth=1;
    offbutm=1;
    offbust=1;
    a=1024;
    }

    void loop()
    {
    do
    {

    varbuth = analogRead(buth); // horas
    varbutm = analogRead(butm); // minutos


    if(varbuth == 0)
    {
    ahoras = ahoras + 1 ;
    delay(250);
    }

    if(varbutm == 0)
    {
    aminutos = aminutos + 1;
    delay(250);
    }



    lcd.setCursor(0,0);
    lcd.print("Setting the time");

    lcd.setCursor(5,1);

    if (ahoras < 10) lcd.print("0");
    lcd.print(ahoras);
    lcd.print(":");

    if (aminutos < 10) lcd.print("0");
    lcd.print(aminutos);




    lcd.setCursor(11,1); ///////
    lcd.print("hh:mm"); ///////

    lcd.setCursor(0,1); ///////
    lcd.print("on");





    arranque.
    a=analogRead(mode);
    } while(a != 0);
    ////////////////////////////////////////////////////////

    do
    {
    offbuth = analogRead(buth); // horas
    offbutm = analogRead(butm); // minutos


    if(offbuth == 0)
    {
    offhoras = offhoras + 1 ;
    delay(250);
    }

    if(offbutm == 0)
    {
    offminutos = offminutos + 1;
    delay(250);
    }



    lcd.setCursor(0,0);
    lcd.print("Setting the time");

    lcd.setCursor(5,1);

    if (offhoras < 10) lcd.print("0");
    lcd.print(offhoras);
    lcd.print(":");

    if (offminutos < 10) lcd.print("0");
    lcd.print(offminutos);
    lcd.setCursor(0,1);
    lcd.print("off");

    empieza =analogRead(start);


    if (empieza == 0)
    {
    segundostotal = asegundos + (aminutos * 60) + (ahoras * 60 * 60);

    }


    } while(empieza != 0);
    while(1)
    {
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    while (segundostotal > 0)
    {
    delay (1000);
    segundostotal--;

    ahoras = ((segundostotal / 60)/ 60);
    aminutos = (segundostotal / 60) % 60;
    asegundos = segundostotal % 60;

    lcd.setCursor(0,0);
    lcd.print("Track of time");
    lcd.setCursor(5,1);
    if (ahoras < 10) lcd.print("0");
    lcd.print(ahoras);
    lcd.print(":");

    if (aminutos < 10) lcd.print("0");
    lcd.print(aminutos);
    lcd.setCursor(0,1); ///////
    lcd.print("on");

    // lcd.print(":");
    // if (asegundos < 10) lcd.print("0");
    // lcd.print(asegundos);

    if (segundostotal==0)
    {
    offsegundostotal = offsegundos + (offminutos * 60) + (offhoras * 60 * 60);

    while (offsegundostotal > 0)
    {
    delay (1000);
    offsegundostotal--;

    offhoras = ((offsegundostotal / 60)/ 60);
    offminutos = (offsegundostotal / 60) % 60;
    offsegundos = offsegundostotal % 60;

    lcd.setCursor(0,0);
    lcd.print("Track of time");
    lcd.setCursor(5,1);
    if (offhoras < 10) lcd.print("0");
    lcd.print(offhoras);
    lcd.print(":");

    if (offminutos < 10) lcd.print("0");
    lcd.print(offminutos);
    lcd.setCursor(0,1);
    lcd.print("off");
    }
    }
    }


    }

    }
    что-то похожее :) между началом и оконцовкой кода ,ну так вверху редактора есть инструмент как "код" 6 с права!это не си!
     
  6. Makar

    Makar Нуб

    теперь понял:), а по моему вопросу можете чем нибудь помочь
     
  7. Makar

    Makar Нуб

    это я знаю, а где запомнить..........
     
  8. Mitrandir

    Mitrandir Гуру

    Подсказка: для хранения данных используются переменные
    Заведи переменную, перед while(1) скинь в нее значение, после восстанавливай