- Megjött a Razer DeathAdder egerek legfrissebb nemzedéke
- Ismét minimalista miditorony érkezett a Fractal Design műhelyéből
- Alakul a SpaceX Starlink európai ellenfele
- Digital Fingerprinting: Így buktat le a böngésződ a neten - Tech Percek #18
- Prezentálta PCI Express 6.0-s SSD-vezérlőjét a Silicon Motion
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Bambu Lab 3D nyomtatók
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- RAM topik
- AMD GPU-k jövője - amit tudni vélünk
- Milyen egeret válasszak?
-
PROHARDVER!
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
- Azonnali mobilos kérdések órája
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- Motorola Moto G56 - bátyja árnyékában
- Világ Ninjái és Kódfejtői, egyesüljetek!
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Samsung Galaxy S23 Ultra - non plus ultra
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- További aktív témák...
- Asztali PC , i7 6700K , 1080 Ti 11GB , 32GB DDR4 , 500GB NVME , 500GB HDD
- Asztali PC , R5 8400F , RTX 3070 , 32GB DDR5 , 500GB NVME , 2TB HDD
- Legion Go 1TB
- Lenovo LOQ 15IRX9 - i5 13450HX, 16GB, RTX 4060 8G, 1TB M.2 (Gari: 2027.03.11.)
- LG 34WR55QK-B - 34" Ívelt VA - 3440x1440 - 100Hz 5ms - FreeSync Premium - HDR 10 - USB Type-C 65W
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- MacBook, Apple M1 / M2 kompatibilis dokkolók, DisplayLink 4K, USB-C, Type-C
- Lenovo ThinkPad T570, T580, P51s, P52s eredeti Lenovo, külső akkumulátor eladó
- BESZÁMÍTÁS! 32GB (2x16GB) Kingston FURY Beast RGB 6000MHz DDR5 CL30 memória 27% 3 év garancia
- Honor 400 Lite 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest