Difference: RaspiElfKeypad (2 vs. 3)

Revision 32018-05-13 - PeterSchmid

Line: 1 to 1
 
META TOPICPARENT name="WebHome"
%DASHBOARD{ section="banner"
Line: 7 to 7
  titlestyle="color:#F00000;" }%
Intro
Added:
>
>
The Elf Membership Card has 8 data switches, 3 mode switches, and a IN push button on its front panel. The data is displayed on 8 LEDs (binary). It is a error prone but educational task to "switch in" in (load) the program.
 
Added:
>
>
I have an old external keypad because my old notebook did not have a numeric keypad. The keys looks similar to those old Elf hex keypads, why not use this spare keypad for the Elf Membership Card? It is a Cherry keyboard and I have other Cherry keyboard with the same key caps.
 
Line: 21 to 23
 

Software for the Raspberry Pi

Added:
>
>
No special software needed. Keyboard drivers are already built in.
 
Added:
>
>
 
Changed:
<
<

How to get and build the RaspiElf Keypad Software

>
>
Mapping scancodes to keycodes is universal and not specific to Linux console or Xorg, which means that changes to this mapping will be effective in both.
 
Deleted:
<
<
Get the source from the GIT repository (if you have not installed GIT yet, then install it with sudo apt-get install git), type only the bold text after the $ sign:
 

Changed:
<
<
pi@cosmac:~/elf $ git clone https://github.com/spyren/RaspiElf Cloning into 'RaspiElf'... remote: Counting objects: 68, done. remote: Compressing objects: 100% (37/37), done. remote: Total 68 (delta 32), reused 62 (delta 29), pack-reused 0 Unpacking objects: 100% (68/68), done. Checking connectivity... done. pi@cosmac:~/elf $
>
>
pi@cosmac:~/elf/RaspiElf/tools $ udevadm info /dev/input/by-path/*-usb-*-kbd P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:046A:0014.0002/input/input1/event0 N: input/event0 S: input/by-id/usb-046a_0014-event-kbd S: input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-kbd E: BACKSPACE=guess E: DEVLINKS=/dev/input/by-id/usb-046a_0014-event-kbd /dev/input/by-path/platform-3f980000.usb-usb-0:1.2:1.0-event-kbd E: DEVNAME=/dev/input/event0 E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:046A:0014.0002/input/input1/event0 E: ID_BUS=usb E: ID_INPUT=1 E: ID_INPUT_KEY=1 E: ID_INPUT_KEYBOARD=1 E: ID_MODEL=0014 E: ID_MODEL_ENC=0014 E: ID_MODEL_ID=0014 E: ID_PATH=platform-3f980000.usb-usb-0:1.2:1.0 E: ID_PATH_TAG=platform-3f980000_usb-usb-0_1_2_1_0 E: ID_REVISION=0100 E: ID_SERIAL=046a_0014 E: ID_TYPE=hid E: ID_USB_DRIVER=usbhid E: ID_USB_INTERFACES=:030101: E: ID_USB_INTERFACE_NUM=00 E: ID_VENDOR=046a E: ID_VENDOR_ENC=046a E: ID_VENDOR_ID=046a E: MAJOR=13 E: MINOR=64 E: SUBSYSTEM=input E: USEC_INITIALIZED=69042133468 E: XKBLAYOUT=gb E: XKBMODEL=pc105

evdev:input:bvpe-

evdev:input:b*v046ap0014* # ML4700
 KEYBOARD_KEY_70039=leftalt  # bind numlock to A
 KEYBOARD_KEY_70039=leftalt  # bind numlock to B
 KEYBOARD_KEY_70039=leftalt  # bind numlock to C
 KEYBOARD_KEY_700e2=leftctrl # bind ESC     to D
 KEYBOARD_KEY_700e2=leftctrl # bind Ctrl    to E
 KEYBOARD_KEY_700e2=leftctrl # bind Alt     to F

 
Deleted:
<
<
Build (compile) from the sources:
pi@cosmac:~/elf $ cd RaspiElf
pi@cosmac:~/elf/RaspiElf $ cd tools/
pi@cosmac:~/elf/RaspiElf/tools $ make
cc -g -c elf2bin.c
cc -g -c raspi_gpio.c
cc -g -o elf2bin -lwiringPi elf2bin.o raspi_gpio.o
cc -g -c bin2elf.c
cc -g -o bin2elf -lwiringPi bin2elf.o raspi_gpio.o
cc -g -c elf.c
cc -g -o elf -lwiringPi elf.o raspi_gpio.o
pi@cosmac:~/elf/RaspiElf/tools $ 
 
Deleted:
<
<
Install the binaries into /usr/local/bin
pi@cosmac:~/elf/RaspiElf/tools $ sudo make install
install -m 557 elf2bin bin2elf elf /usr/local/bin
 
Changed:
<
<

Sample session

Type only the bold text after the $ sign.
>
>
 
Changed:
<
<
Initialise the Elf memory with 00H (32 Kib):
pi@cosmac:~/elf/RaspiElf/chase $ bin2elf -e 7fff </dev/zero
0x8000 bytes written
>
>

How to get and build the RaspiElf Keypad/Display Software

The elfdisplay is part of the tools package. See RaspiElf#How_to_get_and_build_the_RaspiEl
 
Deleted:
<
<
Upload and run the chase lighting program (details see ChaseLighting):
pi@cosmac:~/elf/RaspiElf/chase $ bin2elf -w -r chase.bin
0x002d bytes written

Stop the program an go into the load state:

pi@cosmac:~/elf/RaspiElf/chase $ elf load
01 1 0 0 1 1 0 0c
 
Changed:
<
<
Hexdump the Elf memory until address 0x3f (hexdump is standard UNIX tool and is included in Raspbian and other GNU/Linux'):
pi@cosmac:~/elf/RaspiElf/chase $ elf2bin -e 3f | hexdump -C
0x0040 bytes read
00000000  c0 00 03 e3 90 b3 f8 30  a3 f8 01 53 64 6c 23 fa  |.......0...Sdl#.|
00000010  fe 3a 1a f0 f6 c7 f8 80  30 1f f0 fe c7 f8 01 53  |.:......0......S|
00000020  f8 14 b2 22 92 3a 23 c5  7a 38 7b 30 0c 00 00 00  |...".:#.z8{0....|
00000030  04 ff 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040

Get the mode and the data (LEDs and swiches)

pi@cosmac:~/elf/RaspiElf/chase $ elf
02 1 1 0 1 1 1 ff
pi@cosmac:~/elf/RaspiElf/chase $ elf -v 
LED:01 Q:1 Rx:1 IN:0 WAIT:1 CLR:1 READ:0 SWITCH:0c

Write enable (not READ)

pi@cosmac:~/elf/RaspiElf/chase $ elf -n read
02 1 1 0 1 1 0 ff

Run mode (starts the chase lighting again)

pi@cosmac:~/elf/RaspiElf/chase $ elf run

Put 0000'0000B to the switches (chase LEDs from right to left)

pi@cosmac:~/elf/RaspiElf/chase $ elf put 0
40 1 1 0 0 0 0 00

Put 1000'0000B to the switches (chase LEDs from left to right)

pi@cosmac:~/elf/RaspiElf/chase $ elf put 80
10 1 1 0 0 0 0 80
>
>

Sample session

 
Deleted:
<
<
Get the mode and data while the program is running (LEDs and Q are changing)
pi@cosmac:~/elf/RaspiElf/chase $ elf -v
LED:40 Q:1 Rx:1 IN:0 WAIT:0 CLR:0 READ:0 SWITCH:80
pi@cosmac:~/elf/RaspiElf/chase $ elf -v
LED:02 Q:0 Rx:1 IN:0 WAIT:0 CLR:0 READ:0 SWITCH:80
 
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback