Toetsenbord toetsen met Arduino Leonardo

Goedemiddag,

Wie zou voor een Arduino code wilen schrijven waarmee ik toetsenbord toetsen extern kan schakelen met drukknoppen. Ik wil dit gebruiken voor het bedienen van mijn CNC freesbank. Hiervoor heb ik een Arduino Leonardo, deze zou hier geschikt voor moeten zijn en kan ik via de USB aansluiting direkt aan de computer hangen.
Het zou gaan om de volgende toetsen die ik extern wil kunnen bedienen: PIJL LINKS, PIJL RECHTS, PIJL OMHOOG, PIJL OMLAAG, PgUp, PgDn, CTRL, SHIFT, F2, F5, F6, F7

Hopenlijk is hier iemand die hier ervaring mee heeft want mijn programmeer kennis is zeer gering.

Bart

Maak even een advertentie bij Vraag & Aanbod!

Fan van Samsung (en repareer ook TV's). :)
Arco

Special Member

Als het om een pc gaat, is het simpelste om een keyboard te slopen, de gewenste toetsen naar buiten te brengen, en aan te sluiten als 2e keyboard.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ik kwam toevallig laatst op youtube tegen dat iemand een CNC machine maakt. Deze persoon gebruikte hiervoor een keypad die je normaal voor de computer kunt gebruiken.

Dus dat is denk ik ook een veel betere/makkelijker oplossing als je in de software bepaalde toetsen aan bepaalde acties kunt linken.

https://www.youtube.com/watch?v=IPud5Dog8no

Daar is wel een library voor, en dan kan dus met een Leonardo:

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Ik heb hier niet zo'n board liggen, dus ik kan het niet testen. Op basis waarvan wil je die toetsaanslagen gaan genereren?

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Arco

Special Member

TS wil externe drukknoppen gebruiken voor sommige keyboard keys: zie startpost.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ah, ik had gemist dat hij het met andere drukknoppen wilde doen. Als je dat alleen 1:1 wilt doen zou ik ook een simpel toetsenbord verbouwen, alleen als je iets wilt wat op die manier niet kan zou ik naar een Arduino gaan kijken.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 6 januari 2021 17:24:39 schreef Arco:
Als het om een pc gaat, is het simpelste om een keyboard te slopen, de gewenste toetsen naar buiten te brengen, en aan te sluiten als 2e keyboard.

Dat is idd de makkelijkste weg maar in dit geval gaat het me vooral om het professioneel uitvoeren met hufterproof knoppen.

Op 6 januari 2021 19:00:04 schreef SparkyGSX:
Daar is wel een library voor, en dan kan dus met een Leonardo:

https://www.arduino.cc/reference/en/language/functions/usb/keyboard/

Ik heb hier niet zo'n board liggen, dus ik kan het niet testen. Op basis waarvan wil je die toetsaanslagen gaan genereren?

Ik heb het bordje al aangeschaft om de reden dat het idd met dit bord zou moeten kunnen. Ik had je hier overigens al over gemaild maar veronderstelde dat je er te druk voor zou zijn aangezien er geen reactie kwam ;)
Voor de bediening wil ik RVS SPST knoppen gebruiken.

Arco

Special Member

Met een bestaand keyboard als donor hoef je alleen de drukkers over de toetsen te zetten...
(eigenlijke controller in een keyboard is meestal maar een klein printje)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Ow ik had je blijkbaar niet helemaal goed begrepen. Dat is inderdaad wel een optie mits de print klein genoeg is om kwijt te kunnen en ik kundig genoeg ben om de draadjes weer aan die print te knopen. Toch maar eens een oud toetsenbord open maken...

include <Keyboard.h>

void setup() {
  // make pin 2 and 3 an input and turn on the
  // pullup resistor so it goes high unless
  // connected to ground:
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP); //etc voor de overige knoppen.
  Keyboard.begin();
}

void loop() {
  //if the button is pressed
  if (digitalRead(2) == LOW) {
    //Send the message
    Keyboard.write(0xDA);  //Pijltje omhoog
  }
  if (digitalRead(3) == LOW) {
    //Send the message
    Keyboard.write(0xD9); //Pijltje omlaag
  }
}

Het is niet heel erg moeilijk, met het voorbeeld hier en de keycodes van hier heb je het in 10 minuten klaar.

Arco

Special Member

Voor 4 euro heb je zelfs al een niuew keyboard als donor, voor dat geld zou ik niet met een arduino gaan rommelen... ;)
https://www.pcman.nl/gembird-kb-u-103-toetsenbord-usb-amerikaans-engel…

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Er zitten voorbeeldjes daarvoor in de Arduino IDE ,onder <bestanden>,<voorbeelden>,<Usb>

Op 6 januari 2021 20:55:52 schreef 2N3055:

include <Keyboard.h>

void setup() {
  // make pin 2 and 3 an input and turn on the
  // pullup resistor so it goes high unless
  // connected to ground:
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP); //etc voor de overige knoppen.
  Keyboard.begin();
}

void loop() {
  //if the button is pressed
  if (digitalRead(2) == LOW) {
    //Send the message
    Keyboard.write(0xDA);  //Pijltje omhoog
  }
  if (digitalRead(3) == LOW) {
    //Send the message
    Keyboard.write(0xD9); //Pijltje omlaag
  }
}

Het is niet heel erg moeilijk, met het voorbeeld hier en de keycodes van hier heb je het in 10 minuten klaar.

Super! Dit is inderdaad erg simpel. Ik had op internet zitten zoeken en daar kwam ik bij een code waar ik niks van begreep. Hier moet ik wel uitkomen.

Op 6 januari 2021 21:02:18 schreef Arco:
Voor 4 euro heb je zelfs al een niuew keyboard als donor, voor dat geld zou ik niet met een arduino gaan rommelen... ;)
https://www.pcman.nl/gembird-kb-u-103-toetsenbord-usb-amerikaans-engel…

Voor het geld niet inderdaad. Maar het voordeel van de arduino is dat wanneer het kapot gaat ik er voor 2 tientjes een nieuwe inzet en de boel weer draait.

Op 6 januari 2021 21:22:07 schreef Gij Kieken:
Er zitten voorbeeldjes daarvoor in de Arduino IDE ,onder <bestanden>,<voorbeelden>,<Usb>

Bedankt, ga ik eens naar kijken!

als je nog een oud keyboard hebt slingeren, ziet hij er vanbinnen waarschijnlijk zo uit:
https://electronics.stackexchange.com/questions/179275/soldering-on-ke…

lees de berichten eens, kwestie van zwarte eraf krabben, en solderen.

druppeltje smeltlijm en het zal niet snel afbreken.

GMT+1

Op 6 januari 2021 20:17:13 schreef BartL:
Ik had je hier overigens al over gemaild maar veronderstelde dat je er te druk voor zou zijn aangezien er geen reactie kwam ;)
Voor de bediening wil ik RVS SPST knoppen gebruiken.

Ik zag je mail gisteren of eergisteren, maar het is inderdaad een beetje gekkenhuis geweest dus ik was er nog niet aan toe gekomen.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
Arco

Special Member

Voor het geld niet inderdaad. Maar het voordeel van de arduino is dat wanneer het kapot gaat ik er voor 2 tientjes een nieuwe inzet en de boel weer draait.

Wie zegt dat dat type arduino er over 5 jaar nog is?... ;)
Maar ja, je moet het zelf weten natuurlijk.

Ik ontwikkel zelf heel veel, maar ik zou geen dagen gaan zitten kloten om iets na te maken wat al bestaat en zeker goed werkt...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Over 5 jaar zal er nog wel een Arduino bestaan met native USB support.

De ATmega32u4 CPU blijft volgens de prognose nog zeker 6 jaar leverbaar.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken

Op 6 januari 2021 22:26:48 schreef SparkyGSX:
[...]Ik zag je mail gisteren of eergisteren, maar het is inderdaad een beetje gekkenhuis geweest dus ik was er nog niet aan toe gekomen.

Geen probleem, deze vraag is nu beantwoord, de andere staan nog wel open ;-)

Misschien kan ik mijn eigen topic gelijk even misbuiken voor een andere Arduino gerelateerde vraag.
Ik heb een relaisbordje waarop ik de relais kan schakelen dmv een darlington transistor te sinken. Dit werkt goed maar wanneer ik het met de Arduino probeer sinkt hij altijd, ook wanneer de Output HIGH is. Het is slechts 8mA dus dat zou het probleem niet kunnen zijn (20mA is mogelijk met de Uno in dit geval), maar zelfs al ik hier een weerstand tussen zet waarna het maar 1,5mA wordt blijft het probleem. Iemand enig idee wat hier fout kan gaan? Ik ben zo langzaamerhand door mijn opties heen en krijg er een beetje de pest overin dat zoiets simpels niet simpel blijkt te zijn.

weet je heel zeker dat je moet sinken?
staat je pinmode op output?

GMT+1
Arco

Special Member

Als je voor aansturing van een Darlington 8mA nodig hebt klopt er al iets niet. Darlingtons hebben een Hfe van 1000 tot 60000+

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 8 januari 2021 19:17:30 schreef Progger:
weet je heel zeker dat je moet sinken?
staat je pinmode op output?

Ja, als ik gewoon met een los kabeltje de transistor naar de GND verbind dan schakelt het relais. Alleen dit doet hij via de Arduino dus ongeacht of the output HIGH of LOW is.
Ja de pinmode staat op output.

Op 8 januari 2021 19:20:47 schreef Arco:
Als je voor aansturing van een Darlington 8mA nodig hebt klopt er al iets niet. Darlingtons hebben een Hfe van 1000 tot 60000+

Ok, wat ik doe is gewoon de multimeter tussen de darlington en de 0V zetten en dan meet ik 8mA wanneer hij schakelt. Eerlijk gezegd is dit voor mij allemaal nieuwe materie dus of het klopt...geen idee. Ik weet wel dat er 8 relais' op het bordje zitten die allemaal 8mA nodig hebben om te schakelen.

Schema en of link van het relais bordje zegt veel meer.

Op 8 januari 2021 19:42:57 schreef Gij Kieken:
Schema en of link van het relais bordje zegt veel meer.

Zou ik je dolgraag willen geven ware het niet dat ik er helemaal geen gegevens van heb. Het printje komt uit een oude schakelkast. Verdere gegevens heb ik van de componenten zelf afgelezen en door proberen ondervonden.