Hirdetés
- sziku69: Szólánc.
- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- WireGuard VPN a mindennapokra
- sziku69: Fűzzük össze a szavakat :)
- Meggyi001: Kórházi ellátás: kuka vagy finom?
- gerner1
- eBay-es kütyük kis pénzért
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Mr Dini: Mindent a StreamSharkról!
-
LOGOUT
Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.
Új hozzászólás Aktív témák
-
Beggar
csendes tag
Sziasztok!
Már napok óta küzdök egy menüszerkezettel arduinoval, sehogy sem akarja a végleges formát ölteni. Eljutottam odáig, hogy a menüben már lehet mászkálni, de a kiválasztott almenü értékét nem tudom módosítani, kiolvasni memóriából rendesen. Ha valakinek van egy kész ötlete, azt is szívesen fogadom.A menü szerkezete így néz ki:
"Input Select"-
|- TV
|- Media Player
|- Instrument
|- Aux 1
|- Aux 2
Equalizer-
|- Bass (értéke lehet 0-63)
|- Treble (értéke lehet 0-63)
|- Balance (értéke lehet 0-63)
|- Loudness (értéke 0-1)Az én megoldásom részben a következő:
#include <EEPROM.h>
#include <LiquidCrystal.h>
char* main_menu[] = {" Input Select ", " Equalizer "};
char* menu_items[2][6] = {
{" TV ", " Media Player ", " Instrument ", " Aux 1 ", " Aux 2 ", " Exit "},
{" Bass ", " Treble ", " Balance ", " Loudness ", " Exit " }
};
const int btn_up_pin = 9;
const int btn_down_pin = 8;
const int btn_enter_pin = 7;
const int btn_esc_pin = 6;
//const int backlight = 10;
const int lcd_contrast_pin = 11;
const int lcd_power_pin = 10;
const int backlight_value = 0;
// memoria címek ---------
const int addr_volume = 0;
const int addr_inp = 1;
const int addr_equ_0 = 2;
const int addr_equ_1 = 3;
const int addr_equ_2 = 4;
const int addr_equ_3 = 5;
// -----------------------
int on_menu = 0;
char* menu_item = "";
char* main_itme = "";
char* sub_item = "";
int main_menu_counter = 0;
int main_counter = 0;
int sub_menu_counter = 0;
int sub_counter = 0;
int volume_counter = 0;
int temp_value = 0;
int btn_up = 0;
int btn_down = 0;
int btn_enter = 0;
int btn_esc = 0;
long action_timer = 0;
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
void setup() {
Serial.begin(9600);
pinMode(btn_up_pin, INPUT);
pinMode(btn_down_pin, INPUT);
pinMode(btn_enter_pin, INPUT);
pinMode(btn_esc_pin, INPUT);
pinMode(lcd_contrast_pin, OUTPUT);
pinMode(lcd_power_pin, OUTPUT);
//analogWrite(backlight, backlight_value);
lcd.begin(16, 2);
on_menu = 0;
}
char mem_read(int mainmenu, int submenu = 0){
int ret_val = 0;
char ret_temp;
if(mainmenu == 0 && submenu == 0){
ret_val = EEPROM.read(1);
}
if(mainmenu == 1 && submenu == 0){
ret_val = EEPROM.read(2);
}
if(mainmenu == 1 && submenu == 1){
ret_val = EEPROM.read(3);
}
if(mainmenu == 1 && submenu == 2){
ret_val = EEPROM.read(4);
}
if(mainmenu == 1 && submenu == 3){
ret_val = EEPROM.read(5);
}
return ret_val;
}
void loop() {
btn_up = digitalRead(btn_up_pin);
btn_down = digitalRead(btn_down_pin);
btn_enter = digitalRead(btn_enter_pin);
btn_esc = digitalRead(btn_esc_pin);
if(on_menu > 0){
digitalWrite(lcd_power_pin, HIGH);
digitalWrite(lcd_contrast_pin, LOW);
}
if(on_menu == 0){
digitalWrite(lcd_power_pin, LOW);
analogWrite(lcd_contrast_pin, 254);
}
if(menu_item == " Exit ") {
if(on_menu == 1){
menu_item = "";
main_menu_counter = 0;
sub_menu_counter = 0;
on_menu = 0;
}
if(on_menu == 2){
menu_item = "";
sub_menu_counter = 0;
on_menu = 1;
}
}
if(on_menu == 1){ // -------------------------------------------------
if(btn_up == HIGH && on_menu == 1){
if(main_menu_counter < ((sizeof(main_menu)/2)-1)){
main_menu_counter++;
delay(250);
}
}
if(btn_down == HIGH && on_menu == 1){
if(main_menu_counter > 0){
main_menu_counter--;
delay(250);
}
}
lcd.setCursor(0,0);
lcd.write(main_menu[main_menu_counter]);
lcd.setCursor(0,1);
lcd.write(" ");
if(btn_enter == HIGH && on_menu == 1){
menu_item = main_menu[main_menu_counter];
main_counter = main_menu_counter;
on_menu = 2;
delay(250);
}
} // #################################################################
if(on_menu == 2){ // -------------------------------------------------
if(btn_up == HIGH && on_menu == 2){
if(sub_menu_counter < ((sizeof(menu_items[main_counter])/2)-1)){
sub_menu_counter++;
delay(250);
}
}
if(btn_down == HIGH && on_menu == 2){
if(sub_menu_counter > 0){
sub_menu_counter--;
delay(250);
}
}
lcd.setCursor(0,0);
lcd.write(main_menu[main_counter]);
lcd.setCursor(0,1);
lcd.write(menu_items[main_counter][sub_menu_counter]);
if(btn_enter == HIGH && on_menu == 2){
menu_item = menu_items[main_counter][sub_menu_counter];
sub_counter = sub_menu_counter;
on_menu = 3;
delay(250);
}
} // #################################################################
if(on_menu == 3){ // -------------------------------------------------
lcd.setCursor(0,0);
lcd.write(menu_items[main_counter][sub_counter]);
lcd.setCursor(1,1);
temp_value = mem_read(main_counter, sub_counter);
lcd.write(temp_value);
//lcd.write(" ");
} // #################################################################
if(on_menu == 0){
//analogWrite(backlight, 0);
lcd.setCursor(0,0);
lcd.write(" Home Amplifier ");
lcd.setCursor(0,1);
lcd.write(" ");
if(btn_enter == HIGH && on_menu == 0){
on_menu = 1;
delay(250);
}
}
if(btn_esc == HIGH){
menu_item = "";
main_menu_counter = 0;
sub_menu_counter = 0;
on_menu = 0;
}
Serial.print("on_menu: ");
Serial.print(on_menu);
Serial.print(" lcd_power_pin: ");
Serial.print(digitalRead(lcd_power_pin));
Serial.print(" temp_value: ");
Serial.print(temp_value);
Serial.println("");
delay(50);
} // loop endElőre köszönök minden nemű segítséget!
Új hozzászólás Aktív témák
- Mikrotik routerek
- Kerékpárosok, bringások ide!
- A fociról könnyedén, egy baráti társaságban
- Kínai és egyéb olcsó órák topikja
- Elon Musk billiomos lesz, ha kitör a gépek forradalma
- Milyen nyomtatót vegyek?
- sziku69: Szólánc.
- ZIDOO médialejátszók
- PlayStation 1 / 2
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- MacBook Pro 13, 14, 15, 16, MacBook Air M1, M2 M3 M4 bill magyarosítás lézerrel / sapkacserével
- iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3660
- Xiaomi Redmi Note 12 Pro 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Lenovo ThinkPad P15 Gen 1 Intel i7-10875H 32GB 512GB Nvidia Quadro RTX 3000 1 év garancia
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest
ekkold
