Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Reddit menu example - May 8, 2019
- Displays a multi-level menu on a 20x4 LCD screen, with 5-button navigation.
- Board = Uno
- Other hardware: 20x4 I2C LCD
- 5 series-resistive buttons
- Button 1 should be left, button 2 down, button 3 up, button 4 right. 5 = select.
- buttons, resistors, pin levels:
- 1 220Ω 394
- 2 470Ω 329
- 3 1KΩ 264
- 4 2.2KΩ 194
- 5 4.7KΩ 114
- */
- #include "Wire.h" // For I2C (standard Arduino IDE library)
- #include "LiquidCrystal_I2C.h" // Library location --- https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c
- LiquidCrystal_I2C lcd(0x27, 20, 4); // 0x27 is -usually- the default I2C bus address of the backpack
- bool use_serial_messages = true; // general prototyping messages (allows disabling them for speed reasons)
- int buttonInput_pin = A0;
- int button_pressed = 0;
- const int button_pressed__left = 1;
- const int button_pressed__down = 2;
- const int button_pressed__up = 3;
- const int button_pressed__right = 4;
- const int button_pressed__select = 5;
- void setup() {
- Serial.begin(9600);
- lcd.init();
- // buttonInput_pin is analogRead(), doesn't require declaration
- // I2C pins A4, A5 are fixed and don't require declaration
- lcd_clear_all_lines();
- Serial.println("Exiting setup()");
- }
- void loop() {
- lcd_clear_line1();
- delay(500);
- button_pressed = analogRead(buttonInput_pin);
- if (button_pressed > 50 && button_pressed < 130) {
- // select button = 114
- lcd.setCursor(0, 0);
- lcd.print("button = select");
- Serial.println("button = select");
- }
- else if (button_pressed > 180 && button_pressed < 220) {
- // right button = 194
- lcd.setCursor(0, 0);
- lcd.print("button = right");
- Serial.println("button = right");
- }
- else if (button_pressed > 230 && button_pressed < 290) {
- // up button = 264
- lcd.setCursor(0, 0);
- lcd.print("button = up");
- Serial.println("button = up");
- }
- else if (button_pressed > 300 && button_pressed < 360) {
- // down button = 329
- lcd.setCursor(0, 0);
- lcd.print("button = down");
- Serial.println("button = down");
- }
- else if (button_pressed > 370 && button_pressed < 430) {
- // left button = 394
- lcd.setCursor(0, 0);
- lcd.print("button = left");
- Serial.println("button = left");
- }
- else {
- // no button pressed.
- lcd.setCursor(0, 1);
- lcd.print("button = none");
- Serial.println("button = none");
- }
- delay(2000);
- } // end of main loop
- void lcd_clear_all_lines() {
- lcd_clear_line1();
- lcd_clear_line2();
- lcd_clear_line3();
- lcd_clear_line4();
- }
- void lcd_clear_line1() {
- lcd.setCursor(0, 0);
- lcd.print(" ");
- }
- void lcd_clear_line2() {
- lcd.setCursor(0, 1);
- lcd.print(" ");
- }
- void lcd_clear_line3() {
- lcd.setCursor(0, 2);
- lcd.print(" ");
- }
- void lcd_clear_line4() {
- lcd.setCursor(0, 3);
- lcd.print(" ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement