цифровая электроника
вычислительная техника
встраиваемые системы

 




Arduino борется с усталостью глаз от монитора

Автор: Mike(admin) от 17-10-2022, 03:55

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


Arduino борется с усталостью глаз от монитора

Каждые 20 минут светодиодный индикатор будет указывать на то, что пользователь компьютера должен сделать перерыв от своего экрана. Если таймер работает более 2 часов, пользователю будет предложено сделать 20-минутный перерыв.


Arduino борется с усталостью глаз от монитора

Для управления Arduino в данном случае использовался шилд DFRobot 1602 LCD Keypad Shield с экраном и клавиатурой. Светодиод был подключен на цифровую линию 2.


Arduino борется с усталостью глаз от монитора

На клавиатуре нажмите кнопку RIGHT (ВПРАВО) в течение 2 секунд, чтобы запустить таймер. Нажмите LEFT (ВЛЕВО) кнопку, чтобы приостановить таймер. Нажмите кнопку RIGHT после нажатия кнопки LEFT, чтобы возобновить таймер. Нажмите кнопку RST (СБРОС), чтобы сбросить таймер. Таймер имеет ограничение в 24 часа и автоматически сбрасывается через 24 часа. Код программы Arduino представлен далее.



#include <LiquidCrystal.h>
const int pin_RS = 8; 
const int pin_EN = 9; 
const int pin_d4 = 4; 
const int pin_d5 = 5; 
const int pin_d6 = 6; 
const int pin_d7 = 7; 

LiquidCrystal lcd( pin_RS,  pin_EN,  pin_d4,  pin_d5,  pin_d6,  pin_d7);

int sec = 0;
int min = 0;
int hou = 0;
int bulkmin= 0, bulksec = 0, bulkhou = 0;
long start_time = 0;
boolean time_two_hour = false;


int button = 0;
int safe=0;
int pause = 0 ;

void setup(){
    pinMode(2, OUTPUT); 

    lcd.begin(16, 2);
    lcd.clear();
    lcd.setCursor(2,0);
    lcd.print("Screen Time");
    
    Serial.begin(9600);
   
}

void loop(){
  
 button = analogRead(0);

    if ( button <= 60){

      pause = 1;

    }
    if (button >=400 && button <= 600){

      pause = 2;
      
    }
  if(pause == 1){

    
       sec = sec + 1;
          if(sec == 20){
        
           digitalWrite(2, LOW);
                      }
          
         if(sec == 60){
            lcd.setCursor(11,1);
            lcd.print(" ");
            lcd.setCursor(12,1);
            lcd.print(" ");
            bulksec = sec;
            sec = 00;
            min = min + 1;

              if (min == 20 || min == 40 || min == 60){
                
                digitalWrite(2, HIGH);
                                                }  
                    if(min == 60){
                       lcd.setCursor(8,1);
                       lcd.print(" ");
                       lcd.setCursor(9,1);
                       lcd.print(" ");
                       bulkmin = min;
                       min = 00;
                       hou = hou + 1;
                       
                        if((hou % 2) ==0){
        
                          digitalWrite(2, HIGH);
                            time_two_hour = true;
                            start_time = millis();
                        }
    
                          if(hou == 23 && bulkmin == 60){
                
                              lcd.setCursor(5,1);
                              lcd.print(" ");
                              lcd.setCursor(6,1);
                              lcd.print(" ");
                              hou = 00;
                                          }
                   }
         }
      printTime();
      Timer_Time();
  }
  else{

    

  
     printTime();
     Timer_Time();
  }
 delay(1000);
    }

void Timer_Time()
{
if(time_two_hour == true)
{
if(start_time + 90000 <= millis()) 
{
    digitalWrite(2, LOW);
    time_two_hour = false;
}
}
}
  
void printTime()
{
    if(hou<=9)
    { lcd.setCursor(4,1); lcd.print("0"); 
     lcd.setCursor(5,1); lcd.print(hou); } 
    else
    {lcd.setCursor(4,1); lcd.print(hou); }
    lcd.setCursor(6,1);
    lcd.print(":");
    if(min<=9)
    { lcd.setCursor(7,1); lcd.print("0");
      lcd.setCursor(8,1); lcd.print(min); }
    else
    {lcd.setCursor(7,1); lcd.print(min); }
      
    lcd.setCursor(9,1);
    lcd.print(":");
     if(sec<=9)
    {
      lcd.setCursor(10,1);
      lcd.print("0");
      lcd.setCursor(11,1);
      lcd.print(sec);
    }
    else{
      lcd.setCursor(10,1);
      lcd.print(sec);
    }
}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий