Cause it only require 4 extra wire so i save bit's plus think about it,
With the '165 you need 4 Arduino pins, without the '165 you need 5, so granted it's an extra pin but the result is a lot simpler and more versatile.
your Arduino will have to do this every time you press a key while my system does it from outside and take no processing time.
I don't understand this, the two options use exactly the same processing time, that is the ISR every time a key is pressed. The only difference is that without the '165 you use the 4 bits to index into an array to map the bits to a character. This has the further advantage of not hard wiring anything so with a simple value change in the array you can get whatever characters you want from the key presses. You can also use the bits to index into an array of function pointers so each key executes a particular function.
If you get ASCII characters from the input you can't do any of that without manipulating the byte, having a much larger lookup array, or having long if-else or switch constructs.
So in short, clever as it is, I can no advantage to this circuit and plenty of disadvantages.
(NOTE: this argument assumes you can place the 4 bits in 4 contiguous pins of the same port)
And also cause it's fun to think outside of the box.
That's fair enough, if you want to learn about this stuff this is as good a way as any.
While i have a infinite amount of space outside the Arduino, i have a limited amount of resource inside.
Technically that's true, but removing the '165 and using an array adds maybe 18 bytes to your sketch size, that would not normally be an issue.
&h3A to &h3F witch are ":, ;, <, =, >, ?".
Mapping ABCDEF to :;<=> can hardly be described as "working" as you post said before the edit, it's just one step below a random mapping.
if i can make those 16 characters come out of the thing, i can make all ASCII come out of the thing.
Your idea of adding 0x30 to get 0-9 is good and shows an understanding of the principles involved. But trying to get "all ASCII" the same way will need a lot of hardware unless the ASCII values you want are 16 contiguous values.
So? Keypad doesn't have to work at super speed
I was implying that I don't remember the exact logic of the '922, what that has to do with the speed of this circuit I have no idea.
Big lack of imagination here it's like saying "I'm not gonna use a hammer to build my house cause it's old tech".
Personally I would use a MIG welder and build a steel house (as I have done twice before), but even then a hammer is occasionally required. I have no problem with old technology (I'm actually a wannabe blacksmith) in fact I prefer it when appropriate.
And don't forget that with a 74138, you can take 3 bits and make 8 SPI port address...With a 74154 you take a nibble and you make 16 SPI port address...Then you can hook 16 thing on you Arduino that communicate on the same 2 wire.
All true, but nothing to do with this circuit.
If you are happy to remove ICs from old boards and experiment with them fair enough, as I said it's a good way to learn, but IMO if you are actually designing something this would not be the way to do it unless for some reason you desperately needed the single pin the '165 frees from the Arduino. Even then it's probably better to just use a larger MCU.
Rob