Middels PIC ASCII tekens via USB naar PC sturen

buckfast_beekeeper

Golden Member

Met halve info komt er zelden de correcte hulp.

Het is heel zeldzaam dat er net iemand hetzelfde gaat doen of nodig heeft als jezelf. En dan nog kan het kwaad dat iemand iets analoog in elkaar prutst. Zo lang je het niet commercieel wil gaan vermarkten is er toch geen been gebroken.

Van Lambiek wordt goede geuze gemaakt.

Ik wil een applicatie maken waarbij ipv de toetsen op reguliere plekken, deze totaal anders komen te ziten, dan wel dat bepaalde handelingen op 1 toets een reeks aan andere "toetsenaanslagen" simuleert.

http://www.pcs-electronics.com/pokeys55t-board-p-1512.html
http://www.pcs-electronics.com/images/products/accesories/instruments/PoKeys_s.jpg
dit ding kun je gewoon een berg schakelaars aan hangen, iedere klem is kan van alles doen. (toets of macro)
iedere macro kan 256 karakters bevatten, dus kun je beide eisen perfect met dit ding maken.

(dit laatste kun je natuurlijk ook aan de PC zijde oplossen met een macro programma)

GMT+1

Ik dacht dat ik wel redelijk duidelijk was zo. :-)

Wat ik maak is niet relevant.
Dit is precies wat mij stoort in de reacties. Echt... Al zal ik een interactieve Peniskoker maken. Dat is niet het punt. ;-)
Hoe meer ik prijs geef, destemeer alternatieve plannen er komen die de focus wegnemen van het werkelijke probleem. Dat is me al veel te vaak gebeurd op CO.
En echt... Ik begrijp de beste bedoelingen in de reacties, maar de achtergrond doet even niet ter zake.

Ik heb een reeks aan codes (ca 40), die ik omzet naar de 26 letters, 10 cijfers en een spatie.
Deze codes komen uit de PIC rollen.

Met mijn lekenverstand dacht ik dat alle communicatie via ASCII codes verliep.
Dat zet ik overboord. Het mag vanalles zijn.

Met hetzelfde lekenverstand denk ik dat er gangbare IC's zijn die zich gedragen als een HID, waaraan een aantal toetsen kunnen hangen.
Daar was ik naar op zoek.

Omdat er ook PIC's zijn die USB protocollen bevatten, verwachtte ik dat deze optie ook standaard bestond.

@Progger, dat is wellicht wat ik bedoel, hoewel het aantal verbindingen wel heel groot is. Maar dat terzijde.
Ik ga me daar even op inlezen. :-)

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Sorry dat het zo overkwam maar ik wilde u pushen om iets meer specifieker te zijn.

Op 14 januari 2017 22:34:50 schreef Fantomaz:
Hoe meer ik prijs geef, destemeer alternatieve plannen er komen die de focus wegnemen van het werkelijke probleem.

Dat komt omdat je het probleem niet juist uitgelegd krijgt en geloof mij, soms is het heel moeilijk om uit te leggen wat jij denkt en wilt.
Vandaar die tientallen glazen bollen die op CO rondzweven. ;)

LDmicro user.
Arco

Special Member

Omdat er ook PIC's zijn die USB protocollen bevatten

Ze bevatten alleen de USB hardware en registers, de afhandeling moet je altijd zelf doen in firmware.
Op de site van Jan Axelson is veel info te vinden: http://janaxelson.com/hidpage.htm

[Bericht gewijzigd door Arco op zondag 15 januari 2017 12:05:46 (20%)

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

Dank jullie, zover.

Ik heb ook wat rondgeneust op de site van Protonbasic.co.uk en daar toch wel wat kunnen vinden.
Er schijnt zelfs een HID example .BAS bestand te zijn die dit volledig behartigd.
Ik ben nu eerst de update voor PDS aan het doen en ga dan even kijken of het wat is. :-)

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Een Teensy doet volgens mij aardig wat jij wilt...

Ja... en toen ?

Op 16 januari 2017 09:53:32 schreef gradtje:
Een Teensy doet volgens mij aardig wat jij wilt...

Wat is een Teensy, gradje?

[Edit]
Inmiddels gevonden.
Ik zou daarmee uit de voeten kunnen, maar dan moet het dingetje wel geprogrammeerd moeten worden.

Deze optie houd ik zeker open!

[Bericht gewijzigd door Fantomaz op maandag 16 januari 2017 22:44:02 (31%)

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Je kunt dat vanuit de Arduino omgeving doen. Ik weet niet precies wat je van plan was, maar je zou zo een pin kunnen afvragen en wanneer deze bv laag wordt een reeks tekens versturen.

Het mooie is natuurlijk dat je HID (toetsenbord) device gewoon basi is, je kunt er simpel naar printen...

Met een klein beetje knip en plakwerk kom je een heel eind volgens mij.
Voor de arduino zijn legio voorbeelden te vinden.

Ja... en toen ?

De opzet is om met minder toetsen (en met combinaties of patroon van aanslaan van toetsen) het hele alfabet te kunnen projecteren op mijn beeldscherm.

De toetscombinaties etc. is al doorgedacht en in PICbasic geprogrammeerd. Op een 2x20 display kan ik het wel krijgen.
Maar ik wil het kunnen projecteren op mijn monitor door een alternatief voor een toetsenbord.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

kun je dat niet met software oplossen?

bijvoorbeeld een auto hotkey script?
https://autohotkey.com/

kwestie van een bestaand keyboard modificeren en aan iedere knop een acite hangen.

GMT+1

Op 17 januari 2017 22:33:48 schreef Progger:
kun je dat niet met software oplossen?

bijvoorbeeld een auto hotkey script?
https://autohotkey.com/

kwestie van een bestaand keyboard modificeren en aan iedere knop een acite hangen.

Nee, dat is niet een geschikte oplossing, tenzij er geen alternatieven zijn.
Die tweeny komt het meest in de buurt, voor zover ik het de PIC niet zelf kan laten doen.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Op 17 januari 2017 22:27:53 schreef Fantomaz:
De opzet is om met minder toetsen (en met combinaties of patroon van aanslaan van toetsen) het hele alfabet te kunnen projecteren op mijn beeldscherm.

Dat gaat zomaar niet, om iets op je PCscherm te krijgen moet je eerst een programma opstarten, een tekstverwerker of één of ander (zelfgemaakt) programma.
Tenzij je in dos gaat werken, maar dat betwijfel ik omdat je over usb schrijft en dan gaan mijn vermoedens uit naar een toetsenbord voor gehandicapten maar dat is een gok als een ander.

En nu we weer terug aan het begin van dit topic zijn kun je misschien ook kiezen om uw ascii codes serieel/usb naar de pc te sturen.

LDmicro user.

Dank voor je Antwoord, MGP.
Natuurlijk zal ik eerst een programma starten waarin getypt kan worden.
Je zit er overigens niet ver naast.
De gebruiker is beperkt en het is de opzet om met een aantal combinatie toetsen het hele alfabet te kunnen invoeren, naast de cijfers.

Ik had eerst ook gedacht aan serieel (waarschijnlijk komen daar de ASCII aspiraties vandaan)
Maar omdat niet alle apparaten tegenwoordig serieel hebben, én USB meer common is, wil ik het graag in USB uitvoeren.

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Koop dan zo'n RS232 naar usb kabel, en je kunt gewoon uw pic programma behouden.

Je kunt er ook kopen met TTL rs232 naar USB dan heb je geen MAX232 nodig.

LDmicro user.

Op 14 januari 2017 16:03:17 schreef Fantomaz:

Ik wil echter nooit teveel van mijn projecten uit de doeken doen en wel om 2 redenen...
1) men komt vaak (met de beste bedoelingen) op de proppen met totaal andere oplossingen voor het probleem.
2) er zijn elmenten die "geïnspireerd" worden door mijn ideeen en deels daarmee aan de haal gaan.

Als ik het goed begrijp is een "macro toetsenbord" wat u zoekt. Deze bestaan al, en er zijn ook al vele voorbeelden van (delen ervan) die u kunt vinden op het internet. (misschien bedoelt u dit toch niet)

Zoekt u op hid keyboard in combinatie met uw gewenste controller, en gewenste programmertaal. Dan is het usb toetsenbord gedeelte in ieder geval rond, er is al ontzettend veel code hiervoor te vinden.

Arco

Special Member

het is de opzet om met een aantal combinatie toetsen het hele alfabet te kunnen invoeren, naast de cijfers.

Dat bestaat al: een telefoon keypad... (alleen controllertje met wat firmware en USB eraan en klaar... ;) )

https://sc02.alicdn.com/kf/HTB1SbjrMVXXXXcfXpXXq6xXFXXXL/plastic-phone-keypad-12-button-pin-pad.jpg_350x350.jpg

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

Op 19 januari 2017 19:26:37 schreef MGP:
Koop dan zo'n RS232 naar usb kabel, en je kunt gewoon uw pic programma behouden.

Dat wordt te lomp.
Dan zou een PIC icm de (Arduino?) Teensy een meer praktische oplossing zijn.

Op 19 januari 2017 19:48:49 schreef Arco:
Dat bestaat al: een telefoon keypad... (alleen controllertje met wat firmware en USB eraan en klaar... ;) )

Dat heb ik ook overwogen Arco. Ofwel een "ordinair" USB toetsenbord strippen, zoals hier eerder al werd geopperd.
In geval van het numerieke toetsenbord loop ik ertegenaan dat hij uitsluitend die 12 karakters zend. En niet het Alfabet.

Voor de duidelijkheid:
De PIC reguleert welke toetsencombinatie welke letter weergeeft.
Daarnaast zou het mooi zijn dat deze PIC meteen ook deze letter kan weergeven op het beeld.
Dat nummerieke ding zou als input naar de PIC niet eens zo'n gek idee zijn. Maar daarover is genoeg te vinden in PICbasic.
De Crux is dat het de aangeboden of aangemaakte code als letter wordt weergegeven.

Met een Teensy zou ik een 8 bits PIC uitgang kunnen koppelen aan de ingang van de Teensy, die dan in Arduino geprogrammeerd moet worden dat bv aangeboden 00110111 de letter "h" moet geven als "HID toetsenbord".

Op 19 januari 2017 19:41:52 schreef w1z13:

Zoekt u op hid keyboard in combinatie met uw gewenste controller, en gewenste programmertaal. Dan is het usb toetsenbord gedeelte in ieder geval rond, er is al ontzettend veel code hiervoor te vinden.

Ik zal er nog eens induiken.
Zo jammer dat zoeken op "PIC" heel veel plaatjes opleverd en zoekend op PICbasic, ik naar de andere PICbasic Variant van Mellabs wordt geleid. :-(

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Op 19 januari 2017 21:42:39 schreef Fantomaz:

[...]

Ik zal er nog eens induiken.
Zo jammer dat zoeken op "PIC" heel veel plaatjes opleverd en zoekend op PICbasic, ik naar de andere PICbasic Variant van Mellabs wordt geleid. :-(

Ja ik zie nu dat het voor de PIC toch wat minder wijdverbreid is dan het in eerste instantie lijkt. Misschien is het toch een betere optie om een andere controller te kiezen, want voor zover ik kan lezen gaat het je never-nooit lukken om het complete usb protocol op uw controller te programmeren. Tenzij u er een veelvoud van de tijd die het programmeren van het toetsenbord kostte voor over heeft, lijkt het gebruik van een library handiger. Een snelle google leverde nog dit: http://www.protonbasic.co.uk/showthread.php/76615-PIC-sending-ASCII-keyboard-characters-to-PC-by-USB?highlight=hid+keyboard op. Maar ik vermoed dat dat wel eens uw eigen topic kan zijn, gezien de leeftijd ervan, volgens de posters aldaar zou daar een oplossing staan. Indien dat het geval is dan heeft u hier: https://docs.mbed.com/docs/ble-hid/en/latest/api/md_doc_HID.html nog wel wat aan denk ik.

Arco

Special Member

Je moet de toetsaanslagen ook wel verwerken natuurlijk.
Bijv. de "2". 1x drukken = 2, 2x drukken = A, 3x drukken = B, 4x drukken = C...

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

als je enkel de letter H wil zenden op basis van een ingang:

c code:

#include "DigiKeyboard.h"  

int led = 1;  // Change to pin 1 for MODEL A
int btn = 0;
int olds = 0;

void setup() {
  pinMode(led, OUTPUT);
  pinMode(btn, INPUT);
  DigiKeyboard.update();
}

void loop() {
  
  int s = digitalRead(btn);
  digitalWrite(led, s);
  if (s && !olds)
  {
    DigiKeyboard.sendKeyStroke(KEY_H);
  }
  olds=s;
  
}

hier heb je een digispark voor nodig, die je gewoon met arduino programmeert.

http://www.ebay.com/itm/Digispark-Kickstarter-ATTINY85-Arduino-General…

omdat dit ding geen 8 digitale ingangen heeft, zul je via I2C moeten werken, maar dit is alles om een toets als keyboard naar de PC te sturen.

GMT+1

Op 19 januari 2017 21:42:39 schreef Fantomaz:
Dat wordt te lomp.
Dan zou een PIC icm de (Arduino?) Teensy een meer praktische oplossing zijn.

???? ik viel bijna van mijne stoel toen ik dit las deze morgen.
Ik denk dat je nog wat onderzoek moet doen, hoe één en ander in elkaar zit, en dan beslissen wat je gaat gebruiken.

LDmicro user.
Lambiek

Special Member

Op 19 januari 2017 21:42:39 schreef Fantomaz:
Voor de duidelijkheid:
De PIC reguleert welke toetsencombinatie welke letter weergeeft.
Daarnaast zou het mooi zijn dat deze PIC meteen ook deze letter kan weergeven op het beeld.

Wat jij wil moet gewoon gaan. Ik doe het ook, maar dan andersom. Ik type het op een zelf gemaakt toetsenboard en stuur het naar de pic en zet het op een display.

Ik heb het toetsenboard gemaakt in Profilab, ik had je al een link gegeven, maar daar is geen reactie op gekomen. De communicatie doe ik met een USB naar serieel kabel, en een seriële interface. Werkt bij mij prima.

Hier heb je een voorbeeld:

VOORBEELD FANTOMAZ.docx

Als je haar maar goed zit, GROETEN LAMBIEK.

@W1z13
Een andere controler zie ik niet zitten omdat ik al zo'n end onderweg ben met PICs.
Lees: met mijn boerenverstand kunnen leren hoe tevwerken met PIC basic.
Mocht het nou niet lukken om de USB verbinding tussen PIC en PC te realiseren, zal ik een tussenstapje willen wagen via dat Teensy printje.
Daarmee even het bruggetje geslagen naar:

Op 20 januari 2017 07:43:34 schreef MGP:

???? ik viel bijna van mijne stoel toen ik dit las deze morgen.
Ik denk dat je nog wat onderzoek moet doen, hoe één en ander in elkaar zit, en dan beslissen wat je gaat gebruiken.

Mijn excuus als ik je bruskeerde, MGP...
Ik weet niet welk facet van mijn post je nu dit gevoel gaf.
Dus daar graag een vervolgreactie op...

Kijk...
Even voor iedereen de begrijpelijke verwarring moet laten bezinken:
Hoe de letters en cijfers tot stand komen is niet relevant.
Het gaat er om dat ik cijfers, letters en twee of drie controlefunkties kan versturen naar een PC middels USB.
Het genereren van die karakters en op welk moment ze verstuurd worden, heb ik allemaal al geprogrammeerd. Nagenoeg... want ik zal wat moeten debuggen en de boel moeten aanpassen aan mogelijk een andere PIC. Daarmee Arco ook beantwoord, denk ik.

Van wat ik van die Teensy begreep, kan ik op zijn ingangen logische 5v's aanbieden.
En als die Teensy te programmeren valt zodat hij een aangeboden byte weet om te zetten naar een corresponderend karakter, die hij in zijn funktie als "toetsenbord" naar de PC stuurt, ben ik er ook.
Natuurlijk is het charmanter om alles middels een PIC te doen. Maar als dat niet lukt, is een Teensy een goed alternatief. Of zie ik het nu te rooskleurig?

@Lambiek, ik heb je post wellicht gemist.
Ga ik wat mee doen.

@Progger.
Jouw stukje code bevat ook een deel verwerking van de aangeslagen toets?
Welke programmeertaal is dat trouwens?

Stel dat ik heel basaal zou stellen IF a=1 then, waarna er een lette "a" geprojecteerd wordt?
Hoe zou dat er dan uit zien?

Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)

Op 20 januari 2017 23:30:23 schreef Fantomaz:
Ik weet niet welk facet van mijn post je nu dit gevoel gaf.
Dus daar graag een vervolgreactie op...

Als je zegt dat je met een RS232/usb kabeltje een lompe uitvoering gaat krijgen en beter af zijt met er een Teensy ertussen dan was ik zeer verbaasd.
Maar het was vroeg in de morgen en zat nog op het punt van mijn stoel vandaar dat ik er bijna naast zat ;)
Leave it..

Ik heb nu ook eens de rest van het topic gelezen en ik vermoed ook dat je eigenlijk nog aan het begin van uw pic programma zit en je voorlopig niet weet welke richting je moet inslaan en dat is geen verwijt.
De twijfelende mogelijkheid van over te stappen naar een Teensy doet het vermoeden versterken.

Ook het feit dat je schrijft van 40 toetsen in te lezen met een pic, daar stel ik mij ook vragen bij, welke pic gebruik je hiervoor en hoe lees je die in?

Als je iets vraagt op een forum wees meer open ivm met de praktische kant, niemand moet weten voor wie, enkel hoe en wat je zou willen maken of dat nu voor een fictief of een bestaand iemand is speelt voor ons geen rol.

Er is geen enkele reden om u te laten beinvloeden door de gegeven antwoorden, kies wat je zelf ziet zitten.

30j geleden heb ik eens een programma gemaakt voor iemand in C en dos, het bestond uit 2 contacten en 2 blaaspijpjes direkt aangesloten op de ingang van de RS232 pinnen die een interrupt maakten in dos.

Dat werkte hier prima maar de diegene waarvoor ik het maakte wilde absoluut niet in contact treden om de bugs eruit te halen in de praktijk. Daar heb ik nooit moeilijk over gedaan en hem het kleinschalig project overgedragen inclusief de Turbo C source en schema.
Die was op dat moment heel tevreden en ik heb daar nooit iets meer van gehoord en toch gaf dat veel voldoening, ik had een doel om iets te maken en dat het nog werkte ook.

LDmicro user.