Klávesnice 4x4 u Marlina

Klávesnice 4x4 u Marlina

Příspěvekod celeron » 14.05.2016 23:51

Při slídení po netu jsem narazil na možnost připojení klávesnice 16 tlačítek přes sériovou lajnu Aux1. Klávesnice co se prodává k Arduinu s převodníkem na sériovou linku. Dokonce i obslužák tam je:
Kód: Vybrat vše
#include <Keypad.h>
#include <EEPROM.h>

float xRes = 0.1;
float yRes = 0.1;
float zRes = 0.01;

//int toolPWM = EEPROM.read(1);
int toolPWM = 255;
int pwmRes = 5;

void(* resetFunc) (void) = 0; //declare reset function at address 0

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns

char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad

Keypad keypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(250000);
  keypad.addEventListener(keypadEvent);
}
 
void loop() {
  char key = keypad.getKey();
}

void keypadEvent(KeypadEvent key) {
  switch (keypad.getState()) {
    case PRESSED:
        if (key == '*') { Serial.println("M42 P44 S255"); Serial.println("M117 Spindle ON"); } // Spindle on
        else if (key == '0') { Serial.println("M42 P44 S0"); Serial.println("M117 Spindle OFF"); } // Spindle off
        else if (key == '#') { Serial.println("M84"); } // Motor off
       
        else if (key == '6') { Serial.println("G91"); Serial.print("G0 X"); Serial.println(xRes); Serial.println("G90"); } // X Plus
        else if (key == '4') { Serial.println("G91"); Serial.print("G0 X-"); Serial.println(xRes); Serial.println("G90"); } // X Minus

        else if (key == '2') { Serial.println("G91"); Serial.print("G0 Y"); Serial.println(yRes); Serial.println("G90"); } // Y Plus
        else if (key == '5') { Serial.println("G91"); Serial.print("G0 Y-"); Serial.println(yRes); Serial.println("G90"); } // Y Minus
       
        else if (key == '3') { Serial.println("G91"); Serial.print("G0 Z"); Serial.println(zRes); Serial.println("G90"); } // Z Plus
        else if (key == '1') { Serial.println("G91"); Serial.print("G0 Z-"); Serial.println(zRes); Serial.println("G90"); } // Z Minus

        else if (key == 'A') { if(xRes == 0.1) {xRes = 1;} else if(xRes == 1) {xRes = 10;} else if(xRes == 10) {xRes = 50;} else if(xRes == 50) {xRes = 0.1;} } // X Resolution
        else if (key == 'B') { if(yRes == 0.1) {yRes = 1;} else if(yRes == 1) {yRes = 10;} else if(yRes == 10) {yRes = 50;} else if(yRes == 50) {yRes = 0.1;} } // Y Resolution
        else if (key == 'C') { if(zRes == 0.01) {zRes = 0.1;} else if(zRes == 0.1) {zRes = 1;} else if(zRes == 1) {zRes = 10;} else if(zRes == 10) {zRes = 0.01;} } // Z Resolution
       
        else if (key == '7') { Serial.println("G28 X0 Y0"); } // XY to MIN
        else if (key == '8') { Serial.println("G92 X0 Y0 Z0"); } // Set to X0 Y0 Z0
        else if (key == '9') { Serial.println("G28 Z0"); } // Z to MAX
       
        else if (key == 'D') { for (int x=0;x<5;x++) Serial.println("M112"); } // Kill
        break;

    case RELEASED:       
        break;

    case HOLD:
        if (key == 'A') { xRes = 0.1; } // X Resolution
        else if (key == 'B') { yRes = 0.1; } // Y Resolution
        else if (key == 'C') { zRes = 0.01; } // Z Resolution

        else if (key == 'D') { resetFunc(); } // Restart
        break;
  }
}

b59eebf36dce8477d7efe6ffcbacdefa_preview_featured.jpg

cca7bf61e8bd4f5cfc3476762ccfbb48_preview_featured.jpg

82eb606de8f079113456b4a29373437f_preview_featured.jpg


Netušíte někdo, co to je za destičku za klávesnicí? Mini Mega 168?
Jirka
  • 0

celeron
 
Příspěvky: 747
Registrován: 15.03.2015 18:12
Reputation: 0

Re: Klávesnice 4x4 u Marlina

Příspěvekod Rebel » 15.05.2016 00:04

S nejvetsi pravdepodobnosti to je Arduino Pro Mini http://www.aliexpress.com/item/ATMEGA32 ... b7f9fc2000
Slo by pouzit jake koli jine, treba Nano s prislusnym sketchem.
  • 0

Dan - Rebel ? ;) - http://rebelove.org - Nevyzkoušíš = nevíš - Rebel I-III, Rebel sCUBE, Anycubic i3 MEGA, Anycubic - Kossel Mini, MeCretor2-upravený, Anycubic Photon, RR1, RR400M ! Pro STL přílohy použij čudlík "UMÍSTIT DO PŘÍSPĚVKU" !
Rebel
 
Příspěvky: 3896
Images: 243
Registrován: 12.08.2013 11:44
Bydliště: HK.......není Hong Kong :D
Reputation: 108
Zasloužil bys asi medajli :) Nebo jsi admin :D

Re: Klávesnice 4x4 u Marlina

Příspěvekod celeron » 15.05.2016 01:55

Zkusil jsem ten FW přeložit pro Pro Mini. Chtělo to knihovnu pro klávesnici, tu jsem našel a překlad prošel OK. Ovšem Pro Mini nemá USB a musel bych k němu splašit USB-serial TTL převodník na programování. Možná že by opravdu bylo lepší použít Nano, ten má USB.
Nojo, ale jak je to na straně Marlina? V Config.h je definovaný Serial_Port0. RD0 a TX0 je vyvedený na AUX1 a zároveň přes odpory na převodník USB. Pokud tedy pošlu do Mega 2560 přes AUX1 kompletní G-code, mělo by ho zpracovat. Ale netuším, co se stane když pojedou data po USB a do toho začne kecat klávesnice....
Moc velká věda, asi to nechám koňovi, má větší hlavu. :)
Jirka
  • 0

celeron
 
Příspěvky: 747
Registrován: 15.03.2015 18:12
Reputation: 0


Zpět na OSTATNÍ PROBLEMATIKA HW/SW

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 41 návštevníků