Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Beggar

    csendes tag

    válasz tvamos #8823 üzenetére

    Ha jól értem, akkor igen, így csinálom. Nem az eredeti, hanem a CH340es Atmega328as nano és FTDI232 A328 mini lapokat használok. Az a furcsa, hogy eddig gond nélkül működtek ezek a lapok. Nem használtam őket néhány hónapja, de most 2 gépről is megpróbáltam, mindkét gépen mindkét lap ugyanezt produkálja.

  • Beggar

    csendes tag

    Sziasztok!
    Ezzel a postal kapcsolatban tud segíteni valaki? [link]

    Köszönöm előre is!

  • Beggar

    csendes tag

    Sziasztok. Nem tudok feltölteni sem mini, sem nano-ra az alábbi üzenet miatt. Mi lehet a probléma? Előre is köszönöm a segítséget!

  • 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 end

    Előre köszönök minden nemű segítséget!

Új hozzászólás Aktív témák

Hirdetés