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:
La conexión física se muestra a continuación:
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.
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.
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: