Facebook Twitter Instagram
    En tendencia:
    • Precauciones para el procesamiento por chorro de agua (WJM)
    • Procesos de mecanizado no convencionales: clasificación y características.
    • Procesamiento ultrasónico (USM) – ME Mechanical
    • Tipos de uniones soldadas
    • Herramientas comúnmente utilizadas en fundiciones
    • Cómo la fabricación de herramientas influyó en la evolución humana
    • Alicates, destornilladores, llaves inglesas
    • Precauciones para la soldadura de termita
    • Soldadura por arco sumergido (SAW) – ME Mechanical
    • Notas sobre los tipos de estacas
    • Tiempo de solidificación de las piezas fundidas
    • Sobre el proceso de unión: soldadura, soldadura fuerte
    • Notas sobre las máquinas tragamonedas: piezas y funcionamiento.
    • Herramientas de corte de punto único: nomenclatura y firmas de herramientas
    • Precauciones para proteger el gas
    • Precauciones para la soldadura por arco metálico blindado (SMAW)
    • Proceso de fundición de moldes de carcasa – ME Mechanical
    • Proceso de moldeo de productos de caucho
    • Precauciones para el moldeo cerámico
    • Selección de fluidos metalúrgicos en mecanizado
    Facebook YouTube LinkedIn
    Industry SurferIndustry Surfer
    • Blog Industrial
      1. Cadena de suministro
      2. CNC
      3. Construcción
      4. Energías Renovables
      5. Historia
      6. HVAC
      7. Industria 4.0
      8. View All

      Maersk integra las líneas de negocio de Damco en la principal unidad de servicios y logística

      05/12/2022

      Johnson & Johnson ocupa el primer lugar en la cadena de suministro de atención médica, dice Gartner

      05/12/2022

      Scan Global Logistics agrega TransGroup a las marcas

      05/12/2022

      Turquía actualiza el plan para construir un canal entre el Mar Negro y el Mediterráneo

      05/12/2022

      Consideraciones de costos en el mecanizado CNC: maximizar la eficiencia

      25/07/2023

      Cómo el mecanizado CNC transformará la industria de dispositivos médicos

      20/07/2023

      Revolucionando la fabricación aeroespacial con el mecanizado CNC

      18/07/2023

      El impacto del mecanizado CNC en la automatización industrial

      13/07/2023

      Vista general de las nervaduras de hormigón armado

      21/07/2023

      Pros y contras de las carreteras de hormigón de cemento: lo que necesita saber

      17/07/2023

      Importancia de la piedra triturada en la construcción de vías férreas

      17/07/2023

      Ventajas y desventajas de la construcción de carreteras WBM

      14/07/2023

      Costos de instalación de paneles solares por pie cuadrado y estado en 2023

      21/11/2022

      La diferencia entre la energía solar y la eólica

      21/11/2022

      Historia y Evolución de la Fábrica

      28/04/2022

      ¿Qué es la industria 4.0?

      18/02/2022

      Segunda revolución industrial

      17/02/2022

      Primera Revolución Industrial

      16/02/2022

      Partes, componentes y funciones de la torre de enfriamiento

      23/11/2022

      ¿Qué es un vaporizador? Tipos, repuestos y servicio

      23/11/2022

      La guía definitiva para el mantenimiento de calderas de vapor

      23/11/2022

      Una guía rápida para la torre de enfriamiento de flujo cruzado

      23/11/2022

      ¿Industria cárnica de EE. UU. con carniceros robot ?

      23/04/2022

      ¿Qué es la industria 4.0?

      18/02/2022

      Precauciones para el procesamiento por chorro de agua (WJM)

      25/09/2023

      Procesos de mecanizado no convencionales: clasificación y características.

      25/09/2023

      Procesamiento ultrasónico (USM) – ME Mechanical

      25/09/2023

      Tipos de uniones soldadas

      24/09/2023
    • Noticias
      • Aeroespacial
      • Automatización
      • Automotriz
      • Aviación
      • Combustibles Fósiles
      • Médica
      • Metales
      • Energía
      • Electrónica
      • Fabricación Aditiva / 3D
      • Operaciones
      • Quimica
      • Software
      • Trabajo
    • Manuales

      CAT 308 CV Miniexcavadora hidráulica – Manual del propietario

      07/06/2022

      307.5 CAT Miniexcavadora hidráulica – Manual Ficha Informativa

      07/06/2022

      CASE SERIE CXCX75SR Excavadoras Hidráulicas – Manual Especificaciones

      07/06/2022

      Case CX330 TIER III Manual de servicio

      07/06/2022

      665H / 765H / 865H / 965H Bush Hog Excavadora compacta – Manual de usuario

      06/06/2022
    • Cursos GRATIS
    • Calculadoras

      Calculadora de Cargador de Batería

      12/08/2023

      Calculadora de Vida Útil de la Batería

      12/08/2023

      Calculadora de Capacitancia de una Superficie Casi Esférica

      12/08/2023

      Calculadora de Inductancia y Capacitancia a partir de la Reactancia

      12/08/2023

      Calculadora de Capacitancia de una Línea Trifásica Transpuesta Asimétrica

      12/08/2023
    • Idiomas
    Home»Cursos»Renesas RA – 9. Pantalla de reloj digital
    Cursos

    Renesas RA – 9. Pantalla de reloj digital

    7 Mins Read Cursos
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Renesas RA - 9. Pantalla de reloj digital
    Share
    Facebook Twitter LinkedIn Pinterest Email

    #include “hal_data.h”

    #incluye “Adafruit_SSD1306.h”

    #include “fuentes/FreeSans9pt7b.h”

    #incluir

    #incluir

    #incluye “qe_touch_config.h”

    FSP_CPP_HEADER

    anular R_BSP_WarmStart(evento bsp_warm_start_event_t);

    FSP_CPP_FOOTER

    #define DEBOUNCE_DELAY 20 // Retardo de rebote del botón 20 ms

    Pantalla Adafruit_SSD1306 (128, 64); //crear objeto de pantalla OLED

    rtc_time_t my_time= //estructura de tiempo con valores iniciales

    {

    .tm_sec = 0,

    .tm_min = 0,

    .tm_hora = 0,

    .tm_mday = 1,

    .tm_mon=1,

    .tm_año = 100,

    };

    cadena[11]; // Cadena para enviar a OLED

    uint8_t x0, x1, x2, y0, y1, y2; // coordenadas del punto

    volatile uint32_ttic_1_128; // Contador de ticks de 1/128 segundos

    estado del botón uint64_t; // estado del botón táctil

    uint8_t estado anterior; // estado anterior del botón táctil

    modos de enumeración // modo de funcionamiento del reloj

    {

    modo_normal,

    MODE_SET_SEGUNDO,

    MODE_SET_MINUTO,

    MODE_SET_HORA,

    MODE_SET_DAY,

    MODE_SET_MES,

    MODE_SET_AÑO

    };

    mode mode = MODE_NORMAL; // el modo actual es normal

    fsp_err_t error; // resultado de la operación de la función API de FSP

    void rtc_periodic_callback(rtc_callback_args_t *p_args) //Función de devolución de llamada RTC

    {

    if (p_args->event == RTC_EVENT_PERIODIC_IRQ)//Para interrupciones periódicas

    tick_1_128 ++; // incrementa el contador de ticks

    }

    /**************************************************** * **************************************************** ************//**

    * main() es generado por el editor de configuración RA y se usa para generar subprocesos si se usa RTOS.Esta función

    * Llamado por main() si no se usa RTOS.

    *************************************************** * * **************************************************** * ***************/

    vacío hal_entry (vacío)

    {

    err = RM_TOUCH_Open(g_qe_touch_instance_config01.p_ctrl, g_qe_touch_instance_config01.p_cfg);//Inicializar la interfaz táctil

    if (FSP_SUCCESS != err) // si el resultado no fue exitoso

    {

    while (true) {} // cuelga el programa aquí

    }

    R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);// Ejecute un retraso de 1 segundo para permitir que la energía OLED se estabilice

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C, false, true); //inicializa la pantalla OLED usando la dirección I2C 0x3C (para 128×64)

    R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg); // Inicializar el módulo RTC

    R_RTC_ClockSourceSet(&g_rtc0_ctrl); //Establece la fuente del reloj para RTC (también establece el formato de 24 horas)

    R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &my_time);//Asignar valor inicial a RTC

    R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_DIV_BY_128_SECOND); //Establecer la tasa de interrupción periódica de RTC

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C, false, true); //inicializa la pantalla OLED usando la dirección I2C 0x3C (para 128×64)

    display.setFont(&FreeSans9pt7b); //Establecer el nombre de la fuente

    Display.setTextColor(WHITE); //Establecer el color del texto

    /* Bucle principal */

    mientras tanto (verdad)

    {

    if (tick_1_128 % 4 == 0) //cada 31,25 ms

    {

    err = RM_TOUCH_ScanStart(g_qe_touch_instance_config01.p_ctrl); //Iniciar exploración del botón táctil

    if (FSP_SUCCESS != err) // si el resultado no fue exitoso

    {

    while (true) {} // cuelga el programa aquí

    }

    while (0 == g_qe_touch_flag) {} //Espere a que se complete el escaneo

    g_qe_touch_flag = 0; // y reinicia la bandera

    err = RM_TOUCH_DataGet(g_qe_touch_instance_config01.p_ctrl, &button_status, NULL, NULL); //Obtener el estado del botón táctil

    si (FSP_SUCCESS == error)

    {

    if ((button_status == 1) && (previous_status == 0)) //si el estado actual del botón es bajo y el estado anterior era alto

    Estado anterior = 1; //Restablecer el estado anterior a 0 para que la próxima vez no se implemente esta rama.

    else if ((button_status == 0) && (previous_status == 1)) //si el estado actual del botón es alto y el estado anterior era bajo

    Estado anterior = 0; // Luego establezca el estado anterior en 1 para que la próxima vez no se implemente esta rama.

    else if ((button_status == 1) && (previous_status == 1)) //si ambos estados son altos (todavía se toca el botón)

    {

    if ((tick_1_128 % 32) == 0) //cada 250ms

    {

    cambiar (modo) // seleccionar el modo

    {

    case MODE_NORMAL: Break;//No hacer nada si el modo es normal

    case MODE_SET_SECOND: //si el modo es set_second

    my_time.tm_sec ++; // luego incrementa el segundo

    if (my_time.tm_sec > 59) // si los segundos son mayores que 59

    my_time.tm_sec = 0;// luego establezca los segundos en 0

    descomponer;

    case MODE_SET_MINUTE: //si el modo es set_minute

    my_time.tm_min ++; // luego aumenta el minuto

    if (my_time.tm_min > 59) //si el minuto es mayor que 59

    my_time.tm_min = 0; // Luego establezca el minuto en 0

    descomponer;

    case MODE_SET_HOUR: //si el modo es set_hour

    my_time.tm_hour++; // luego aumenta las horas

    if (my_time.tm_hour > 23)//si la hora es mayor que 23

    my_time.tm_hour = 0;//A continuación, establezca la hora en 0

    descomponer;

    case MODE_SET_DAY: // si el modo es set_day

    my_time.tm_mday ++; // incrementa el día siguiente

    if (my_time.tm_mday > 31) // si el día es mayor que 31

    my_time.tm_mday = 1; // luego establezca el día en 1

    descomponer;

    case MODE_SET_MONTH: //si el modo es set_month

    my_time.tm_mon ++; // luego incrementa el mes

    if (my_time.tm_mon > 12) //si el mes es mayor que 12

    my_time.tm_mon = 1; // Luego establezca el mes en 1

    descomponer;

    case MODE_SET_YEAR: //si el modo es set_year

    my_time.tm_year ++; // luego incrementa el año

    if (my_time.tm_year > 199)//si el año es mayor que 199 (2099)

    my_time.tm_year = 100;//Luego establezca el año en 100 (2000).

    descomponer;

    }

    }

    }

    }

    }

    if ((tick_1_128 % 32) == 0) //cada 250ms

    {

    if (mode == MODE_NORMAL) // si el modo es normal

    R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &my_time); // Luego lea la hora del módulo RTC

    display.clearDisplay(); // limpia la pantalla

    // dibuja la esfera del reloj analógico

    mostrar.drawCircle(32, 32, 31, blanco);

    para (int16_t i = 0; i < 360; i += 30)

    display.drawLine((31*sin(i / 57.296)) + 32, (31*cos(i / 57.296)) + 32, (27*sin(i / 57.296)) + 32, (27*cos(i / 57.296) 57.296)) + 32, blanco);

    // dibuja la flecha de los segundos

    x0 = 32+((26*sin(my_time.tm_sec * 6 / 57.296)));

    y0 = 32-((26*cos(my_time.tm_sec * 6 / 57.296)));

    mostrar.drawLine(32, 32, x0, y0, blanco);

    // dibujar la flecha de los minutos

    x0 = 32+((2*cos(my_time.tm_min * 6 / 57.296)));

    y0 = 32+((2*sin(my_time.tm_min * 6 / 57.296)));

    x1 = 32-((2*cos(my_time.tm_min * 6 / 57.296)));

    y1 = 32-((2*sin(my_time.tm_min * 6 / 57.296)));

    x2 = 32+((25*sin(my_time.tm_min * 6 / 57.296)));

    y2 = 32-((25*cos(my_time.tm_min * 6 / 57.296)));

    mostrar.dibujarTriángulo(x0, y0, x1, y1, x2, y2, BLANCO);

    // dibujar la flecha del tiempo

    x0 = 32+((2*cos((mi_hora.tm_hora * 30 + mi_hora.tm_min / 2) / 57.296)));

    y0 = 32+((2*sin((mi_hora.tm_hora * 30 + mi_hora.tm_min / 2) / 57.296)));

    x1 = 32-((2*cos((mi_hora.tm_hora * 30 + mi_hora.tm_min / 2) / 57.296)));

    y1 = 32-((2*sin((mi_hora.tm_hora * 30 + mi_hora.tm_min / 2) / 57.296)));

    x2 = 32+((18*sin((mi_hora.tm_hora * 30 + mi_hora.tm_min / 2) / 57.296)));

    y2 = 32-((18*cos((mi_hora.tm_hora * 30 + mi_hora.tm_min / 2) / 57.296)));

    display.fillTriangle(x0, y0, x1, y1, x2, y2, WHITE);

    // escribe el tiempo

    Pantalla.setCursor(58, 13);

    sprintf(str,”%02d:%02d:%02d”, mi_hora.tm_hora, mi_hora.tm_min, mi_hora.tm_seg);

    mostrar.imprimir(cadena);

    // escribir dia y mes

    sprintf(str,”%02d.%02d”, mi_hora.tm_mday, mi_hora.tm_mon);

    mostrar.setCursor(70, 36);

    mostrar.imprimir(cadena);

    // escribir el año

    sprintf(str,”%04d”, my_time.tm_year + 1900);

    mostrar.setCursor(70, 61);

    mostrar.imprimir(cadena);

    cambiar (modo) // dibuja un rectángulo alrededor del valor para cambiar en diferentes modos

    {

    caso MODE_NORMAL: romper;

    Para MODE_SET_SECOND: display.drawRoundRect(107, 0, 22, 16, 2, WHITE);break;

    Para MODE_SET_MINUTE: display.drawRoundRect(82, 0, 22, 16, 2, WHITE);break;

    Para MODE_SET_HOUR: display.drawRoundRect(57, 0, 22, 16, 2, WHITE);break;

    Para MODE_SET_DAY: display.drawRoundRect(69, 23, 22, 16, 2, WHITE);break;

    Para MODE_SET_MONTH: display.drawRoundRect(94, 23, 22, 16, 2, WHITE);

    Para MODE_SET_YEAR: display.drawRoundRect(69, 48, 42, 16, 2, WHITE);

    }

    display.display(); // vaciar el búfer a la pantalla

    }

    if (R_BSP_PinRead(BSP_IO_PORT_02_PIN_06) == BSP_IO_LEVEL_LOW) // si se presiona el botón

    {

    R_BSP_SoftwareDelay(DEBOUNCE_DELAY, BSP_DELAY_UNITS_MILLISECONDS); // retraso de rebote

    if (R_BSP_PinRead(BSP_IO_PORT_02_PIN_06) == BSP_IO_LEVEL_LOW) //Si el botón aún está presionado

    {

    while (R_BSP_PinRead(BSP_IO_PORT_02_PIN_06) == BSP_IO_LEVEL_LOW);// Espere mientras se presiona el botón

    R_BSP_SoftwareDelay(DEBOUNCE_DELAY, BSP_DELAY_UNITS_MILLISECONDS); // retraso de rebote

    if (R_BSP_PinRead(BSP_IO_PORT_02_PIN_06) == BSP_IO_LEVEL_HIGH) //Si se suelta el botón

    {

    if (modo == MODE_SET_YEAR) // si el modo actual es set_year

    {

    mode = MODE_NORMAL; // luego establece el modo en normal

    R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &my_time); //y actualice el valor del módulo RTC

    }

    más // si no

    modo = static_cast<モード>(modo + 1); // establece el siguiente modo

    }

    }

    }

    }

    #si BSP_TZ_SECURE_BUILD

    /* Ingrese el código no seguro */

    R_BSP_NonSecureEnter();

    #terminara si

    }

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Entradas relacionadas

    ¿Cómo programo un ESP32 usando Arduino Labs para MicroPython?

    21/07/2023

    Bomba de agua impresa en 3D DIY con motor 775

    14/07/2023

    Cómo depurar proyectos Arduino: una mejor manera de escribir código Arduino

    14/07/2023
    Entradas recientes

    Precauciones para el procesamiento por chorro de agua (WJM)

    25/09/2023

    Procesos de mecanizado no convencionales: clasificación y características.

    25/09/2023

    Procesamiento ultrasónico (USM) – ME Mechanical

    25/09/2023

    Tipos de uniones soldadas

    24/09/2023
    Noticias industrial
    Electrónica

    El controlador LED elimina el ruido audible PWM

    25/07/2023

    Allegro MicroSystems utiliza el control patentado Preemptive Boost (PEB) para eliminar el ruido audible durante…

    Electrónica

    Fusible PPTC reajustable con variantes de 10 mA, 20 mA y 30 mA

    25/07/2023

    Bel Fuse Circuit Protection ha anunciado una expansión de la serie 0ZCM de fusibles reajustables…

    Electrónica

    BMZ Group y VDE firman una asociación estratégica en tecnología de baterías

    25/07/2023

    BMZ Group y VDE Renewables firman una asociación estratégica para promover una plataforma de red…

    Electrónica

    SmartDV agrega compatibilidad con MIPI I3C 1.1 en toda la cartera de IP

    25/07/2023

    Verificación y diseño de IP, transacciones sintetizables, verificación posterior al silicio, SystemC TLM, ciclo de…

    Facebook YouTube LinkedIn
    © 2023 Hecho con ♥ desde México

    Type above and press Enter to search. Press Esc to cancel.