Joystick in plaats van handwheel

Nederlandse CNC controller op basis van de usb poort of Ethernet.

Moderator: Moderators

Harrycnc
Berichten: 10
Lid geworden op: 27 mar 2015 12:47

Re: Joystick in plaats van handwheel

Bericht door Harrycnc »

Als dit een hulpje kan zijn, schrappen wat niet nodig is.
Werkt met Ardijno Pro micro.


/* Voor Azerty keyboard open configuratiescherm / Land en taal / Toetsenborden en talen /
Toetsenborden wijzigen / Geavanceerde toetsinstellingen / Toetsencombinatie wijzigen.
Naar Engels(QWERTY) set Ctrl+0
Naar Nederlands Belgie(AZERTY) set Ctrl+1
Voor QWERTY Keyboard
Naar Engels(QWERTY) uitschakelen
Naar Nederlands Belgie(AZERTY) uitschakelen
*/
#include <Keyboard.h>
#define numberOfKeys 12
#define Knop0 9 // Set a button to any pin
#define Knop1 2 // Set a button to any pin
#define Knop2 6 // Set a button to any pin
#define Knop3 14 // Set a button to any pin
#define Knop4 3 // Set a button to any pin
#define Knop5 7 // Set a button to any pin
#define Knop6 15 // Set a button to any pin
#define Knop7 4 // Set a button to any pin
#define Knop8 8 // Set a button to any pin
#define Knop9 16 // Set a button to any pin
#define Ster 5 // Set a button to any pin
#define Hekje 10 // Set a button to any pin

bool knop = false;
int Key[] = {Knop0, Knop1, Knop2, Knop3, Knop4, Knop5, Knop6, Knop7, Knop8, Knop9, Ster, Hekje};
bool LastKey[] = {false, false, false, false, false, false, false, false, false, false, false, false};


void setup() {

for(int i=0; i < numberOfKeys; i++){
pinMode(Key, INPUT_PULLUP);
digitalWrite(Key, HIGH);
}

//Serial.begin(9600);
Keyboard.begin();
}

void loop() {
for(int i = 0; i < numberOfKeys; i++){
knop = digitalRead(Key);
if(knop^LastKey){
// Pin has changed
//Keyboard.write('1');
//Keyboard.releaseAll();

if(LastKey){
// Key was pressed
KeyPressed(Key);
}
else{
// Key was released
KeyReleased(Key);

}
LastKey=knop;
}
}
}


void KeyPressed(int key){
switch(key){
case Knop0: Keyboard.press(0xd5); //a end
break;
case Knop1: Keyboard.press(0xd8); //x left
break;
case Knop2: Keyboard.press(0xda); //y up
break;
case Knop3: Keyboard.press(0xd7); //x right
break;
case Knop4: Keyboard.press(0x81); //shift
break;
case Knop5: Keyboard.press(0xd9); //y down
break;
case Knop6: Keyboard.press(0xd3); //z page up
break;
case Knop7: Keyboard.press(0x80); //Ctrl
break;
case Knop8: Keyboard.press(0xd2); //a home
break;
case Knop9: Keyboard.press(0xd6); //y page down
break;
case Ster: // set keyboard QWERTY
Keyboard.press(0x80); // send 'Ctrl
Keyboard.print("0"); // 0
Keyboard.releaseAll();
delay(100);
Keyboard.press(0x80); // send 'Ctrl F6' open mdi
Keyboard.press(0xC7); // 'F6'
delay(50);
Keyboard.releaseAll();
Keyboard.println("f30"); //Start probe move, slow
delay(50);
Keyboard.press(0xB0); //'enter'
Keyboard.releaseAll();
Keyboard.println("g38.2 z-200");// z down
delay(50);
Keyboard.press(0xB0); //'enter'
Keyboard.releaseAll();
//delay(2000);
break;
case Hekje: Keyboard.press(0xB1); // stop z 'Esc'
delay(20);
Keyboard.releaseAll();
delay(20);
Keyboard.println("G92 z43");//Set position, the measuring device is 43mm in height, adapt for your measuring device
delay(20);
Keyboard.press(0xB0);// 'Enter'
Keyboard.releaseAll();
Keyboard.println("G91");//incremental distance mode
delay(20);
Keyboard.press(0xB0);// 'Enter'
Keyboard.releaseAll();
Keyboard.println("G0 z5");//move 5 mm above measuring device
delay(50);
Keyboard.press(0xB0);// 'Enter'
Keyboard.releaseAll();
Keyboard.println("G90");//absolute distance mode
delay(50);
Keyboard.press(0xB0);
Keyboard.releaseAll();
Keyboard.press(0x80); // send 'ctrl F6' close mdi
Keyboard.press(0xC7); // F6
Keyboard.releaseAll();
// set keyboard AZERTY
Keyboard.press(0x80); // send 'Ctrl
Keyboard.println("1"); // 1
Keyboard.releaseAll();
delay(10000);
break;
}
}

void KeyReleased(int key){
switch(key){

case Knop0: Keyboard.release(0xd5); //a end
break;
case Knop1: Keyboard.release(0xd8); //x left
break;
case Knop2: Keyboard.release(0xda); //y up
break;
case Knop3: Keyboard.release(0xd7); //x right
break;
case Knop4: Keyboard.release(0x81); //shift
break;
case Knop5: Keyboard.release(0xd9); //down
break;
case Knop6: Keyboard.release(0xd3); //z page up
break;
case Knop7: Keyboard.release(0x80); //Ctrl
break;
case Knop8: Keyboard.release(0xd2); //a home
break;
case Knop9: Keyboard.release(0xd6); //z page down
break;
case Ster:
break;
case Hekje:
break;
}
}
Gebruikersavatar
Kars-cnc
Donateur
Berichten: 1750
Lid geworden op: 07 okt 2015 05:33
Locatie: Heerde (Gelderland)

Re: Joystick in plaats van handwheel

Bericht door Kars-cnc »

Ziet er wel interessant uit maar wat doet deze code nu precies?
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Joystick in plaats van handwheel

Bericht door Arie Kabaalstra »

Kars-cnc schreef: 06 jan 2021 15:40 Ziet er wel interessant uit maar wat doet deze code nu precies?
Goede vraag.. inderdaad.. ik heb dat in andere topics over programmeren ook al gemeld.. DOCUMENTEER je code.. zet er comments in.. anders weet je niets..
Harrycnc
Berichten: 10
Lid geworden op: 27 mar 2015 12:47

Re: Joystick in plaats van handwheel

Bericht door Harrycnc »

Zet keyboard functies om in drukknoppen inclusief z meting via MDI.
Gebruikersavatar
Kars-cnc
Donateur
Berichten: 1750
Lid geworden op: 07 okt 2015 05:33
Locatie: Heerde (Gelderland)

Re: Joystick in plaats van handwheel

Bericht door Kars-cnc »

Sluit je de Arduino dan op de PC aan als was het een 2e toetsenbord?
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Joystick in plaats van handwheel

Bericht door Arie Kabaalstra »

Daar lijkt het wel op.. Ik weet, uit experimentjes dat dat kan.. je kunt van een Arduino (één die je als USB Toetsenbord kan gebruiken) een "Programmeerbaar toetsenbord" maken door em vol te plempen met de gevraagde toetsenbord commando's en er fysiek een aantal knoppen aan te knopen.. je kunt zelfs toetsen uitsturen uitgaande van signalen die van de ingangen van je Arduino komen..
bartL
Berichten: 1154
Lid geworden op: 15 jan 2008 07:14
Locatie: Zuid hollandsche eilanden

Re: Joystick in plaats van handwheel

Bericht door bartL »

Ik ben hierin inmiddels wat verder. Een Arduino Leonardo is geschikt om rechtstreeks als USB toetsenbord geprogrammeerd te worden. De code is niet zo lastig te schrijven. De onderdelen heb ik inmiddels bijna allemaal binnen dus ik hoop morgen eea te kunnen testen. Als het werkt kan ik de hardware er omheen ontwerpen (inmiddels al bijna klaar maar ik wacht even met bestellen totdat ik zekerheid heb).
Wellicht kan ik dan de muis op dezelfde manier vervangen, zit ik tenminste niet weer met zo'n losse muis te klooien.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Joystick in plaats van handwheel

Bericht door Arie Kabaalstra »

als je persé een muis achtig apparaat nodig hebt, kijk dan eens voor een los touch-pad..

22170

Ik heb op m'n Beagle ook zo'n ding zitten.. moeilijk te zien op de foto, maar rechtsonder zie je een donkergrijs rechthoekje, met een lichtgrijs driehoekje in de rechterbovenhoek, met daaronder 2 knopjes..
'k heb de touchpad uit zijn behuizingkje gewipt, 2 toetsjes eraan gesoldeerd, parallel aan de oorspronkelijke schakelaartjes, en het geheel in een Nylon "chassis" gemonteerd.
Dit, omdat mijn Freesbank nog altijd geen Mepscherm heeft.. en zo'n "streeltegeltje" toch wel verdomde handig is om meldingen van WIndhoos bij het opstarten weg te klikken, bestandsnaampjes te selecteren voor het laden, en om NC bestanden te bewerken.

kosten van zo'n ding zijn ook de wereld niet..
bartL
Berichten: 1154
Lid geworden op: 15 jan 2008 07:14
Locatie: Zuid hollandsche eilanden

Re: Joystick in plaats van handwheel

Bericht door bartL »

Daar had ik idd al eens naar zitten kijken bij jouw machine.(foto heb je al eens eerder gepost)
Op zich ook een mooie oplossing. Ik ga er eens mee spelen. Als het me lukt ga ik eens van de joysticks voor de assen eens als muis gebruiken en kijken hoe dat reageert. Op zich ben ik altijd wel meer van de knoppen en handels als van de "touch".
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Joystick in plaats van handwheel

Bericht door Arie Kabaalstra »

Ik kan met dat Touchpad ook het On Screen Jog pad gebruiken.. alleen.. mis ik de "Tactile Feedback"

