Hjælp til M2TKLIB projekt. (Læst 5204x)

Offline asm7100

  • Højpas filter
  • *****
  • Indlæg: 309
  • Antal brugbare Indlæg: 17
  • Hvis det ikke kan gøres så gør det alligevel.
    • Vis profil
Hjælp til M2TKLIB projekt.
« Dato: Januar 18, 2016, 16:22:14 »
Hejsa, er der nogle af jer rødder der kan hjælpe mig med et M2tklib projekt.
Der er noget jeg ikke helt kan forstå eller sagt på jysk,få til at virke.

Hele koden til programmet er her.
Kode:
/*

  CanonTimeTake.pde
  Arduino Nano Canon time take.
  Version 2
  Build 1

  Unit to control Canon 1200D picture take.
  Uses:
  Arduino Nano V3.
  OLED from aliexpress with SPI interface, Software SPI
  Rotery encoder with key.
 
  Universal 8bit Graphics Library, https://github.com/olikraus/u8glib/
  Mini Interative Interface Toolkit Library, https://code.google.com/p/m2tklib/

  Key Rotater
    Pin 1 -   D2
    Pin 2 -   D3
    Select    D12

  Cam
    Focus   D10
    Trigger   D11

  Display
    SCL   D4
    SDA   D5
    RST   D7
    O/C   D6 
 
*/

#include "U8glib.h"
#include "M2tk.h"
#include "utility/m2ghu8g.h"

// setup u8g object, please remove comment from one of the following constructor calls
// IMPORTANT NOTE: The following list is incomplete. The complete list of supported
U8GLIB_SSD1306_128X64 u8g(4, 5, 8, 6, 7); 
// SW SPI Com: SCK = 3, MOSI = 4, CS = 7, D/C = 5, RST = 6
// Nano  OLED
// D4    SCL
// D5    SDA
// D8    brues ikke
// D6    D/C
// D7    RST

int ledFocus   = 11;
int ledTrigger = 10;

uint32_t n_total_pic = 0;
uint8_t n_time_delay = 10;
uint8_t select_time_unit = 0;

void takePic() {
  digitalWrite(ledFocus, HIGH);
  delay(1000);
  digitalWrite(ledFocus, LOW);
  delay(100);
  digitalWrite(ledTrigger, HIGH);
  delay(1000);
  digitalWrite(ledTrigger, LOW);
  n_total_pic++;
}



const char *fn_idx_to_time_unit(uint8_t idx)
{
  if( idx == 0) return "Minutter";
  else return "Timer";
}

uint8_t n_time_delay_show = n_time_delay;

void fn_start(m2_el_fnarg_p fnarg) {
  //
  // Here i like to have a loop to i puss the select button to end it.
  //
  Serial.println("Start");
  Serial.print("Delay = ");
  Serial.print(n_time_delay);
  Serial.print(" - TimeUnit = ");
  if (select_time_unit == 0) { 
    Serial.println("Minutter");
  };
  if (select_time_unit == 1) {
    Serial.println("Timer");
  };
  for(uint8_t a = n_time_delay; a > 0; a--){
    //
    // Here i like to have a emty screen there shows a countdown to the picture is taken and how many pictures there is taken to now.
    // And a button to press to stop the loop. And then go back to the mainmenu.
    //
    n_time_delay_show = a;
    delay((1000*n_time_delay)*((select_time_unit*60)+1));
    Serial.print("a = ");
    Serial.println(a);
    takePic();
  }
  //
  // Loop end
  //
  Serial.println("Slut");
}


void fn_take(m2_el_fnarg_p fnarg) {
  takePic();
}


//=================================================
// Forward declaration of the toplevel element
M2_EXTERN_ALIGN(top_menu);

//=================================================

M2_LABEL(el_l1, "f1", "Canon Timer");
M2_LABEL(el_u1, NULL, " V2.1!");
M2_LABEL(el_l2, "f1", " Tid :");
M2_U8NUM(el_u2, "c2", 0, 60, &n_time_delay);


M2_LABEL(el_l3, "f1", " Enhed :");
M2_COMBO(el_u3, NULL, &select_time_unit, 2, fn_idx_to_time_unit);
M2_BUTTON(el_fn_start, "f1x0y50", "[Start]", fn_start);
M2_BUTTON(el_fn_take, "f1b1x30y50", "[Take]", fn_take);
M2_LABEL(el_l5, "f1", "Count :");
M2_U32NUM(el_u5, "c4r1", &n_total_pic);

M2_LIST(list) = { &el_l1, &el_u1, &el_l2, &el_u2, &el_l3, &el_u3, &el_fn_start, &el_fn_take, &el_l5, &el_u5 };
M2_GRIDLIST(el_gridlist, "c2", list);
M2_ALIGN(top_menu, "-1|1W64H64", &el_gridlist);

// m2 object and constructor
// Note: Use the "m2_eh_4bd" handler, which fits better to the "m2_es_arduino_rotary_encoder"
M2tk m2(&top_menu, m2_es_arduino_rotary_encoder, m2_eh_4bd, m2_gh_u8g_bf);

//=================================================
// Arduino Setup & Loop

void setup(void) {
    pinMode(ledFocus, OUTPUT);
    pinMode(ledTrigger, OUTPUT);
    digitalWrite(ledFocus, LOW);
    digitalWrite(ledTrigger, LOW);
   
  // Connect u8glib with m2tklib
  m2_SetU8g(u8g.getU8g(), m2_u8g_box_icon);

  // Assign u8g font to index 0
  m2.setFont(0, u8g_font_6x12r);
  m2.setFont(1, u8g_font_7x13r);
 

  // define button for the select message
  m2.setPin(M2_KEY_SELECT, 12);       
 
  // The incremental rotary encoder is conected to these two pins
  m2.setPin(M2_KEY_ROT_ENC_A, 3);
  m2.setPin(M2_KEY_ROT_ENC_B, 2);

  Serial.begin(9600);
}

void loop() {
  // check rotary encoder also inside the picture loop
  m2.checkKey(); 
  // process events and redraw menu if required
  if ( m2.handleKey() != 0 ) {
    u8g.firstPage(); 
    do {
      // check rotary encoder also inside the picture loop
      m2.checkKey();
      // draw menu
      m2.draw();
    } while( u8g.nextPage() );
  }
}

Jeg vil gerne at programmet skifter "skærm" når jeg trykker på start og begynder at tælle ned til det næste billede skal taget, også vil jeg gerne have at den på samme skærm viser hvor mange billeder der er blevet taget. Desuden skal der være en button der får mig tilbage til hoved menuen.
Jeg ved godt at løkken der skal køre "uendeligt" ikke er lavet endnu (det er den button skal afbryde.

Håber der er nogle der kan hjælpe.
MVH
Allan Madsen

 

Offline asm7100

  • Højpas filter
  • *****
  • Indlæg: 309
  • Antal brugbare Indlæg: 17
  • Hvis det ikke kan gøres så gør det alligevel.
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #1 Dato: Januar 19, 2016, 23:02:12 »
Slet ingen hjælp at få?
MVH
Allan Madsen

 

Offline Jakobsen

  • Højpas filter
  • *****
  • Indlæg: 302
  • Antal brugbare Indlæg: 45
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #2 Dato: Januar 20, 2016, 09:33:47 »
Hej asm7100

Tror egentlig gerne der  er folk der vil hjælpe, men......

Citér
Der er noget jeg ikke helt kan forstå eller sagt på jysk,få til at virke.

Jeg har ikke lige sådan et setup her så det er ikke "bare" at smide koden ind og se hvad det er der ikke virker hos dig.

Du må fortælle os hvor meget der virker ...
Viser dit display noget overhoved?
Får du data på seriel?
Sker der noget når du trykker på knapper?
osv.

Samt at beskrive præcist hvad der ikke virker hos dig :-)

 

Offline asm7100

  • Højpas filter
  • *****
  • Indlæg: 309
  • Antal brugbare Indlæg: 17
  • Hvis det ikke kan gøres så gør det alligevel.
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #3 Dato: Januar 20, 2016, 14:21:25 »
Takker for dit svar, ja nogle gange er det lidt svært at skrive hvad man egentlig mener.

Alt virker som det skal, men jeg vil gerne at når man har trykket på start, vil jeg gerne at der skiftet skærm, og at på denne skærm, Vider der blive talt ned til næste billede tages og at der bliver vist hvor mange billeder der er taget samt en knap til at stoppe det med også gå tilbage til hoved menuen.

Det jeg sådan set har brug for at vide er hvordan man skifter om til en ny skærm, sådan at man stadig bruger menu systemet?
Håber denne forklaring giver lidt mere mening :-)
Men som sagt alt indtil nu virker som forventet, men jeg ved ikke lige hvordan jeg via menu systemet kan skifte over til et nyt layout.
MVH
Allan Madsen

 

Offline Jakobsen

  • Højpas filter
  • *****
  • Indlæg: 302
  • Antal brugbare Indlæg: 45
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #4 Dato: Januar 21, 2016, 21:16:43 »
Hej, har prøver at læse lidt om det på nettet og umiddelbart som jeg forstår det kan de fleste display ikke indehold flere "pages" og derfor er man nødt til at tegne/ skrive hver gang noget skal skiftes.

https://code.google.com/p/u8glib/wiki/tpictureloop

Faldt også lige over denne
http://henrysbench.capnfatz.com/henrys-bench/u8glib-arduino-oled-tutorial-1-hello-world-on-steroids/

Desværre har jeg ikke lige et grafisk display som jeg kan teste med, men mon ikke der er nogen her der har det.

 

Offline asm7100

  • Højpas filter
  • *****
  • Indlæg: 309
  • Antal brugbare Indlæg: 17
  • Hvis det ikke kan gøres så gør det alligevel.
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #5 Dato: Januar 21, 2016, 22:35:39 »
Hejsa, jeg bruger M2tklib som er et menu system til lcd og oled displys, og det jeg er kommet frem til er at jeg tror jeg skal lave to sæt menu systemer, et til hovedmenuen og et til info (Count down og total pic)
MVH
Allan Madsen

 

Offline Jakobsen

  • Højpas filter
  • *****
  • Indlæg: 302
  • Antal brugbare Indlæg: 45
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #6 Dato: Januar 22, 2016, 09:08:18 »
u8g er da en del af M2TKLIB https://code.google.com/p/m2tklib/wiki/t06u8g

Switch to Graphics Page
Goal is to disable the menu for some time and to show some custom graphics. This requires the ability to disable the menu, but keep the key detection alive. This will allow the program to wait for a key event, which enables the menu again.

 

Offline asm7100

  • Højpas filter
  • *****
  • Indlæg: 309
  • Antal brugbare Indlæg: 17
  • Hvis det ikke kan gøres så gør det alligevel.
    • Vis profil
Sv: Hjælp til M2TKLIB projekt.
« Svar #7 Dato: Januar 22, 2016, 14:34:12 »
Ja det er jo selvfølgelig rigtigt nok, takker, vil jeg lige få kikket på :-)
MVH
Allan Madsen