In acest articol vom incerca crearea unui meniu simplu cu ajutorul Arduino.

Pentru acest lucru vom folosi un encoder rotatit si un display LCD 16*2 cu interfata pe magistrala I2C pentru a economisi firele necesare la conexiune.

Encoderul va fi conectat la pinii digitali 2 si 3 ai Arduino.

Displayul LCD este conectat exact ca si in acest articol.

De asemenea mai avem nevoie si de libraria Rotary. Aceasta se poate descarca de aici

Sketchul reultat este cel de mai jos:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Rotary.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int pinA = 2;
int pinB = 3;
Rotary r = Rotary(pinA, pinB); 
int coloane = 16;
char* Meniu[] = {"Contrast", "Volum", "Limba", "Dificultate", "Versiune"};
int elemente = 5;
int linieCursor = 0; 

void setup() {
  digitalWrite (pinA, HIGH);     
  digitalWrite (pinB, HIGH);
  lcd.begin();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Meniu cu encoder");
  lcd.setCursor(0, 1);
  lcd.print("rotativ...");
  delay(2000);
  MeniulMeu();
}

void loop() {
  volatile unsigned char result = r.process();
   if (result) {
    result == DIR_CCW ? linieCursor = linieCursor - 1 : linieCursor = linieCursor + 1;
    if (linieCursor < 0) { 
      linieCursor = elemente - 1; 
    } 
    if (linieCursor > elemente - 1) {
      linieCursor = 0;
    }
    MeniulMeu();
  }
}

void MeniulMeu() {
  lcd.clear();
  lcd.setCursor(0, 0); 
  lcd.print("Meniu Principal");
  lcd.setCursor(0, 1);
  lcd.print("<"); 
  lcd.setCursor(coloane - 1, 1); 
  lcd.print(">");
  lcd.setCursor(1, 1);
  lcd.print(Meniu[linieCursor]);
}

In articolul urmator vom adauga si butonul de selectie a fiecarui meniu.

Nu sunt comentarii

Acest website foloseste cookie-uri pentru o experienta placuta in timpul navigarii.