Arduino mejorar los artículos 14- basculante operación de los botones OLED

operación de tecla del joystick OLED

En muchas aplicaciones, el basculante se utiliza en lugar de las teclas táctiles, la única fácil de operar, y se simplifica una pluralidad de botones de balancín alternativos, lo que hace que el diseño del circuito. Benpian muestra cómo cuatro direcciones como cuatro botones basculantes retorcidos para operar la pantalla OLED.

1. Materiales Experimentales

  • Junta de Desarrollo R3 Uno
  • Sistemas de cables de datos USB
  • plato de pan y cables de soporte
  • Las teclas basculantes biaxialmente módulo
  • pantalla OLED

2. Procedimiento Experimental

1. El diagrama de circuito esquemático de un edificio.

pantalla OLED VCC, GND están conectados al tablero del desarrollo de 3.3V, GND, pantalla OLED SDA SCL y A4 y A5 están conectados a la placa de desarrollo. El VCC módulo biaxialmente rocker llave, placa de desarrollo GND 5V están conectados, GND, módulo de salida del eje X, tarjetas de salida del eje Y están conectados a los pines analógicos A0, A1.

Principio se muestra a continuación:

esquemas experimentales

La conexión física se muestra a continuación:

diagrama de conexión física

2. Crear un nuevo dibujo, las siguientes copias de sustitución de código del código generado de forma automática y guardarlo.

/*
   OLED_Key
   摇杆按键操作OLED
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET     4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);

#define pinX  A0
#define pinY  A1

int valueX = 0;
int valueY = 0;
unsigned char keyValue = 0;
int value = 0;


void menu(unsigned char index)
{
  display.clearDisplay();//清屏
  display.setCursor(20, 2);//设置显示位置
  display.println("--KEY--");
  display.setCursor(2, 35);//设置显示位置

  if (index == 1)
  {
    display.print("R:  [");
    value = value - 1;
  } else if (index == 2)
  {
    display.print("L:  [");
    value = value + 1;
  } else if (index == 3)
  {
    display.print("D:  [");
    value = value - 10;
  }
  else if (index == 4)
  {
    display.print("U:  [");
    value = value + 10;
  }

  if (value >= 100)
  {
    value = 100;
  }
  if (value <= 0)
  {
    value = 0;
  }
  display.print(value);
  display.print("]");
  display.display(); // 开显示

}

//按键扫描函数
unsigned char keyScan(void)
{
  static unsigned char keyUp = 1;

  valueX = analogRead(pinX);
  valueY = analogRead(pinY);

  if (keyUp && ((valueX <= 10) || (valueX >= 1010) || (valueY <= 10) || (valueY >= 1010)))
  {
    delay(10);
    keyUp = 0;
    if (valueX <= 10)return 1;
    else if (valueX >= 1010)return 2;
    else if (valueY <= 10)return 3;
    else if (valueY >= 1010)return 4;
  } else if ((valueX > 10) && (valueX < 1010) && (valueY > 10) && (valueY < 1010))keyUp = 1;
  return 0;
}

void setup()
{
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextColor(WHITE);//开像素点发光
  display.clearDisplay();//清屏
  display.setTextSize(2); //设置字体大小
  display.setCursor(20, 2);//设置显示位置
  display.println("--KEY--");
  display.display(); // 开显示
}

void loop()
{
  keyValue = keyScan();

  if (keyValue != 0)
  {
    menu(keyValue);
  }
}

3. Conector Junta de Desarrollo, y establecer el número de puerto correspondiente al tipo de tableros, para su descarga.

descargar

3. Resultados experimentales

eje de balancín de torsión correspondiente a cuatro pantalla marcado L, R, U, D correspondiente a las cuatro direcciones y pantalla digital resta.

Los resultados experimentales

4. Análisis de Programas

La parte principal de la función de exploración de clave de programa, que se recogieron eje X y la entrada de Y-eje analógico palanca de mando seleccionar valores analógicos 1010 AD y 10 como dos puntos críticos, colección de nuevo los datos de torsión cuando el eje de balancín menos de 10 o mayor de 1.010, esto se consideró un accionamiento clave axial.

variable estática KeyValue guardar el botón presionado, sólo cuando menos del 10 vuelve a entrar en el análogo o superior a 1.010 activará una vez más la tecla de retorno.

Enfoque en número público de micro-canales: TonyCode
el grupo de intercambio de aprendizaje de Arduino: 868 283 450

Más, celebro la atención del número público. Barra el micro-canal para seguir el código Fanger Wei:
Micro código de búsqueda de canales añadió número público: TonyCode

Publicado 63 artículos originales · ganado elogios 250 · Vistas de 230.000 +

Supongo que te gusta

Origin blog.csdn.net/TonyIOT/article/details/103519899
Recomendado
Clasificación