A cool tip for when you're trying to interface with "strange parts" you don't know a lot about and don't want to blow up (especially in the case of messing up inputs and output pins or voltage levels), is to put series resistors (IDK, around 1K) on all digital signals. That way you limit the current if something bad happens (like both ends forcing opposite voltage levels on the same wire). Keep that in your "toolset" :)
WR = the read write pin, with this you select if you want to read or write to/from the display CS = Chip select this is a very common pin in parallel/serial busses. It lets you wire your parts up into an actual bus. You pull this low (or high depending on the chip) to let the chip know you want to talk to this specific chip.
W/R is generally the Write/read pin and C/S is usually the Clear/Set pin. This is similar to a lot of LCD modules available nowadays. You can also reconfigure the LCD library for Arduino to work with this display.
I think I watch you first a year or so ago maybe more? When you had yourself a project old making your own Apple phone from parts that were sold somewhere in China or Japan. Can't even remember what I watched exactly. I'm not a technician but I once took a VCR and computer repair class so I appreciate real technicians, or Engineers like you. I see what you guys do as an art form and I appreciate your intelligence. Sometimes it's like entertainment or like reading a book and seeing someone else's struggle and success. God bless you. Stay safe. Thank you.
Those displays are pretty cool, though I love the little SPI OLED displays. You can get a decent frame rate and display a lot more info on them and colors
As a software developer thats getting his feet wet in the area of electronics / embedded / system programming, this video really did give me new enthusiasm to keep on going. For example, I know bitwise operators in theory, but still can't wrap my head around their use on the PCB at library implementation level. Now I saw how it's done, hehe.
2:40 While it's true that the 3V3 Arduino Due should be able to drive the display inputs OK, watch out for the 5V levels coming back from the display. The AT91SAM chip used on the Due does not have 5V-tolerant IO pins, AFAIK. (a lot of these standard LCD chipsets allow you to read *from* the status register or display memory.) Some series resistors of say 47 Ohms will help protect the Due, but ideally there should be some proper voltage translation, like a 74HC245 or similar. Just a heads-up, as otherwise it could damage the Due over time.
@Mr T. Guru You missed the part where I said it uses an inverter. ;) Sure, it wouldn't be thousands of volts, but still a few hundred. Perhaps only a few milliamps too, but it could still give a surprising shock, especially if it has a HV cap on the output. It would be somewhat similar to a small laptop backlight inverter... en.wikipedia.org/wiki/CCFL_inverter Just something to watch out for if you don't realise it's there.
Back in 2003/2004 when i was 3/4 years old My dad used to repair TVs,DVD players and VCR and stuff, so he had dozens of dead electronics which he salvaged for parts, and these fluorescent displays were there in the dozens most of them were broken in the desoldering process as he did not have all the proper equipments, one day i saw one these and it was the exact same size that our Scotty have. I took it, looked closely upon it and stared like half and hour on it before my mom screamed from the back and i dropped it because i got scared. And i cried for breaking something so extra ordinary. And as he said that this thing costs around $600 on a site. Then boy i would've been rich if only we knew that there value will fly off like that in the future. Also upon watching this video half way through i realized that the Sony stereo sound system that i have (a thing from 2000) also have this fluorescent display, Which means when it dies and can't be repaired i'll take apart the display in a heartbeat, to see what type or version it actually is.
I used these and many other VFD units in slot machines when I was programmer. The Noritake displays are good but the single line 16x1 unit has some timing issues that corrupt the display. I do love VFDs....have a look on RUclips for a Crazy Fruits UK slot machine and look at the effects we did. My favourite was the "scramble", essentially, pick random characters for the length of the final string, and as randomly displayed characters match the character of the final string, don't change that character again. Keep doing this, with a timer that keeps getting quicker, and the effect looks great. You can also "throb" the display by adjusting the brightness up and down on a timer. I loved these things.
I have been there with a random VFD I found in a lab. I didn‘t find a datasheet, so I tried to buzz out all the connections and routes, took me a complete sunday afternoon. But after that I stopped, because I also thought the board on the back is some custom thing I can‘t reverse engineer to show something on the display. So thanks for this interesting and encouraging video, my VFD looked surprisingly similar! If I find it again I might give it another shot.
The 3-pin connector is your friend, it's +5V/Serial/GND. If you ground the serial-pin it goes into demo mode and starts printing the ASCII-table one character at a time. If you want to use the serial interface with an Arduino; solder a bridge on J4 and connect TX on the Arduino to the serial-pin on the VFD and you're done. No fancy code required! I think the default baud rate is 19200.
Dude, you are not alone in the projects taking longer than you thought and that you are tired of looking at them..... my current one is doing that to me....wish me luck as I wish you luck!
I have no idea about advanced electronics or half of what your talking about, but love your videos. good to see someone still thinks 'outside of the box'....and beklives anything is possible. Keep up the amazing work.
Ive heard 100's of audible ads but since they sponsor you I'm finally going to try it out. My fear is I love it too much tho. It's why I haven't tried it until right after this video.
8 switches and a button to write to a 20x2 lcd display. It is awesome to see self discovery for a project like this with vintage hardware. Fran Blanche might interest you with the vintage things as well
I've got a similar VFD out of an POS terminal. The protocol is an confidental IBM one and i had to reverse engineer the circuit, desolder the main controller chip and sigal the five (!) shift registers directly. An ESP8266 could drive all through an additional shift register (using I2S and DMA). And by this i have pixel level control on the display with (sort of) multiple gray levels :)
Very cool video. Thanks! Just a couple of remarks: 1. The Arduino delay() function takes an integer parameter (of type unsigned long). If you want delays shorter than 1 ms, you can use delayMicroseconds(). 2. Instead of defining sendChar() and print(), you could easily implement your own class derived from the abstract Print class. You only have to implement the method `size_t write(uint8_t)` (basically your sendChar()), and then you inherit all the print() methods you enjoy with Serial, including those that convert numbers to ASCII for displaying.
I am collecting also old displays as a hobby. I like vfds very much! Maybe I build some watch out of Monsanto MAN displays, that are some very small led arrays, worth to take a look on these.
It never ceases to amaze me how big and complex boards used to be for how little they actually did. If you really want a challenge you should look inside my original atari table top asteroids arcade machine. There's some huge boards inside and it might be one step up from pong graphically lol. I'm yet to tackle it.. it works but the scoring will randomly insert letters for numbers lol.
Those old vfd displays are so cool. I have a number of them, myself. I used my old hp 48 serial port to drive them and used a 40 char. multi line unit to display reminders for myself and other timely info. Too bad they’re no longer made. I considered making a large display with a pile of dot matrix led displays but when I toted up the cost of building it I decided it was way, wat too much money. These were really cheap when they initially showed up on the surplus market. Thanks for making the video
Arduino Blog sent me. Cool project, man. I remember having a stereo and a calculator with similar displays back in the late 80's-early 90's. I think my dad's car stereo had one as well.
'Waves it around' is right - it annoyed the heck out of me the way he waved stuff around so fast, my old eyes can't keep up with that and I found it very annoying.
Strange parts you keep saying ur working on a secret project but those who have seen most of ur videos and is a huge fan of ur channel and electronics ..... would have a fifty-fifty idea of what the project is ...... but I cant wait for the big reveal ... anyways love your channel and love your work ur a huge inspiration.
Both the arduino and the display have [0.1/2.54] headers. When you are working on something new, use jumper wires. Wire a PCB after you have something working. If you don't know what signals are, look for other parallel port display drivers. Hint CS= Chip select the bar means "active LOW" WR means write
Thank you for the video content. Many used customer display cashier machines stored in warehouses contain similar 2x20 VFD screens, hopefully the pinout is the same.
Hi, I think that you would better create a buffer with characters to be able to draw character at specific position, and redraw screen every 16ms (~60 Hz) using hardware timer for interruptions, this don't block the main thread (delay is a blocking function) and will consume less power.
Being an Eighties kid filled to the brim with 8-bit computer BASIC knowledge, am doing very similar experiments with the Colour Maximite instead of the Arduino. I was amused that you made some of the same mistakes I did! I’ve found that driving the segments directly instead of interfacing with the driver electronics to be more interesting. I’m just farting around with seven-segment displays at the moment, though. Still, using Ben Eater’s technique of pulling the display byte from a small EEPROM to be very fun! Without relying on a driver, I can drive any segments I want. I may try something similar with some sophisticated displays like yours. I really enjoyed the video. Thanks!
I'm always excited to watch StrangeParts! Love the way that every video feels like an Adventure that the viewer is part of!A treat really! Keep up the great work!! :D
From my experience with shift registers, when dealing with low frequency arduinos, you don't really need to delay. I tried it once and reduced the delay and expected the registers to hickup at some point. But the overhead of arduino (and even in native AVR-C) together with the slow clock is often enough to provide proper and reliable latching of the data.
Well I guess if the shift registers maximum clock frequency is above the microcontrollers main clock, I'd rather save some valuable processing time... Btw. is your profile picture the brutally faceswopped version of Tom?
W/R is Write/Read. The logic level on this determines if you're writing to the registers or reading from them. Yes, you can read the content of your Display Controller, which is rarely needed :)
I’ve hoarded lots of these displays, as they look great and retro cool :0) They are from a time when electronics were built to a high standard. The Sharp EL displays are fun too.
Already love audible. Listening to a lot of the Star Wars extended universe by Timothy Zahn. Nice choice of sponsor for sure. Glad to hear that you keep working on the project.
You can still buy VFD screens new, they also have i2c models with controllers within the glass. They're also comparably priced compared to LCD or OLED technology in bulk manufacturing.
@14:37 You should pay attention to the timing at the bottom left of the data sheet. When writing to the VFD controllers, you need to have a delay of 160ns. This is to give the controller time to read the information. Also the ~CS (Active LOW) is indeed Chip Select. The ~WR (Active LOW) is Write/Read. The way I understand the timing is as follows. Send data to D7-D0 and hold for 100ns. 10ns after your sent D7-D0, pull ~WR low for 160ns. You should be able to speed up your display this way. My Two Cents. Good work in back-engineering the communication with the VFD. This display works similar to the HD44780 LCD controller. The only different is that the HD44780 has an initialization sequence you must complete which puts it either in 8 bit mode of 4 bit mode.
Investing so much time when there lcd version of this display around for a 1$ with arduino libraries and hardware already figured out. Same data protocol, same character codes probably. Only difference extra power requirements for emitters and grid. You probably never stumble upon them, but that old design based of hitachi hd44780 is still in production and popular.
Cool, nice job! I used to have a cash register VFD display with a serial connection wired to my pc running winamp, so I could always see what I was listening to.. But the speed of the parralel interface makes this so much cooler! When always drawing two full lines at a time , you could use it to make a simple game. Like chrome's dino jumping game..
Thanks for the updates, super excited to see what you've been working so hard for! Keep it up Scotty, 0101100101101111011101010010011101110010011001010010000001110100011010000110010100100000011011010110000101101110!
you make it work, and I imagine you have cpu cycles to spare, but just a useful trick: If you look up port manipulation for the Arduino, you will find that digital IO is grouped into ports of 8 bits. You can write to all 8 bits at once. Since your device uses ASCII for the normal letters and the Arduino language also uses ASCII, you can just do PORTX = 'a' to set all the pins to the right value to show an a. This is of course contingent on you wiring the data pins on your device in order to pins 0-7.
WR / CS is most likely Write / Chip Select, a way to tell the chip what you're sending is intended for it. In many cases (not all) this will be a low select, indicated by a horizontal line on top of CS
Please "NEVER STOPS TO MAKE VIDEOS"!!!! your vides is like endorphin to nerds brains!!!! I love it so much! every discovery!, every fantastic place you visit!,every fail! is so fantastic, you a kind of person! plese never stops your work! never stops to do vídeos about it! afterall you is the man to put headphones back in iphones when apple said is impossible! so yopu ar a impossible man! thanks to share your adventures! we love it so much!
I bought a bunch of these from radio rally's in the UK for a few pounds and built clocks etc. out of them. I even have one which runs full graphics which I've done scrolling images etc on using a Raspberry Pi. They really are lovely.
This guy's always happy, even when he fails. Great personality. By the way, "Char" is not pronounced as "Char"ed (burned), but "Char"ecter (as in a letter or number) ;)
I'm just thinking logically why would the shorthand for Character be pronounced "Char" (as in "char"red/burnt), wouldn't it make more sense to be pronounced just like the first part or "Char"acter? I donno, maybe i'm just overthinking it. lol
By the way, you can import your current sketch into Atmel Studio, and connect via JTAG to your Arduino Due. This will let you step through and debug your software. It will also still let you use Arduino's libraries. Doing this will wipe the bootloader from the chip as you'll be directly programming it and you'll also need an Atmel-ICE to program the chip and debug it. It might take a little bit to setup, but it's well worth it for the ease of programming/debugging it'll give later. Especially for big projects! I have to prototype a bunch of projects at work with Arduinos, and I never use their IDE anymore.
I would run that on a constant loop reading out "updating firmware" then the animation bar. bottom bar would have 0-100 % readout with a timer. just have it reset to 0 when done. other option would be to make it a really cool clock with weather reports. etc. Either way, Fun Video!
he looks so happy and you can see he wants to share it, i feel like that too when i make or program something that i think is cool then i try to show it to my family and they just look at me akward, so i go back to my forte of solitude sad
"I could've got this up and running quicker using serial ... but ... why do the easy thing?" 30 seconds earlier: "This project is taking wayyyy longer than expected."
CS and !WR should be set in the inverse order, first !WR and then CS, when you set the signal to CS you are selecting the device to act, and it executes what is on the data/signal lines, !WR is the operation, not write/read, and there's no need to change it, if you aren't going to read from the device leave !WR low and just signal it with CS. You aren't having problems because the arduino is fasther than the display but it may fail if you lower the speed of the arduino, if the !WR signal is high when you set CS and the display reads a R operation it may set data on the bus. Also, the data lines are set after CS, that's to avoid collisions, if the previous operation is a read and the device has data in the bus and you write before letting the device that a new operation is going to happen (CS goes high) you may end with a short circuit (you put a 0 and the device has a 1 or vice-versa and you're sending +VCC to GND). It's important too that after you set CS low and have finished the operation, put the port pins in input mode, that will place them in a high impedance state and will avoid data collision. If you want to simplfy and speed up your code (and make it a lot more readable) you can use a single 8 bit port on the arduino instead of scattered pins (per example, on the base Arduino PORTD is pins 0 to 7) so instead of a loop with bit testing and digitalWrites you can do "PORTD = Data", being Data a byte variable with the value you want in the bus. Finally, I see you are missing A0 from your code (or at least isn't shown) and you should have it, with it you can control the cursor position and select the READ operation type (data or status) Hope it helps :)
CS = Chip select WR = Write pin. Usually these get pulled low to enable A) selecting the device (If you have several on the same data bus (D0-D7) ) and B) Choosing between reading data from a register, or writing data into a register. Before you discovered the in mapping being wrong, I actually thought that you maybe hadn't set the display configuration registers. Many displays usually have special registers, where if you flip bits in them, will change how things work, and can do stuff like inverse characters, blank display etc etc. It all depends on the display used. Also, a downside to these old VFDs, is they do dim over time, and burn out. Thats partly why they fell out of favour, long term reliability isn't good. Best stock some spares.
thank you so much for knowledge about electronics and all your experiences that you shared to us... its really cool and i very enjoyed watching all of your youtube videos
Looks like the displays they put in those public payphones that were pretty much everywhere (at least up here in Canada) until the 2000s when cellphones became common...
@Strange Parts You should look up data on the HD47780 character LCD's. Those are almost certain pin compatible with the VFD you're using and there is a ton of information about using a HD47780 with the Arduino.
The controller on the VFD is often functionally the same as the HD44780 [compatible] LCD controller that is commonly used, as such the Arduino LCD lib may be able to drive it. I know the Noritake VFD's I've used in the past were compatible, with only some minor tweaks required.
Bug is he forgot to declare int i = 0, so i takes on a random value probably in the order of millions (negative or positive)
Bingo! I found it a few minutes later.
@@StrangeParts Relatable C programming problems :P
damn too fast for me.
@M. de k. You're correct. But in appearance It's a random number, and it's an easier way to explain in youtube comments.
@@StrangeParts you are the best and my source of inspiration
A cool tip for when you're trying to interface with "strange parts" you don't know a lot about and don't want to blow up (especially in the case of messing up inputs and output pins or voltage levels), is to put series resistors (IDK, around 1K) on all digital signals. That way you limit the current if something bad happens (like both ends forcing opposite voltage levels on the same wire). Keep that in your "toolset" :)
Thank you!!
These are the things that you never get taught except in inexplicable places like youtube comments. :)
@@sstorholm Actually
100 ohms is usually enough, and avoids some problems with weak pull ups/downs and higher speed signals, and yeah, you don't get taught this in school
thanks
WR = the read write pin, with this you select if you want to read or write to/from the display
CS = Chip select this is a very common pin in parallel/serial busses. It lets you wire your parts up into an actual bus. You pull this low (or high depending on the chip) to let the chip know you want to talk to this specific chip.
I really like how you show your difficulties because we all make the same mistakes after all. Cheers !
Well, he does that to make longer videos to get more revenue :)
@@sadiehallinger1401 ^^The glass is half empty kinda guy.^^
@@honey78665 Hello! Well, that's how he makes his cash to travel and smile :)
F
You always run into Hofstadter's law: it always takes longer than you expected, even if you take Hofstadter's law into account.
i just learned something new
W/R is generally the Write/read pin and C/S is usually the Clear/Set pin. This is similar to a lot of LCD modules available nowadays. You can also reconfigure the LCD library for Arduino to work with this display.
Just wanna let you know I greatly enjoy watching you write and troubleshoot the code. Not boring at all.
I think I watch you first a year or so ago maybe more? When you had yourself a project old making your own Apple phone from parts that were sold somewhere in China or Japan. Can't even remember what I watched exactly. I'm not a technician but I once took a VCR and computer repair class so I appreciate real technicians, or Engineers like you. I see what you guys do as an art form and I appreciate your intelligence. Sometimes it's like entertainment or like reading a book and seeing someone else's struggle and success. God bless you. Stay safe. Thank you.
Those displays are pretty cool, though I love the little SPI OLED displays. You can get a decent frame rate and display a lot more info on them and colors
Missed "= 0" was sneakily added between cuts :D Pretty interesting video, keep up the good work!
Yeah, that's why I added the text about it:) Didn't want you to think I was trying to pull one over on you.
The annoying thing about not initializing a variable is that sometimes it's no problem and sometimes it's messing up everything.
As a software developer thats getting his feet wet in the area of electronics / embedded / system programming, this video really did give me new enthusiasm to keep on going. For example, I know bitwise operators in theory, but still can't wrap my head around their use on the PCB at library implementation level. Now I saw how it's done, hehe.
2:40
While it's true that the 3V3 Arduino Due should be able to drive the display inputs OK, watch out for the 5V levels coming back from the display. The AT91SAM chip used on the Due does not have 5V-tolerant IO pins, AFAIK.
(a lot of these standard LCD chipsets allow you to read *from* the status register or display memory.)
Some series resistors of say 47 Ohms will help protect the Due, but ideally there should be some proper voltage translation, like a 74HC245 or similar.
Just a heads-up, as otherwise it could damage the Due over time.
Also, beware how you handle the VFD board, as it has an inverter on there, and some of them can be surprisingly spicy when they bite. lol
@Mr T. Guru
You missed the part where I said it uses an inverter. ;)
Sure, it wouldn't be thousands of volts, but still a few hundred.
Perhaps only a few milliamps too, but it could still give a surprising shock, especially if it has a HV cap on the output.
It would be somewhat similar to a small laptop backlight inverter...
en.wikipedia.org/wiki/CCFL_inverter
Just something to watch out for if you don't realise it's there.
@Mr T. Guru that won't save you. 30V will instantly kill some semiconductors even if it can only source a microamp.
Back in 2003/2004 when i was 3/4 years old My dad used to repair TVs,DVD players and VCR and stuff, so he had dozens of dead electronics which he salvaged for parts, and these fluorescent displays were there in the dozens most of them were broken in the desoldering process as he did not have all the proper equipments, one day i saw one these and it was the exact same size that our Scotty have. I took it, looked closely upon it and stared like half and hour on it before my mom screamed from the back and i dropped it because i got scared. And i cried for breaking something so extra ordinary. And as he said that this thing costs around $600 on a site. Then boy i would've been rich if only we knew that there value will fly off like that in the future. Also upon watching this video half way through i realized that the Sony stereo sound system that i have (a thing from 2000) also have this fluorescent display, Which means when it dies and can't be repaired i'll take apart the display in a heartbeat, to see what type or version it actually is.
Yes, just what my Saturday afternoon was missing. Cheers!
I used these and many other VFD units in slot machines when I was programmer. The Noritake displays are good but the single line 16x1 unit has some timing issues that corrupt the display. I do love VFDs....have a look on RUclips for a Crazy Fruits UK slot machine and look at the effects we did. My favourite was the "scramble", essentially, pick random characters for the length of the final string, and as randomly displayed characters match the character of the final string, don't change that character again. Keep doing this, with a timer that keeps getting quicker, and the effect looks great. You can also "throb" the display by adjusting the brightness up and down on a timer. I loved these things.
I have been there with a random VFD I found in a lab. I didn‘t find a datasheet, so I tried to buzz out all the connections and routes, took me a complete sunday afternoon. But after that I stopped, because I also thought the board on the back is some custom thing I can‘t reverse engineer to show something on the display. So thanks for this interesting and encouraging video, my VFD looked surprisingly similar! If I find it again I might give it another shot.
This video has gotten me into electronics and microcontrollers and got me interested in Arduinos and all a year and half ago. Thank you, Scotty
The 3-pin connector is your friend, it's +5V/Serial/GND. If you ground the serial-pin it goes into demo mode and starts printing the ASCII-table one character at a time. If you want to use the serial interface with an Arduino; solder a bridge on J4 and connect TX on the Arduino to the serial-pin on the VFD and you're done. No fancy code required! I think the default baud rate is 19200.
Dude, you are not alone in the projects taking longer than you thought and that you are tired of looking at them..... my current one is doing that to me....wish me luck as I wish you luck!
I have no idea about advanced electronics or half of what your talking about, but love your videos. good to see someone still thinks 'outside of the box'....and beklives anything is possible. Keep up the amazing work.
I swear if VFD prices fly through the roof like how videos by eevblog and HBO cause other products to skyrocket I'm going to come find you Scotty!
wr --> probably a write enable pin
cs --> probably a chip select pin
--> pretty standard stuff in serial circuits / ics
Actually, I think they just need to be low for the display to accept the characters
It's so cool that you got the display to print. Can't wait to see the secret project!
"Hey, little VFD display, how are you?"
"AAAAAAAAAAAAAAAAAAAAAA"
more like AYAYA AYAYA AYAYA !!!
Why are you running?!?
Ive heard 100's of audible ads but since they sponsor you I'm finally going to try it out. My fear is I love it too much tho. It's why I haven't tried it until right after this video.
8 switches and a button to write to a 20x2 lcd display. It is awesome to see self discovery for a project like this with vintage hardware.
Fran Blanche might interest you with the vintage things as well
I've got a similar VFD out of an POS terminal. The protocol is an confidental IBM one and i had to reverse engineer the circuit, desolder the main controller chip and sigal the five (!) shift registers directly. An ESP8266 could drive all through an additional shift register (using I2S and DMA). And by this i have pixel level control on the display with (sort of) multiple gray levels :)
Title is a bit misleading, it would be reverse engineering if you had no datasheet;) In any case thanks for great quality video!
can't wait to see what you're working on...Cheers from Canada🙋♂️🍁😊
Isn't it fairly clear that it's a pinball machine?
@@Stuart0870 yeah could be😊🙋♂️🍁
I dreamed of this and now it's here! Thank you. I even thought, "But does it do Cyryllic?".
Very cool video. Thanks!
Just a couple of remarks:
1. The Arduino delay() function takes an integer parameter (of type unsigned long). If you want delays shorter than 1 ms, you can use delayMicroseconds().
2. Instead of defining sendChar() and print(), you could easily implement your own class derived from the abstract Print class. You only have to implement the method `size_t write(uint8_t)` (basically your sendChar()), and then you inherit all the print() methods you enjoy with Serial, including those that convert numbers to ASCII for displaying.
So when do we get to see the pinball machine you are working on :P
Patchinko is my guess :)
@@jasonk9779 Definitely Patchinko or Coin Pusher type game
Either slot or pachinko. Yeah, not so secret anymore.
It's pure joy to watch you work !
I am collecting also old displays as a hobby. I like vfds very much!
Maybe I build some watch out of Monsanto MAN displays, that are some very small led arrays, worth to take a look on these.
It never ceases to amaze me how big and complex boards used to be for how little they actually did. If you really want a challenge you should look inside my original atari table top asteroids arcade machine. There's some huge boards inside and it might be one step up from pong graphically lol. I'm yet to tackle it.. it works but the scoring will randomly insert letters for numbers lol.
enjoyed this so much more than the whole ATM Jackpot video. Would love to see more in-depth videos on your projects.
Those old vfd displays are so cool. I have a number of them, myself. I used my old hp 48 serial port to drive them and used a 40 char. multi line unit to display reminders for myself and other timely info. Too bad they’re no longer made. I considered making a large display with a pile of dot matrix led displays but when I toted up the cost of building it I decided it was way, wat too much money. These were really cheap when they initially showed up on the surplus market. Thanks for making the video
Looking forward to it. If its only half as interesting as this one it'll still be an awesome video but I bet its twice as exciting.
I remember these displays where popular in car radio's a few years back. Really enjoyed the video by the way.
Arduino Blog sent me. Cool project, man. I remember having a stereo and a calculator with similar displays back in the late 80's-early 90's. I think my dad's car stereo had one as well.
When you printed Hello world. I smiled as well. First thing I did on an Apple IIc. Oh, the memories :D
"Gee, I wouldn't wanna break this rare, expensive, and intricately made part"
*waves it around in the air with just three fingers holding it*
Its okay! His name isn't Linus so he should be safe.
'Waves it around' is right - it annoyed the heck out of me the way he waved stuff around so fast, my old eyes can't keep up with that and I found it very annoying.
Enjoyed you adding the coding part to the video!! Very interesting stuff.
Strange parts you keep saying ur working on a secret project but those who have seen most of ur videos and is a huge fan of ur channel and electronics ..... would have a fifty-fifty idea of what the project is ...... but I cant wait for the big reveal ... anyways love your channel and love your work ur a huge inspiration.
Both the arduino and the display have [0.1/2.54] headers. When you are working on something new, use jumper wires.
Wire a PCB after you have something working.
If you don't know what signals are, look for other parallel port display drivers.
Hint CS= Chip select the bar means "active LOW" WR means write
agree on the pricing and yes they are impressive little works of solid state art
Thank you for the video content. Many used customer display cashier machines stored in warehouses contain similar 2x20 VFD screens, hopefully the pinout is the same.
I loved this episode I only know a little bit of coding but it was fascinating watching you realize your errors and work around them
Hi, I think that you would better create a buffer with characters to be able to draw character at specific position, and redraw screen every 16ms (~60 Hz) using hardware timer for interruptions, this don't block the main thread (delay is a blocking function) and will consume less power.
Back at it again!!!
I'm literally very excited to watch the video of you big project. Upload fast coz can't wait more!
Being an Eighties kid filled to the brim with 8-bit computer BASIC knowledge, am doing very similar experiments with the Colour Maximite instead of the Arduino. I was amused that you made some of the same mistakes I did!
I’ve found that driving the segments directly instead of interfacing with the driver electronics to be more interesting. I’m just farting around with seven-segment displays at the moment, though. Still, using Ben Eater’s technique of pulling the display byte from a small EEPROM to be very fun! Without relying on a driver, I can drive any segments I want. I may try something similar with some sophisticated displays like yours.
I really enjoyed the video. Thanks!
I'm always excited to watch StrangeParts! Love the way that every video feels like an Adventure that the viewer is part of!A treat really! Keep up the great work!! :D
"i" needs to be initialized such as "i=0" in your case.
@Alparslan Ali Alp not in C
@Alparslan Ali Alp not in C, in C you get a random data value in if it you don't set it to something
From my experience with shift registers, when dealing with low frequency arduinos, you don't really need to delay. I tried it once and reduced the delay and expected the registers to hickup at some point.
But the overhead of arduino (and even in native AVR-C) together with the slow clock is often enough to provide proper and reliable latching of the data.
better safe than sorry
Well I guess if the shift registers maximum clock frequency is above the microcontrollers main clock, I'd rather save some valuable processing time...
Btw. is your profile picture the brutally faceswopped version of Tom?
W/R is Write/Read.
The logic level on this determines if you're writing to the registers or reading from them.
Yes, you can read the content of your Display Controller, which is rarely needed :)
I’ve hoarded lots of these displays, as they look great and retro cool :0) They are from a time when electronics were built to a high standard. The Sharp EL displays are fun too.
Already love audible. Listening to a lot of the Star Wars extended universe by Timothy Zahn. Nice choice of sponsor for sure. Glad to hear that you keep working on the project.
3:55 love the montage music man!
You can still buy VFD screens new, they also have i2c models with controllers within the glass. They're also comparably priced compared to LCD or OLED technology in bulk manufacturing.
@14:37 You should pay attention to the timing at the bottom left of the data sheet. When writing to the VFD controllers, you need to have a delay of 160ns. This is to give the controller time to read the information. Also the ~CS (Active LOW) is indeed Chip Select. The ~WR (Active LOW) is Write/Read. The way I understand the timing is as follows. Send data to D7-D0 and hold for 100ns. 10ns after your sent D7-D0, pull ~WR low for 160ns. You should be able to speed up your display this way.
My Two Cents. Good work in back-engineering the communication with the VFD. This display works similar to the HD44780 LCD controller. The only different is that the HD44780 has an initialization sequence you must complete which puts it either in 8 bit mode of 4 bit mode.
I have a new appreciation for the DEVs behind LCD Smartie
Well done a great job Do more content, You are among the only ones to make a cellphone under home conditions👍.
You used to put subtitles in Portuguese, and now there is no more, please put it back, I really like your videos
Investing so much time when there lcd version of this display around for a 1$ with arduino libraries and hardware already figured out. Same data protocol, same character codes probably. Only difference extra power requirements for emitters and grid. You probably never stumble upon them, but that old design based of hitachi hd44780 is still in production and popular.
For those of us like my self the code is great I wish more channels would show the code as that is always my hurdle to any project.
I miss seeing these things. What a cool project.
Cool, nice job! I used to have a cash register VFD display with a serial connection wired to my pc running winamp, so I could always see what I was listening to.. But the speed of the parralel interface makes this so much cooler! When always drawing two full lines at a time , you could use it to make a simple game. Like chrome's dino jumping game..
Thanks for the updates, super excited to see what you've been working so hard for! Keep it up Scotty, 0101100101101111011101010010011101110010011001010010000001110100011010000110010100100000011011010110000101101110!
I salvaged one of these about 6 months ago, from an old satellite receiver.
I was wondering how I could make it work... Thanks for your video!
you make it work, and I imagine you have cpu cycles to spare, but just a useful trick: If you look up port manipulation for the Arduino, you will find that digital IO is grouped into ports of 8 bits. You can write to all 8 bits at once. Since your device uses ASCII for the normal letters and the Arduino language also uses ASCII, you can just do PORTX = 'a' to set all the pins to the right value to show an a. This is of course contingent on you wiring the data pins on your device in order to pins 0-7.
WOW programming 101 , nice addition to the videos!!!
WR / CS is most likely Write / Chip Select, a way to tell the chip what you're sending is intended for it. In many cases (not all) this will be a low select, indicated by a horizontal line on top of CS
The whole video I said to myself "please make it say Hello World" and you did! I'm so happy!
love watching these videos
Please "NEVER STOPS TO MAKE VIDEOS"!!!! your vides is like endorphin to nerds brains!!!! I love it so much! every discovery!, every fantastic place you visit!,every fail! is so fantastic, you a kind of person! plese never stops your work! never stops to do vídeos about it! afterall you is the man to put headphones back in iphones when apple said is impossible! so yopu ar a impossible man! thanks to share your adventures! we love it so much!
I bought a bunch of these from radio rally's in the UK for a few pounds and built clocks etc. out of them. I even have one which runs full graphics which I've done scrolling images etc on using a Raspberry Pi. They really are lovely.
If you're interested, I reverse engineered a Noritake Itron display. Easy to send data to and a surprisingly well written data sheet.
This guy's always happy, even when he fails. Great personality.
By the way, "Char" is not pronounced as "Char"ed (burned), but "Char"ecter (as in a letter or number) ;)
Speak for yourself, I've never encountered anyone who has pronounced it the second way :D
I'm just thinking logically why would the shorthand for Character be pronounced "Char" (as in "char"red/burnt), wouldn't it make more sense to be pronounced just like the first part or "Char"acter? I donno, maybe i'm just overthinking it. lol
Logic only affects language by sheer coincidence.
Okie-Dokie then. :)
By the way, you can import your current sketch into Atmel Studio, and connect via JTAG to your Arduino Due. This will let you step through and debug your software. It will also still let you use Arduino's libraries. Doing this will wipe the bootloader from the chip as you'll be directly programming it and you'll also need an Atmel-ICE to program the chip and debug it. It might take a little bit to setup, but it's well worth it for the ease of programming/debugging it'll give later. Especially for big projects!
I have to prototype a bunch of projects at work with Arduinos, and I never use their IDE anymore.
That's a very beautiful display I'm in love with it!
This is fascinating content. Wish I kept up with this stuff like I did as a youth. Giving me inspiration! 🙏🏾
" I really dont want to drop this or break it anyway" * proceeds to throw it around like Lego bricks.
I would run that on a constant loop reading out "updating firmware" then the animation bar.
bottom bar would have 0-100 % readout with a timer. just have it reset to 0 when done.
other option would be to make it a really cool clock with weather reports. etc.
Either way, Fun Video!
he looks so happy and you can see he wants to share it,
i feel like that too when i make or program something that i think is cool then i try to show it to my family and they just look at me akward, so i go back to my forte of solitude sad
"I could've got this up and running quicker using serial ... but ... why do the easy thing?"
30 seconds earlier: "This project is taking wayyyy longer than expected."
CS and !WR should be set in the inverse order, first !WR and then CS, when you set the signal to CS you are selecting the device to act, and it executes what is on the data/signal lines, !WR is the operation, not write/read, and there's no need to change it, if you aren't going to read from the device leave !WR low and just signal it with CS. You aren't having problems because the arduino is fasther than the display but it may fail if you lower the speed of the arduino, if the !WR signal is high when you set CS and the display reads a R operation it may set data on the bus.
Also, the data lines are set after CS, that's to avoid collisions, if the previous operation is a read and the device has data in the bus and you write before letting the device that a new operation is going to happen (CS goes high) you may end with a short circuit (you put a 0 and the device has a 1 or vice-versa and you're sending +VCC to GND). It's important too that after you set CS low and have finished the operation, put the port pins in input mode, that will place them in a high impedance state and will avoid data collision.
If you want to simplfy and speed up your code (and make it a lot more readable) you can use a single 8 bit port on the arduino instead of scattered pins (per example, on the base Arduino PORTD is pins 0 to 7) so instead of a loop with bit testing and digitalWrites you can do "PORTD = Data", being Data a byte variable with the value you want in the bus.
Finally, I see you are missing A0 from your code (or at least isn't shown) and you should have it, with it you can control the cursor position and select the READ operation type (data or status)
Hope it helps :)
When Scotty does the double air punch and YEA. That moment is why we do this stuff!
Thanks Scotty, can’t wait to see the result. If I wasn’t an Audible customer already, I’d be signing up :-)
It is such an exciting moment when it whirs to life!
Love the stuff you do man! Keep it up, always inspired me to try out something I didn't this I could do before.
You can bind it with Arduino officialized LCD library. this Library is commonly used for that Arduino LCD, such as Hitachi 20x2 Character LCD display.
CS = Chip select WR = Write pin. Usually these get pulled low to enable A) selecting the device (If you have several on the same data bus (D0-D7) ) and B) Choosing between reading data from a register, or writing data into a register. Before you discovered the in mapping being wrong, I actually thought that you maybe hadn't set the display configuration registers. Many displays usually have special registers, where if you flip bits in them, will change how things work, and can do stuff like inverse characters, blank display etc etc. It all depends on the display used.
Also, a downside to these old VFDs, is they do dim over time, and burn out. Thats partly why they fell out of favour, long term reliability isn't good. Best stock some spares.
Thank you Audible, very cool.
I would LOVE to see you and Adam Savage working together. That would be epic!!
it's so cool how you can interface random stuff like this easily with an arduino.
thank you so much for knowledge about electronics and all your experiences that you shared to us... its really cool and i very enjoyed watching all of your youtube videos
Looks like the displays they put in those public payphones that were pretty much everywhere (at least up here in Canada) until the 2000s when cellphones became common...
@Strange Parts
You should look up data on the HD47780 character LCD's. Those are almost certain pin compatible with the VFD you're using and there is a ton of information about using a HD47780 with the Arduino.
The controller on the VFD is often functionally the same as the HD44780 [compatible] LCD controller that is commonly used, as such the Arduino LCD lib may be able to drive it. I know the Noritake VFD's I've used in the past were compatible, with only some minor tweaks required.