Zie het als "vrijen met de vrouw die al jaren lang je partner is".. zelfs in het stikkedonker weet je op de tast al haar gevoelige plekjes te vinden :oops:

Naast het Touchpad zit een "cluster" van 9 toetsen.. Middelste kolom, boven en onder zijn X+ en X-, Middelste rij, links en rechts, Y- en Y+, Links onder en rechtsboven zijn Z-en Z+, en Linksboven en Rechtsonder zijn A+ en A-, de toets in het midden is CTRL voor 50 % Jogspeed.. als ik haast heb.. dan gebruik ik de Shift op het QWERTY toetsenbord..

de hele zwik zit in een Pokey's geprogrammeer.. da's iets eenvoudiger dan het op een Arduino te frituren (arduino's bestonden toen nog niet..of.. volgens WikiPedia kwamen ze uit in 2005.. en ik heb mijn Pokeys via DamenCNC gekocht, omdat ik daar toen werkte, en we daar ook wel bezig waren met die dingen.. )
Voordeel van een Arduino is dat je er meer mee kan dan met een Pokeys.. bijvoorbeeld een heel andere functie van een toets als je er een Ctrl, Alt of Shift bij indrukt., of.. je kunt zelfs zelf een "modifier toets" maken die je op een bepaalde input zet.. en zodra je die gebruikt.. kun je daar weer een andere functie mee aan een knop hangen..
bartL
Berichten: 1154
Lid geworden op: 15 jan 2008 07:14
Locatie: Zuid hollandsche eilanden

Re: Joystick in plaats van handwheel

Bericht door bartL »

Arie Kabaalstra schreef: 06 jan 2021 23:15 Zie het als "vrijen met de vrouw die al jaren lang je partner is".. zelfs in het stikkedonker weet je op de tast al haar gevoelige plekjes te vinden :oops:
Ik denk niet dat mijn vrouw het helemaal gaat waarderen als ik haar met de freesbank ga vergelijken :lol: maar ik snap de strekking.

Ik heb ooit eens iets met een pokeys gedaan maar het staat me niet bij dat dat makkelijker is dan de arduino. Maargoed toen zat ik nog minder in de materie.
Combinaties van knoppen is idd mogelijk maar of dat de eenvoud van de besturing ten goede komt vraag ik me af.
Gebruikersavatar
Arie Kabaalstra
Donateur
Berichten: 13373
Lid geworden op: 07 feb 2007 18:37
Locatie: Bakhuuz'n
Contacteer:

Re: Joystick in plaats van handwheel

Bericht door Arie Kabaalstra »

Sommige CNC machines hebben geen volledig Qwerty klavier, maar.. op het toetsenbordje dat je nodig hebt voor het schrijven van G-Codes, zitten dan toetsen met een dubbele functie.. zodat je de andere letters er ook bij hebt..om maar een voorbeeldje te noemen.. 't is een beetje als SMS-en met een Nokia 3310.. of hebben we dat inmiddels uit ons collectieve geheugen verbannen?
bartL
Berichten: 1154
Lid geworden op: 15 jan 2008 07:14
Locatie: Zuid hollandsche eilanden

Re: Joystick in plaats van handwheel

Bericht door bartL »

Arie Kabaalstra schreef: 07 jan 2021 12:53 't is een beetje als SMS-en met een Nokia 3310.. of hebben we dat inmiddels uit ons collectieve geheugen verbannen?
Eerlijk gezegd verlang ik daar nog weleens naar terug 8)

Met de Arduino is het inderdaad mogelijk met knoppencombinaties andere functies aan te roepen. Het voordeel is dat hij toch aan de pc hangt en ik dus onsite kan wijzigen mocht dat nodig zijn. Maar uiteindelijk is het enkel voor bedieningsgemak, het gewone toetsenbord komt ook in het bedieningspaneel.
bartL
Berichten: 1154
Lid geworden op: 15 jan 2008 07:14
Locatie: Zuid hollandsche eilanden

Re: Joystick in plaats van handwheel

Bericht door bartL »

Ik heb de knoppen werkend met de Arduino. Heel eenvoudig.
Maar nu hoop ik eigenlijk op jullie inbreng qua indeling van het bedieningspaneel zodat ik niks vergeet.
Ik heb nu het volgende erop zitten:

Naast het scherm
- schakelaar voor inschakelen hoofdstroom voor de drives.
- knop voor aanzetten PC (deze blijft aan bij het uitschakelen van de drives)
- USB input
- E-stop

onder het toetsenbord
- joystick voor joggen X en Y.
- joystick voor joggen Z en A.
- selectieschakelaar jogspeed.
- 4 knoppen voor selectie jogsteps.

Naast het toetsenbord
- knop program start.
- knop program pauze.

Missen jullie nog iets wat veel gebruikt wordt? En zelf dacht ik nog aan een E-stop override, voor het geval de homesensor om wat voor reden dan ook gemist wordt en de E-stop wordt geactiveerd. Of is hiervoor een andere manier om de machine weer "los" te krijgen van de eindschakelaar?

Alvast bedankt voor de gewaardeerde input!
Plaats reactie