[00:02.960 --> 00:31.320] A little pause... and we'll see you next time. [00:36.100 --> 01:01.380] A little pause... and we are back. [01:01.400 --> 01:31.380] And this is the second one. [01:31.400 --> 02:01.280] And this is the second one. [02:25.840 --> 02:29.680] This is the first sentence. [02:33.360 --> 02:39.260] Hi, if you're here for fun with pagers, we're going to try and reschedule that for tomorrow. [02:42.840 --> 02:51.000] If Paul Bergsman is here for the control of the world from your PC, please come up to the front now. [02:54.500 --> 02:55.560] Anybody know where he is? [02:57.440 --> 02:58.880] He thinks he's honest. [03:00.840 --> 03:01.640] Oh, where is he? [03:03.560 --> 03:03.780] Hmm? [03:08.180 --> 03:09.380] I'll wait right here. [03:15.520 --> 03:19.440] My book and such, and they said, someone canceled. [03:19.560 --> 03:20.560] Can you be here in five minutes? [03:20.740 --> 03:22.880] So, I had to set up and I apologize. [03:25.580 --> 03:30.080] I have the distinction of being the only person in this room that's going under his own name. [03:31.240 --> 03:31.760] Right? [03:33.160 --> 03:35.300] And my name is on my badge. [03:36.080 --> 03:39.020] My name is Paul Bergsman and I come from Philadelphia. [03:39.780 --> 03:43.260] And I've been playing with computers for a couple of years. [03:43.780 --> 03:47.320] And I'm a member of the Philadelphia Area Computer Society. [03:48.100 --> 03:48.620] Hacks. [03:50.040 --> 03:56.520] And for the last 10 or 12 years, I have been the leader of the robotics and engineering SIG. [03:57.180 --> 03:59.040] SIG means special interest group. [04:00.640 --> 04:04.540] And we wanted to build things that would connect to our computers. [04:05.000 --> 04:07.540] But when I started, some people had a TI. [04:08.020 --> 04:09.560] Some people had a Commodore. [04:10.180 --> 04:13.380] Some people had Apples and some people were getting into IBM. [04:14.860 --> 04:21.000] And if we were going to build things and run them from the computer, how are we all going to use the same computer? [04:21.780 --> 04:22.580] We can't. [04:23.360 --> 04:26.520] In one room there would be an Apple SIG while another room was Commodore. [04:26.520 --> 04:31.540] So we had many, many different computers meeting at the Philadelphia Area Computer Society. [04:32.300 --> 04:35.800] And we needed a way that we could all use the same thing. [04:36.500 --> 04:38.520] So we tried a couple different ideas. [04:40.720 --> 04:43.120] First thing we thought of was the game port. [04:43.680 --> 04:47.660] Let me just adjust this once and then I won't have to look at it again. [04:48.300 --> 04:50.680] Get as little parallax as I can. [04:51.960 --> 04:52.580] Okay. [04:54.380 --> 04:55.160] All right. [04:58.480 --> 05:00.500] First thing we looked at was the game port. [05:01.370 --> 05:03.700] This is a game port on the IBM computer. [05:06.020 --> 05:14.500] And you have a way of reading in four different varying values, which we call analog. [05:15.920 --> 05:18.600] And you have a couple buttons, four buttons. [05:19.540 --> 05:22.680] And you could bring in some information to your computer. [05:23.340 --> 05:25.480] But you can't output anything with this. [05:25.900 --> 05:31.140] And the worst problem is that what's on the IBM is not what's on an Apple. [05:31.700 --> 05:33.360] And it's not what's on a Commodore. [05:33.620 --> 05:35.320] Everybody's game port is different. [05:36.040 --> 05:38.200] So we can't talk the same language. [05:38.780 --> 05:41.700] And we wanted to worry about circuits we could make. [05:41.800 --> 05:43.040] We didn't want to worry about a computer. [05:43.580 --> 05:46.680] So we couldn't do that if we use the game port, because everybody's is different. [05:46.940 --> 05:48.240] So we got rid of that idea. [05:49.180 --> 05:53.280] I'm sorry I have to keep turning my back, but there's no table here for me to put this stuff on. [05:54.000 --> 05:56.640] The next thing we looked at was the serial port. [05:58.460 --> 06:00.080] Now the serial port is kind of neat. [06:03.040 --> 06:06.160] Every computer seems to have a serial port, even a Mac. [06:07.580 --> 06:11.520] And they didn't try and come up with their own standard for serial. [06:12.400 --> 06:14.520] So you can hook things to it. [06:15.400 --> 06:22.440] The problem is that to go in serial, it means the computer usually talks about a byte of information. [06:22.820 --> 06:23.900] Eight bits. [06:25.020 --> 06:26.900] And they're all there at the same time. [06:27.160 --> 06:29.740] Now if you want to go serially, you've got to put one behind the other. [06:30.220 --> 06:31.640] You have to add a stop bit. [06:31.740 --> 06:32.860] You have to add a start bit. [06:33.000 --> 06:34.360] You have to have a parity bit. [06:35.260 --> 06:36.760] You've got about 11 bits there. [06:36.920 --> 06:39.580] You're sending out one after the other. [06:40.540 --> 06:46.720] And then that has to be converted back to parallel, because the chips, most of them want to work in parallel. [06:46.720 --> 06:48.600] Your computer wants to work with parallel. [06:48.740 --> 06:50.200] All eight bits at the same time. [06:50.380 --> 06:57.320] So here you are slowing things down to one eleventh of the real speed that you can get. [06:58.700 --> 07:00.000] And it's really slow. [07:00.180 --> 07:01.760] And you must add the extra circuitry. [07:01.920 --> 07:08.460] This is a chip that only costs about $4 at Active, electronics or Digi-Key. [07:08.700 --> 07:12.140] And it will convert parallel to serial and serial to parallel. [07:12.400 --> 07:13.780] You've got eight bits in, eight bits out. [07:13.780 --> 07:16.460] And it comes in through the serial port. [07:17.700 --> 07:21.680] And you have to convert it to plus and minus 12 volts. [07:21.680 --> 07:26.420] Because most things in a computer work on zero and five volts. [07:26.620 --> 07:28.200] The logic is a one or a zero. [07:29.320 --> 07:32.320] And if it's TTL, it's zero or two and a half volts. [07:32.460 --> 07:34.020] But we'll talk about zero and five volts. [07:34.060 --> 07:37.040] But it's just a small signal, real weak. [07:37.740 --> 07:43.760] And the serial port wants 12 volts for zero and minus 12 volts for a one. [07:44.620 --> 07:46.400] And you know why they do that? [07:46.560 --> 07:48.960] Anybody got an idea why they went to these big voltages? [07:50.040 --> 07:53.500] Anyone know why we use serial ports with such big voltages? [07:53.760 --> 07:58.840] Well, why is the parallel port not good for some things that the serial port is? [07:58.840 --> 08:01.240] What's the serial port good for that you can't do with a parallel port? [08:01.380 --> 08:01.700] Yes, sir. [08:02.440 --> 08:02.700] Sorry? [08:03.440 --> 08:04.020] Oh, yeah. [08:04.260 --> 08:05.120] Much less wiring. [08:05.280 --> 08:05.580] You're right. [08:05.720 --> 08:06.980] It's only a twisted pair. [08:07.120 --> 08:07.860] Well, three wires. [08:08.300 --> 08:09.560] In and out and a ground. [08:09.880 --> 08:10.420] Three wires. [08:10.560 --> 08:10.940] That's true. [08:11.900 --> 08:12.700] The distance. [08:13.000 --> 08:13.960] Man gets a silver... [08:13.960 --> 08:15.880] You're not gonna get a free book, but you get a... [08:16.320 --> 08:17.120] He bought the book. [08:17.160 --> 08:17.420] Okay. [08:17.800 --> 08:19.120] Well, maybe you'll get a kiss then. [08:19.160 --> 08:19.500] How's that? [08:19.500 --> 08:20.260] All right. [08:21.820 --> 08:35.020] If you're serially, with plus and minus 12 volts, that's 24 volts difference between the two, and therefore you can go a much larger distance before that voltage can't be seen. [08:35.420 --> 08:45.140] On the other hand, with the parallel port, or TTL, which is what most chips are, you only have a zero and a two and a half volts, and that's a pretty weak signal. [08:45.140 --> 08:49.140] So in the parallel port, you can't go as far because it's the very weak signals. [08:50.380 --> 08:52.780] But the...so that is an advantage of the serial port. [08:53.000 --> 09:07.000] And the two wires is an advantage if you want to make sure that what you're connecting outside, you want to isolate it from your computer, and you want to make sure that if lightning hits something, it won't get in your computer, you can optocouple. [09:07.140 --> 09:17.160] You can put a little light beam between you and their computer, and the only thing that's connecting is a light beam, and you only have to opt a couple, two wires instead of eight wires. [09:17.360 --> 09:22.740] So there are some advantages to serial, but it's really slow, and all the...and it's a lot of money. [09:22.880 --> 09:26.720] So we kind of disregarded that, and got rid of that too. [09:27.880 --> 09:29.040] So what did we do? [09:30.160 --> 09:31.900] We looked at the parallel port. [09:33.500 --> 09:33.940] Okay? [09:34.180 --> 09:36.160] The parallel port is really neat. [09:37.000 --> 09:42.220] And the reason it's neat is everybody's parallel printer port is exactly the same. [09:42.920 --> 09:45.120] Serial port, by the way, is not the same. [09:45.560 --> 09:55.800] There's a story, I remember, there was somebody wrote in a computer magazine that they went into a store, and they said, I need a serial cable, and I want the serial cable to go from this printer to this computer. [09:55.800 --> 10:01.200] And he said, certainly, sir, you need a 3x21, and he went to this board, and there were 50 serial cables. [10:01.800 --> 10:03.600] They're all different for different hookups. [10:04.000 --> 10:06.200] And he said, now, if it isn't up there, we'll make you one. [10:07.140 --> 10:09.560] And the thing is that serial is not standard. [10:09.760 --> 10:14.460] Everybody has their own way, each company uses their own way of connecting A to B. [10:15.180 --> 10:17.100] Sometimes they call it a DTE, what is it? [10:17.260 --> 10:20.480] One's a computer, and the other's a terminal, and I don't know. [10:20.540 --> 10:21.540] They've got a whole bunch of standards. [10:21.700 --> 10:23.940] So you can't even talk the same with the serial. [10:23.940 --> 10:31.760] With a parallel port, every single pin was defined by the Centronics company when they made their first parallel printers. [10:32.000 --> 10:37.100] And everybody uses the same pins, and they all mean the same thing, and they all do the same thing. [10:37.480 --> 10:39.420] Nothing is different on any computer. [10:39.620 --> 10:40.420] They're all the same. [10:41.040 --> 10:49.440] We can use this then, and by the way, when you're talking to a printer, every language has commands to talk to a printer. [10:50.780 --> 10:52.620] In BASIC, you can say LPRINT. [10:54.680 --> 10:58.160] In PASCAL, you can say WRITE, or WRITE LINE. [10:58.600 --> 11:02.240] And in C, it takes about a page of code, but it still works. [11:04.180 --> 11:05.500] You write your own, right. [11:07.080 --> 11:23.720] So, we started using this parallel printer port, and what I did, I started taking notes over the last five years, and I put it all together, and I wrote a book, which this young man was brave enough to buy, called Controlling the World with Your PC. [11:24.260 --> 11:26.180] That's why I had to use my real name here, right? [11:28.600 --> 11:36.640] And if you want to make a living writing a book, I'll tell you that if I sell out the first printing, I've made 32 and a half cents an hour. [11:37.200 --> 11:40.520] So, before you think you're going to get rich writing a book, think again. [11:41.100 --> 11:47.560] At any rate, I put it all down, and it's all in order now, and it all has some logic. [11:48.600 --> 11:52.000] And basically, I targeted the book to three audiences. [11:52.260 --> 11:56.460] Students who have, like high school and such, that want to make science fair projects. [11:57.280 --> 11:59.740] College engineering students who have to do... [11:59.740 --> 12:02.120] I took a year sabbatical as a teacher. [12:02.240 --> 12:04.300] I teach industrial arts for 22 years. [12:04.800 --> 12:11.460] And for my sabbatical, I went once a week up to Trenton State College, and they enter an electric car contest. [12:11.960 --> 12:22.400] And I asked if I could work on it, and I was in charge of making some of the sensors that would connect to a laptop computer, so they could monitor the battery temperature, the speed, and other things. [12:22.560 --> 12:23.320] And it's all electronic... [12:23.320 --> 12:26.000] It's just what I'm doing with my book, and they let me work with it. [12:26.680 --> 12:27.760] And it was interesting. [12:27.980 --> 12:31.300] Every student in engineering must do a senior project. [12:31.740 --> 12:35.940] And if you're in electronics engineering, it must include a computer. [12:36.600 --> 12:43.080] And it turned out that every single engineering student needed one of the circuits that I was writing for my book. [12:43.080 --> 12:51.060] And of course, I gave them the circuits for free, and I just gave it to them in the rough form, and they understood not to spread it around until the book got published. [12:51.900 --> 12:55.660] But it was interesting that so many people needed this kind of stuff. [12:55.780 --> 12:57.680] There's engineering students, and they just didn't know... [12:57.680 --> 12:58.680] They knew how to program. [12:58.860 --> 12:59.920] They knew how to use a soldering iron. [13:00.360 --> 13:02.120] They didn't know how to connect the two things together. [13:03.000 --> 13:06.400] And my third group of people are subterranean hardware hackers. [13:06.580 --> 13:07.140] Do you know what they are? [13:10.360 --> 13:13.220] They're the weekend hacker that works in his basement. [13:14.580 --> 13:16.740] Yeah, subterranean hardware hacker. [13:17.200 --> 13:17.280] Hmm. [13:17.980 --> 13:18.460] All right. [13:18.600 --> 13:19.400] It's getting late. [13:19.540 --> 13:20.740] I guess you all want to go to dinner. [13:22.200 --> 13:23.780] Yeah, listen. [13:26.260 --> 13:30.120] I waited up till midnight for this party last night that didn't exist. [13:30.180 --> 13:31.240] So I'm a little tired. [13:32.640 --> 13:34.500] So that's as good as they're going to get. [13:35.900 --> 13:36.640] I know. [13:36.880 --> 13:37.900] Well, you're younger than me. [13:39.780 --> 13:50.940] I divided everything into two sections, and we're going to look at some output circuits, where you can control things from your computer, and inputs, where you can read things into your computer. [13:52.120 --> 13:53.780] And such outputs is... [13:53.780 --> 14:01.440] There's basic circuits that we'll look at, and displays, like liquid crystal displays, and LED displays. [14:02.560 --> 14:04.360] And, of course, we can control motors. [14:04.980 --> 14:06.360] Stepping motors, servo motors. [14:06.720 --> 14:10.640] And the inputs would be either digital, where it goes high or low, or analog. [14:10.960 --> 14:16.020] Like, the temperature in the room in your house doesn't go this much, then this much, then this much. [14:16.100 --> 14:17.540] It's a smooth distance. [14:17.780 --> 14:18.220] It changes. [14:18.500 --> 14:19.640] And that's called analog. [14:19.980 --> 14:21.880] And you can input analog to your computer. [14:22.500 --> 14:24.140] So we're going to look at some of those things. [14:25.200 --> 14:31.740] So the first thing I'll look at, and we're going to do these kind of quickly, because we don't want to take too long, are some displays. [14:32.420 --> 14:33.660] Let's look at a display. [14:36.100 --> 14:41.820] The easiest thing you can do is control an LED. [14:42.140 --> 14:44.480] Now, this funny little symbol is an LED. [14:44.620 --> 14:47.500] An LED is a little diode, and it's sensitive to light. [14:47.640 --> 14:48.980] And when it does, it emits light. [14:49.760 --> 14:57.780] Unfortunately, if I put eight LEDs in the front of the room, I don't think you would see them very well with that camera blasting, and with these lights on. [14:59.260 --> 15:02.940] So, I put a little buffer in the circuit. [15:03.480 --> 15:05.840] And instead of using LEDs, I'm going to cheat. [15:06.060 --> 15:10.540] Everything's exactly the same as it would be, but I'm cheating because you wouldn't see it. [15:10.600 --> 15:12.100] And I have these lights up here. [15:12.340 --> 15:13.880] And they're running on five volts. [15:13.880 --> 15:19.220] And I hooked up this little circuit that makes the little teeny-weeny voltages coming out of your computer a little stronger. [15:19.800 --> 15:20.920] And that's called a buffer. [15:21.680 --> 15:24.160] All these circuits, by the way, are in the book, so don't write. [15:24.380 --> 15:25.740] It's easy to get copies of them. [15:26.280 --> 15:28.980] And the software is in C, Pascal, and BASIC. [15:29.540 --> 15:34.940] But for the purposes of this audience, after talking to most people, there are some C gurus out there. [15:35.140 --> 15:39.200] But I think we ought to talk in the language of BASIC here, because it might be a little easier. [15:39.200 --> 15:40.720] And it comes on your computer for free. [15:41.440 --> 15:43.040] And let's look at a BASIC program. [15:43.200 --> 15:48.360] How am I going to make these lights light up if I connect them to the printer port? [15:48.600 --> 15:48.940] Hmm. [15:49.280 --> 15:50.300] That looks like a problem. [15:51.140 --> 15:51.920] I don't know. [15:52.000 --> 15:52.660] What should I do? [15:53.040 --> 15:53.940] Well, let's look. [15:54.480 --> 15:55.960] I hope I don't cover the fan. [15:56.200 --> 15:56.360] Okay. [15:58.040 --> 15:58.500] Okay. [15:58.720 --> 16:01.340] How many bits are there on a parallel port? [16:01.540 --> 16:02.660] How many bits are in a byte? [16:04.860 --> 16:05.620] Very good. [16:05.840 --> 16:06.020] Eight. [16:07.860 --> 16:11.480] Usually, we call that bits one through eight. [16:11.700 --> 16:14.460] But in fact, we call them zero through seven. [16:14.940 --> 16:16.480] You don't start with one. [16:16.580 --> 16:17.440] You start with zero. [16:17.640 --> 16:19.060] And we'll talk about why in a minute. [16:19.500 --> 16:21.700] So, we have to light them up. [16:22.980 --> 16:23.980] Well, let's see. [16:25.480 --> 16:28.300] If I send numbers out here, I can light them up. [16:28.420 --> 16:31.920] So, if I send the number one, the first LED will light up. [16:32.680 --> 16:35.080] If I send the number two, this one will... [16:35.080 --> 16:35.780] Where's the zero? [16:35.840 --> 16:35.960] Yeah. [16:36.060 --> 16:37.120] The second one will light up. [16:38.240 --> 16:41.960] And if I send a three, both of them will light up. [16:42.080 --> 16:43.680] How come both of them will light up with three? [16:45.140 --> 16:45.940] It's binary. [16:46.280 --> 16:46.820] It's binary. [16:46.980 --> 16:47.900] We're sending binary. [16:48.220 --> 16:48.780] So, we can... [16:48.780 --> 16:49.940] So, if I want to send... [16:49.940 --> 16:55.120] Let's send every number from zero to 255. [16:56.000 --> 16:56.440] Five. [16:57.020 --> 16:58.940] Because there's 256 different things. [16:59.100 --> 17:00.360] But the first one's a zero. [17:00.580 --> 17:02.440] So, we go from zero to 255. [17:02.780 --> 17:04.520] I want to send every number out there. [17:05.340 --> 17:08.380] How can I send numbers out to the printer port? [17:08.500 --> 17:09.400] Anybody got an idea? [17:09.620 --> 17:11.680] And it's the same no matter what computer you're using. [17:11.780 --> 17:12.560] Let's do it in basic. [17:13.060 --> 17:14.060] How do I do it? [17:15.180 --> 17:15.620] Huh? [17:17.540 --> 17:19.120] Well, we're not ready for out. [17:19.280 --> 17:19.680] I need it. [17:19.780 --> 17:20.440] That's too hard. [17:20.620 --> 17:22.000] Out is kind of a hard construction. [17:22.820 --> 17:25.240] First of all, to do out, you have to know the address. [17:25.620 --> 17:27.180] And that's different on every computer. [17:27.420 --> 17:28.220] What do you want to do, sir? [17:29.680 --> 17:30.240] Print it. [17:30.480 --> 17:32.360] If I print it, it goes to the screen. [17:33.920 --> 17:35.080] L print will do it. [17:35.300 --> 17:35.860] Very good. [17:36.840 --> 17:37.800] You want to kiss too? [17:38.360 --> 17:38.760] No? [17:39.000 --> 17:39.340] Okay. [17:39.960 --> 17:41.020] Let's L print it. [17:46.940 --> 17:47.920] And there you go. [17:47.920 --> 17:59.760] If I simply say L print character 64, it will send the binary number 64 to the parallel port. [18:00.040 --> 18:06.220] If you just send L print 64, it's going to send two little numbers that represent the ASCII. [18:06.340 --> 18:07.760] Because it thinks it's talking to a printer. [18:07.880 --> 18:11.680] And the printer knows that certain numbers, I form certain pixels together. [18:12.080 --> 18:14.000] We just want to send the number 64. [18:14.000 --> 18:17.120] If I send the number 64, how many LEDs will light up? [18:18.140 --> 18:18.820] How many? [18:20.240 --> 18:23.000] If I send the number 64... [18:25.340 --> 18:26.240] Which one? [18:29.040 --> 18:29.660] All right. [18:29.820 --> 18:33.080] The numbers would be 1, 2, 4, 8, 16, 32, 64. [18:33.260 --> 18:34.080] The seventh one. [18:34.080 --> 18:35.800] And it should light up. [18:37.080 --> 18:39.300] Now, I can do the same thing in... [18:39.300 --> 18:40.860] By the way, we're not... [18:40.860 --> 18:41.180] We got... [18:41.180 --> 18:44.560] This is the whole heart of how you do everything I'm going to show you today. [18:44.620 --> 18:46.040] So that's why I'm taking a little time. [18:47.400 --> 18:51.960] L print character 64 will send the number 64 to a printer. [18:53.220 --> 18:56.040] And what happens after you finish printing to a printer? [18:56.180 --> 18:57.700] What does the computer do next? [18:58.700 --> 19:00.640] Sends a carriage return and a line feed. [19:00.640 --> 19:03.200] I don't want to send a carriage return and a line feed. [19:03.460 --> 19:06.060] So in basic, I put this little comma at the end. [19:06.220 --> 19:11.400] And the little comma tells basic, send that number and stop. [19:11.820 --> 19:12.640] Just wait. [19:13.100 --> 19:14.320] Don't go to the next line. [19:14.480 --> 19:14.780] Wait. [19:16.320 --> 19:21.980] So, if you want to do the same thing in Pascal, you use the LST command. [19:21.980 --> 19:23.640] And this works in every version of Pascal. [19:24.720 --> 19:25.680] And you say write. [19:26.920 --> 19:31.140] Now, the semicolon here, if you don't know Pascal, just tells it that I'm at the end of a line. [19:31.280 --> 19:32.860] It has nothing to do with carriage returns. [19:33.620 --> 19:36.320] Write means send this out and wait. [19:36.640 --> 19:38.760] How do you send a carriage return in Pascal? [19:39.940 --> 19:40.600] Write line. [19:40.860 --> 19:41.880] So we're not going to do that. [19:42.620 --> 19:47.320] Now, instead of just sending one line of code, I want to send every combination. [19:47.320 --> 19:47.980] Remember that? [19:48.220 --> 19:52.820] So what I'm going to do is I'm going to say for E equals 0 to 256. [19:54.920 --> 19:56.040] You can't see that? [19:56.220 --> 19:56.940] Okay, I'm sorry. [19:57.740 --> 19:59.300] L print character E. [19:59.600 --> 20:00.120] Wait. [20:00.600 --> 20:02.020] Then do the next number. [20:02.640 --> 20:05.500] Now, that's what's on the screen right now. [20:13.720 --> 20:15.600] That's what's on your screen right here. [20:16.200 --> 20:21.920] And I added another line that says not only print it to there, print it on the screen. [20:21.920 --> 20:23.920] So I said print the number. [20:24.540 --> 20:29.880] And if I did that, it happened so fast that this thing looks like they're all lit at once. [20:29.940 --> 20:31.120] So I had to slow it down. [20:31.300 --> 20:36.640] So I added one more line that says for X equals 0 to 100, next X. [20:36.780 --> 20:38.960] And I just loop around and then go to the next line. [20:39.140 --> 20:47.820] So now if I say alternate R for run and say start, each of these LEDs, I can't see. [20:49.000 --> 20:53.240] Okay, I'm writing every combination now of the LEDs. [20:53.680 --> 20:55.520] And then when it gets to the end, it goes back and does it again. [20:56.420 --> 20:57.380] Does that make sense? [20:57.520 --> 20:59.020] I'm not going to go on if this don't make sense. [20:59.280 --> 21:02.220] Because this is the crux of how you talk to something. [21:02.600 --> 21:05.620] Instead of an LED, all I do is figure out a way to make it more power. [21:05.720 --> 21:06.900] And I can run motors. [21:07.100 --> 21:08.680] I can run crystal displays. [21:08.820 --> 21:10.040] I can run your garage door. [21:10.040 --> 21:11.360] I can make coffee in the morning. [21:11.660 --> 21:12.960] The same instructions. [21:14.000 --> 21:15.420] And I just do something a little different. [21:15.500 --> 21:16.520] Does that make sense, what I did? [21:16.820 --> 21:17.180] Okay. [21:17.780 --> 21:19.060] Then I'm going to stop the program. [21:19.980 --> 21:21.260] It actually stopped itself. [21:21.740 --> 21:24.580] And we're going to see what we can do that's useful besides LEDs. [21:26.600 --> 21:27.660] Let's look at some stuff. [21:27.800 --> 21:28.900] Now we can move a little quicker. [21:32.060 --> 21:34.300] Actually, I did make a drawing up of what I did. [21:34.340 --> 21:35.700] I put that loop in here. [21:35.860 --> 21:36.100] See? [21:36.440 --> 21:38.400] 4A equals 1 divided by 1 just to slow it down. [21:38.960 --> 21:44.560] If you only want to talk to one LED at a time, I've got to send the number out. [21:44.780 --> 21:47.740] 1, 2, 4, 8, 16, 32, 64. [21:47.980 --> 21:48.700] What are those numbers? [21:50.780 --> 21:51.640] Powers of 2. [21:52.140 --> 21:57.600] So what I've got to do is say, LPRINT, 2 to the 0, which is 1. [21:58.060 --> 22:03.500] 2 to the 1st, which is 2, 4, 8, 16, 32. [22:03.900 --> 22:07.920] So if you were to write this line of code, and I'm not going to take the time to type in it. [22:08.520 --> 22:09.620] I don't want to find the disk. [22:09.720 --> 22:10.880] I have all these things on the disk. [22:11.040 --> 22:12.380] But I think you get the idea. [22:12.500 --> 22:13.920] Now I can light one at a time. [22:13.920 --> 22:21.340] So by choosing the correct numbers, and if you don't want to remember the math, make a little array and stick the numbers in it and then just keep calling the array. [22:22.220 --> 22:26.900] You can send out and control any one of those LEDs in any combination you want. [22:28.500 --> 22:30.640] And we're going to do just that. [22:30.980 --> 22:35.100] Instead of just doing regular LEDs, there's a kind of special LED. [22:35.680 --> 22:40.740] And I try and use things you can either buy in the store or you can go to a flea market and get because they're cheap. [22:40.740 --> 22:44.320] And one of the real cheap things is a seven segment display. [22:45.260 --> 22:48.540] This is nothing but LEDs and they're in the shape of a figure eight. [22:48.800 --> 22:51.140] And they're always labeled... [22:51.140 --> 22:51.860] Where's your pen? [22:54.840 --> 22:57.340] Okay, they are always labeled... [22:57.340 --> 22:57.860] I see it. [22:59.760 --> 23:02.500] A, B, C, D, E, F, G. [23:02.700 --> 23:04.980] They're always labeled in that sequence. [23:05.240 --> 23:09.460] So these LED segments always have the same letter. [23:09.640 --> 23:11.860] And when you buy a chip... [23:11.860 --> 23:12.860] What is it? [23:12.980 --> 23:13.240] Laser? [23:13.580 --> 23:14.040] Okay. [23:14.620 --> 23:17.480] No, I like to point to this and face the audience instead of the screen. [23:18.180 --> 23:18.640] Thanks. [23:19.560 --> 23:27.040] When you buy an LED display, seven segment display, they might be in different sequences or different patterns of sockets. [23:27.320 --> 23:32.720] But the socket will always be labeled on the schematic, A, B, C, D, to tell you which one to go to where. [23:32.920 --> 23:34.800] So you can always get the same results. [23:35.720 --> 23:39.220] And all I've done is connected one line to each one of these LEDs. [23:41.060 --> 23:43.680] And I can then light them from my computer. [23:45.920 --> 23:58.280] Now, the reason that the buffer is in there is because when this goes low, the voltage would go from five volts to ground and it would light. [23:58.280 --> 23:59.620] So it's going to light when it's low. [23:59.620 --> 24:00.440] And I don't want that. [24:00.580 --> 24:02.820] So this little buffer turns everything upside down. [24:02.960 --> 24:03.700] It's called an inverter. [24:03.700 --> 24:10.600] And now, instead of going low and lighting, when this goes high, this goes low. [24:10.620 --> 24:11.820] And it does what's called a sink. [24:11.920 --> 24:12.740] It sinks the current. [24:13.620 --> 24:21.460] What happens is transistor circuits do a lot better sinking a circuit to ground than supplying five volts. [24:21.660 --> 24:23.200] So we try and sink things. [24:23.320 --> 24:29.040] So the way this is, I'm going from ground through here, through the LED, and then to five volts. [24:29.040 --> 24:30.240] And we're sinking the current. [24:30.980 --> 24:33.560] I'm not going to...that's as deep as you have to get today. [24:33.780 --> 24:35.980] And then there's a resistor in series with that. [24:36.140 --> 24:41.160] And the reason we have a resistor is so we don't put too much electricity through here and burn out my LED. [24:41.480 --> 24:44.160] The LED will burn before the TTL circuit will burn. [24:44.340 --> 24:46.340] So that's to limit and protect the LED. [24:46.740 --> 24:47.620] Very sensitive. [24:48.720 --> 24:50.220] Okay, what else can we run? [24:51.980 --> 24:56.860] Well, you can now buy liquid crystal displays for about five to ten bucks. [24:57.720 --> 25:00.240] And I figured I ought to put in the book a circuit for them. [25:00.420 --> 25:01.300] And I want you to see. [25:01.820 --> 25:03.140] It's very complicating. [25:03.380 --> 25:04.960] I hope you can appreciate this. [25:05.520 --> 25:06.820] But there's the whole circuit. [25:08.080 --> 25:09.480] That's a liquid crystal display. [25:09.960 --> 25:10.820] That's your computer. [25:11.260 --> 25:13.820] And this is a 50 cent part called a SIP. [25:14.340 --> 25:15.960] Single in-line package. [25:16.360 --> 25:17.860] It's just a bunch of resistors. [25:18.460 --> 25:19.840] And it's just one little thing. [25:19.980 --> 25:21.980] And when it's in the circuit, it would lay this way. [25:22.340 --> 25:24.540] But to draw it in a schematic, we do it this way. [25:24.620 --> 25:26.220] Because if I did it like this, it would look like a mess. [25:26.220 --> 25:27.460] So we draw it like this. [25:27.580 --> 25:30.200] But that's just one little piece of plastic that costs 50 cents. [25:30.320 --> 25:33.640] And it's laying across the wires and connected to each one of them. [25:34.200 --> 25:36.060] And does anyone know why you use... [25:36.060 --> 25:37.240] This is called a pull-up resistor. [25:37.400 --> 25:38.960] Does anyone know why you use pull-up resistors? [25:39.840 --> 25:40.600] Anybody at all? [25:40.880 --> 25:41.580] What do they do? [25:41.660 --> 25:42.040] Yes, sir? [25:42.240 --> 25:43.380] It would be Harold. [25:43.740 --> 25:44.340] Yes, Harold. [25:44.400 --> 25:44.620] Why? [25:46.100 --> 25:46.500] Yes. [25:46.500 --> 25:48.640] It makes a bigger, cleaner signal. [25:48.640 --> 25:55.500] And so if the wire from your computer to your display is over about six inches, this makes it a much cleaner signal. [25:55.540 --> 26:00.500] So we're going from five volts to ground instead of from five volts to two and a half volts, right? [26:00.780 --> 26:01.820] The signal-to-noise ratio is less. [26:02.060 --> 26:03.080] Yes, exactly. [26:03.240 --> 26:04.600] The signal-to-noise ratio is less. [26:05.260 --> 26:10.700] So this little 50 cent part goes in here and now I can send commands to this and I can run a liquid crystal display. [26:11.660 --> 26:13.380] Because of the time, we're not going to do that today. [26:13.380 --> 26:15.560] But I have that on the board. [26:18.160 --> 26:19.560] Okay, I took it off the board. [26:19.660 --> 26:20.060] I lied. [26:20.840 --> 26:22.780] You know what the liquid crystal display are. [26:22.860 --> 26:29.340] The neat thing is that every liquid crystal display, up to two lines of 40 characters, uses the same chip to make it work. [26:29.720 --> 26:32.260] And they all wire to your computer the same way. [26:32.300 --> 26:35.400] So you can make a little liquid crystal display and you're doing a science fair project. [26:35.880 --> 26:37.980] You put a little liquid crystal display on the table. [26:38.120 --> 26:39.900] You don't have to leave out an expensive monitor. [26:40.700 --> 26:42.980] Now no one's going to break anything worth anything. [26:44.320 --> 26:49.520] Okay, and there's two ways that they make connectors, but they both use the same numbering scheme. [26:49.780 --> 26:50.860] Everything's always the same. [26:52.080 --> 26:53.800] Let's look at some other things then. [26:55.700 --> 27:00.480] Other things you can output are musical tones, touch tone signals. [27:00.800 --> 27:01.680] You can make speech. [27:02.680 --> 27:05.060] You can make sine waves, pulse width modulation. [27:07.240 --> 27:10.260] This musical tone is kind of neat, and I'll just show you that. [27:11.040 --> 27:13.680] And because of the time limits, I'm not going to run it. [27:13.840 --> 27:15.160] I don't... I hope I have... [27:15.160 --> 27:17.620] No, I didn't bring the circuit, so we won't do that. [27:18.300 --> 27:22.620] The last thing you can do is drive things that have a lot of power to them. [27:23.520 --> 27:24.860] Here is a computer. [27:25.680 --> 27:27.160] Those are those pull-up resistors. [27:27.400 --> 27:29.440] And this is a buffer, and this is really neat. [27:29.440 --> 27:34.460] These things cost about 80 cents, and I can then connect big loads to it, like a relay. [27:34.940 --> 27:41.500] Now, a relay might take an amp or a half amp, and I only have 15 milliamps at my computer. [27:41.920 --> 27:45.760] This thing takes that teeny-weeny signal and makes it strong, but it does something else. [27:45.900 --> 27:49.260] If anybody ever worked with a relay, they know there's a thing called back EMF. [27:49.260 --> 27:52.760] It can store the energy in the field, and it makes a magnetic field. [27:52.920 --> 28:00.240] And then when you turn off the power, all that magnetic energy shoots right back at you in your circuit, and you get a spark. [28:00.800 --> 28:02.280] That's called the back EMF. [28:03.040 --> 28:12.940] This little thing for 50 cents to a dollar has protection in it to short the back EMF to ground, so that it does not affect your computer. [28:13.060 --> 28:14.240] And you can run DC loads. [28:14.400 --> 28:17.320] And then, of course, with a relay, you could run a much bigger load. [28:17.320 --> 28:19.380] So, for instance, you could use this circuit. [28:19.680 --> 28:25.380] And again, all I'm going to do is say L-print two to the first, L-print two to the second, and I can make any one of these things work. [28:25.460 --> 28:26.620] I can run eight relays at once. [28:27.020 --> 28:31.060] I can take this relay, and they could be switches on a HO train layout, right? [28:32.160 --> 28:36.840] This could be the switch on your garage door opener. [28:37.160 --> 28:42.860] So, your computer could turn your... when you call in or whatever, you could have your computer open your garage door. [28:43.340 --> 28:47.340] It could also be a relay that goes to a coffee pot. [28:47.480 --> 29:01.420] And when the computer, which is using your fax machine and your digital voice mail system, at 7.30 in the morning, it stops what it's doing, it closes a contact, and your coffee starts brewing, and then you have this frozen breakfast with ham and eggs, [29:01.480 --> 29:04.560] and it makes that in the microwave, and everything can be done automatically. [29:05.820 --> 29:07.460] Not healthy, but it works. [29:08.460 --> 29:08.780] Okay. [29:09.120 --> 29:13.840] So, these are pictures of different relays, in case you're wondering what the hell I'm talking about. [29:14.260 --> 29:14.540] Okay. [29:15.340 --> 29:17.180] There's a very special relay. [29:17.840 --> 29:19.460] A very special relay. [29:21.140 --> 29:22.200] And you know what? [29:22.320 --> 29:23.640] You know what's in this relay? [29:23.880 --> 29:24.980] A little tiny LED. [29:25.240 --> 29:27.780] Just like we were using here, there's a little LED in this. [29:27.940 --> 29:28.580] You know why? [29:28.580 --> 29:42.820] Because when you send out an L-print command, this LED goes on, and it sends a little light beam to a little transistor that's sensitive to light, and you're talking on a light beam between the low power end and the high power end. [29:42.980 --> 29:45.960] The high power end connects to your... it plugs in the wall. [29:46.280 --> 29:51.400] So, in fact, here's a solid-state relay, and I'm operating 110 volts, a blender. [29:51.400 --> 29:53.960] Usually, I bring a saber saw, and I plug it in. [29:54.420 --> 30:08.440] Right here is a solid-state relay, and the little black plastic thing with the four leads, that's the solid-state relay. [30:08.700 --> 30:11.960] What's really neat about it, it already has a heatsink on it. [30:12.540 --> 30:15.500] It already has an LED, an optocoupler on it. [30:15.500 --> 30:21.040] So, you can run 200 amp circuits, like the lights in a movie theater. [30:21.040 --> 30:23.240] You want to do a stage production in your church. [30:23.940 --> 30:29.560] You just run one of these things to each of these pins, and you can have eight different colored things running. [30:29.820 --> 30:32.780] And these relays list for about 20, 25 bucks. [30:33.400 --> 30:36.260] You can get them in a flea market from a dollar to two dollars. [30:36.320 --> 30:44.100] If you go to a ham fest or a computer show like Trenton Computer Festival, which is near here, or one of the others. [30:44.780 --> 30:50.240] So, they're very popular, they're very easy to get, and they're very safe. [30:50.240 --> 30:54.440] If you're running an AC load, you have to use a solid, an optocoupler. [30:54.600 --> 30:56.760] You don't run that directly from your computer. [30:58.820 --> 31:01.840] Let me just, so I don't burn anything. [31:02.700 --> 31:04.300] I got a loose ground somewhere. [31:05.280 --> 31:05.760] Okay. [31:06.280 --> 31:11.940] That's for one kind of optocoupler, and it somehow got mixed with what should have... [31:11.940 --> 31:12.600] No, it didn't either. [31:12.660 --> 31:13.480] I just left it out. [31:13.640 --> 31:14.020] Never mind. [31:14.880 --> 31:16.780] The other thing you can control... [31:17.960 --> 31:20.760] I cut this down because of the time limitation. [31:20.760 --> 31:21.400] I apologize. [31:21.980 --> 31:25.820] The other thing you can control is motors, and the very popular motor is a stepping motor. [31:28.400 --> 31:29.880] Stepping motor is right here. [31:29.980 --> 31:30.640] This is a little one. [31:31.680 --> 31:34.540] And perhaps if we have time at the end, I'll load that program. [31:34.540 --> 31:37.900] Again, you're just saying L print one, two, three, and four. [31:38.100 --> 31:42.880] And this thing has four windings, and you're controlling the four windings. [31:43.000 --> 31:47.240] But a very special stepping motor is called bipolar. [31:47.240 --> 31:56.980] What that means is, I can send electricity in this direction, and then I can send it in the other direction, and this thing will move an increment each time. [31:57.280 --> 32:09.400] The reason bipolars are so much more popular than the kind that have four windings when used to, is because you're using four times as much power to run as one that has one winding of the four running at once. [32:09.400 --> 32:13.480] Here I'm using all the windings all the time, so I get a lot more strength from a little motor. [32:14.740 --> 32:23.940] Most people do not publish circuits for this, because the circuit requires that you use bipolar circuitry, and people don't realize you can get that whole thing on one little chip. [32:24.840 --> 32:34.240] All I'm doing here is sending out the binary number 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, and this thing goes through its four combinations automatically from this chip. [32:34.680 --> 32:39.840] And since I'm only using two bits, I could have three more of these things, and I could have three more stepping motors. [32:39.980 --> 32:44.060] I could run four stepping motors from one parallel printer port very, very safely. [32:45.240 --> 32:52.640] This thing supplies the plus and the minus and the voltage reversals, and it even has its own built-in heat sink to take care of dissipate heat. [32:53.000 --> 32:54.260] So you can run a stepping motor. [32:54.340 --> 32:55.320] Now why stepping motor? [32:55.380 --> 32:59.580] You see, when I give it those commands 0, 1, 2, 3, 0, 1, 2, 3, I know where the motor is. [32:59.580 --> 33:05.560] Your printer knows where it is every time it advances the paper. [33:05.940 --> 33:09.660] That's because it's a stepping motor that advances it, and it goes so many steps. [33:10.280 --> 33:14.100] The thing that goes back and forth is a stepping motor, and it knows where it is. [33:14.180 --> 33:16.620] It goes back and forth because it's going a special increment. [33:16.880 --> 33:25.460] And just to make sure, they put a little LED or something at the end to know when it reaches a limit, and they send that information back to the computer to tell it where to start. [33:25.600 --> 33:28.160] But basically, it runs without any feedback. [33:28.180 --> 33:29.360] That's why they're so neat. [33:29.360 --> 33:30.220] They're cheap. [33:30.440 --> 33:31.680] These things cost $3, $4. [33:32.620 --> 33:34.960] The control is about $3, $4 or $5. [33:35.520 --> 33:37.560] And you could make a plotter. [33:37.640 --> 33:39.160] You could make a robotic arm. [33:39.320 --> 33:44.480] You could replace the motors in a Lego set and make something that you can really control. [33:45.280 --> 33:45.820] Okay? [33:46.780 --> 33:48.740] That's why stepping motors are so neat. [33:51.120 --> 33:54.720] And here is one of the most complicating circuits. [33:55.880 --> 33:56.640] Oh well. [33:57.440 --> 34:00.460] I will show some more things demonstrating when we do inputs. [34:00.840 --> 34:05.480] This is one of the most sophisticated and most difficult circuits that I put in my book. [34:06.200 --> 34:07.540] Isn't that complicating? [34:08.740 --> 34:09.720] Yes, it is. [34:10.060 --> 34:15.380] This is those little remote control motors they use in model airplanes and in boats. [34:15.380 --> 34:20.000] And when you send a little joystick you set the position of this motor. [34:20.180 --> 34:24.240] This motor only goes between 0 and 80, 180 degrees. [34:24.760 --> 34:26.240] It's called a servo motor. [34:26.940 --> 34:30.060] Now, to make that sucker do that, that's a DC motor. [34:30.200 --> 34:34.240] To make that sucker go to a position and stay there is not an easy task. [34:34.380 --> 34:42.080] As a matter of fact, it's so complicating that inside here is a large scale integration circuit that controls this thing. [34:43.100 --> 34:44.580] It's really complicating. [34:44.720 --> 34:48.920] However, I don't know any of that because I just buy this for 10, 15 bucks and I connect it. [34:49.260 --> 34:53.700] All I've connected is plus 5 volts ground and a signal to my parallel port. [34:53.900 --> 34:56.860] Now, here we're doing something a little complicating. [34:56.980 --> 35:01.500] And since this is so elegant, I'm going to just go into a little detail of what I did here. [35:03.440 --> 35:06.540] In every single IBM, there is a timer. [35:06.920 --> 35:11.100] And in every single IBM, that timer chip goes at the same speed. [35:11.100 --> 35:16.380] If you've got a Pentium, it's going at the same speed as one that goes in an XT. [35:16.680 --> 35:20.800] It's the same chip with the same timer with the same clock speed. [35:20.980 --> 35:28.500] So I went to assembly language and I figured out how long it would take for that timer to read one millisecond. [35:30.340 --> 35:34.080] Okay, and how long it would take to read one hundredth of a millisecond. [35:36.080 --> 35:45.980] This motor to run wants to see a signal go bloop for exactly .5 milliseconds to two and a half milliseconds. [35:46.620 --> 35:49.720] However long that signal is... [35:49.720 --> 35:53.280] Right, and so obviously if I want to use a pen, I won't see it. [35:56.040 --> 36:00.240] If the signal is positive for a half a millisecond, that's zero. [36:00.420 --> 36:03.820] If the signal is positive for two and a half milliseconds, that's 180 degrees. [36:04.080 --> 36:07.760] So however long it's up, that's where this thing goes. [36:07.800 --> 36:09.800] And you have to repeat it every 40 milliseconds. [36:10.080 --> 36:13.760] This is .5 to two and a half milliseconds. [36:14.720 --> 36:18.040] Repeat it every 40 milliseconds and you can control this thing. [36:18.040 --> 36:19.640] We went to assembly language. [36:19.740 --> 36:20.960] This is the only one in the book. [36:21.080 --> 36:22.080] We went to assembly language. [36:22.480 --> 36:25.680] So the circuit is only in Pascal and C. [36:25.680 --> 36:27.100] It is not in Quick Basic. [36:28.440 --> 36:38.020] And because we went and used a timer chip and we went to assembly language, this circuit will work on any IBM-type computer regardless of what model it is. [36:38.320 --> 36:46.640] Yes, I know there are elegant ways to time things, but this one works on anything and with one set of instructions. [36:48.160 --> 36:50.780] Okay, now we are going to look at some inputs. [36:51.060 --> 36:55.480] And this time, I am going to be able to run something you are going to like, I hope. [36:56.500 --> 36:59.840] There are different kinds of things you can run and the first is digital. [37:00.760 --> 37:05.700] And I am not going to demonstrate that, but I want to just show you. [37:07.400 --> 37:15.680] Your parallel port on any IBM-type computer, which is 90-some percent of the market, is not one address but three. [37:15.680 --> 37:20.760] So this is where all that data goes out, that L-print, one, two, four, eight, sixteen. [37:21.360 --> 37:24.360] This is where it sends in information to the computer. [37:24.960 --> 37:25.980] Paper is out. [37:26.180 --> 37:27.000] I got an error. [37:27.920 --> 37:29.360] You have five bits there. [37:29.500 --> 37:33.280] And you got another four bits down here for other instructions. [37:33.280 --> 37:37.720] So what I said was, let's take these top four and these low four. [37:37.860 --> 37:41.180] We read them in and use a logic instruction called OR. [37:42.440 --> 37:43.440] Bring them together. [37:43.780 --> 37:44.800] These four and these four. [37:45.000 --> 37:45.960] Let's see, four and four. [37:46.040 --> 37:46.460] That's eight. [37:46.680 --> 37:49.620] I got a byte of information from these four and these four. [37:50.360 --> 37:51.060] Guess what? [37:51.300 --> 37:54.840] I got a byte coming in and I got eight control lines going out. [37:54.840 --> 37:57.600] I can rule the world with that parallel port. [37:57.960 --> 37:59.240] Let's look at what you can do. [38:12.950 --> 38:15.770] You could put a burglar alarm in your house, okay? [38:16.750 --> 38:21.950] And with this burglar alarm in your house, it goes to a little metal cabinet. [38:22.170 --> 38:27.150] And in that metal cabinet is something that calls the police, calls the fire department, whatever. [38:28.290 --> 38:31.690] Well, there's also what's called a dry contact in there. [38:32.530 --> 38:35.290] And we can take the dry contact right here. [38:36.270 --> 38:45.610] And when the alarm goes off, we can have it go to that little pin on the parallel port and tell the computer, bingo, there's an alarm. [38:46.810 --> 38:48.130] And so I did that. [38:49.470 --> 38:52.490] Here is a switch, normally closed. [38:54.010 --> 38:55.430] It's going to the printer port. [38:56.570 --> 38:57.990] Anyone ever use Sidekick? [38:58.150 --> 39:00.270] You hit a hot key and up pops this great menu. [39:00.770 --> 39:02.190] Ever use a TSR? [39:02.690 --> 39:03.930] Know what a TSR is? [39:04.070 --> 39:06.090] You hit a hot key and something pops up. [39:06.150 --> 39:08.370] It's another program in DOS, not Windows. [39:08.650 --> 39:10.270] And it pops up and it works. [39:10.970 --> 39:13.210] Terminate and stay resident. [39:13.770 --> 39:17.450] This is a hardware interrupt, terminate and stay resident. [39:17.590 --> 39:20.210] I've seen it published in many places and they never worked. [39:20.730 --> 39:24.290] It took me one hour to write this sucker in Pascal. [39:24.290 --> 39:26.870] It took another week to get it to run in C. [39:27.090 --> 39:28.210] And I know C. [39:28.870 --> 39:30.930] This is not a trivial program. [39:31.150 --> 39:37.350] What I've done is, if you push this button and you've got a fax going online and you've got a voicemail and the alarm goes off. [39:37.590 --> 39:43.130] When this switch opens, the computer stops what it's doing from a hardware interrupt and it does something else. [39:43.130 --> 39:49.630] In my house, I have X10 things from Radio Shack on all the lights in the hallway. [39:49.630 --> 39:51.770] And they all use the same code. [39:52.730 --> 39:56.750] And I have an FM wireless intercom on every floor. [39:57.330 --> 40:03.090] And I connect that to my sound blaster so that my computer can talk through the intercom. [40:03.710 --> 40:12.090] When the alarm goes off and the police have been notified, the computer takes over and it starts flashing all the lights in the halls. [40:12.410 --> 40:16.610] And all the intercoms start saying in a computerized voice, alert, alert. [40:16.970 --> 40:18.270] Intruder is in the house. [40:18.650 --> 40:21.410] Now, if you are an intruder, what are you going to do? [40:22.650 --> 40:23.910] I think they'll leave. [40:24.610 --> 40:28.950] At any rate, I live in a very nice neighborhood and it hasn't really been needed yet. [40:30.010 --> 40:33.230] You have to find the computer to disconnect all this. [40:33.710 --> 40:36.190] In the meantime, it doesn't go off until the police have already been notified. [40:36.470 --> 40:37.570] So they know the jig's up. [40:37.970 --> 40:40.170] And hopefully, they'll leave without breaking the windows. [40:41.150 --> 40:43.690] But that's a terminate and stay resonant use. [40:44.910 --> 40:49.710] The idea is that your computer is doing one thing and it'll stop and do something else. [40:53.350 --> 40:55.870] And you actually... [40:57.430 --> 40:58.630] Here's what I wanted to show. [40:58.870 --> 40:59.030] Okay. [40:59.230 --> 41:00.330] We're getting to the end here. [41:04.550 --> 41:05.690] We'll do it real quick. [41:05.850 --> 41:07.450] You can input all kinds of stuff. [41:07.990 --> 41:09.710] You could input a bunch of buttons. [41:09.910 --> 41:10.710] Now, I know what you're thinking. [41:10.730 --> 41:13.110] Why not just connect the button right to the printer port? [41:13.350 --> 41:17.070] Well, the problem is buttons, mechanical buttons have what's called... [41:18.210 --> 41:19.510] Harold, you heard this before. [41:20.390 --> 41:21.650] You got all the right answers. [41:22.310 --> 41:23.310] It has bounce. [41:23.450 --> 41:25.610] When it closes, it really goes like this. [41:25.690 --> 41:26.270] And then it closes. [41:26.610 --> 41:29.050] And your switch is not making a good connection. [41:29.210 --> 41:34.030] So you have to build a circuit that will de-bounce the switches. [41:34.450 --> 41:41.630] Or you can buy a little chip for a dollar that allows you to input 16 here and another 16 if you have one little transistor. [41:42.490 --> 41:47.670] And all these 16 inputs then become a binary number and they're coming into the parallel port. [41:47.670 --> 41:49.530] So I can read a whole keypad. [41:49.710 --> 41:51.130] Now you've got a science fair project. [41:51.850 --> 41:56.790] Instead of putting your keyboard on the table and letting someone break it, right? [41:57.450 --> 42:01.050] You put some bulletproof microswitches out there. [42:01.470 --> 42:03.010] Connect them to a dollar chip. [42:03.250 --> 42:04.630] Run that to the parallel port. [42:04.710 --> 42:05.950] The computer is under the table. [42:06.230 --> 42:09.770] The only thing on the table are these little buttons that are bulletproofed. [42:10.090 --> 42:11.750] And your liquid crystal display. [42:11.910 --> 42:13.030] Remember the liquid crystal display? [42:13.030 --> 42:18.210] And now you can interact with a person and your computer doesn't get burnt. [42:19.770 --> 42:21.810] That's why we do these things. [42:22.870 --> 42:26.610] Another thing you can do is read the position of things. [42:26.950 --> 42:34.130] This is a little LED and it sends a light beam across to a transistor that's sensitive to light. [42:34.470 --> 42:36.090] You can see that right there. [42:36.970 --> 42:42.830] And one of the science teachers in my school got one where the distance between here is about a quarter inch. [42:43.030 --> 42:46.310] You put that over your earlobe and you can measure your pulse. [42:46.530 --> 42:48.270] It'll go boom, boom, boom, right on the screen. [42:50.050 --> 42:51.090] Does that look familiar? [42:51.370 --> 42:52.990] You buy any of these exercise machines. [42:52.990 --> 42:56.370] They charge you about 20, 30 bucks for this little thing that clips on your ear. [42:56.970 --> 42:57.950] That's all it is. [42:58.010 --> 42:59.090] It's a 50 cent part. [43:00.290 --> 43:03.610] And, of course, you could read the position of a motor or the speed of a motor. [43:03.850 --> 43:06.290] You could read something and how fast it's going. [43:06.550 --> 43:09.650] All kinds of stuff with a 50 cent optocoupler. [43:10.630 --> 43:12.110] And that brings us... [43:12.110 --> 43:14.630] There's other ones that we can use. [43:14.810 --> 43:20.230] But the most interesting, and I'm going to demonstrate this, I promise, is inputting analog. [43:20.230 --> 43:21.550] I want to input a temperature. [43:21.810 --> 43:22.690] I want to input a voltage. [43:23.250 --> 43:25.670] And to do that, I'm going to leave this program. [43:25.670 --> 43:27.430] And I think you can see what I'm doing. [43:27.830 --> 43:29.130] I'm saying quit. [43:31.290 --> 43:31.690] Okay. [43:32.270 --> 43:35.870] You're supposed to say load file is not saved. [43:35.970 --> 43:36.590] Do I want to load it? [43:36.710 --> 43:36.970] No. [43:37.610 --> 43:38.330] We left it. [43:38.410 --> 43:43.410] And I'm going to load a program called Lab Windows, which I was demonstrating outside. [43:43.510 --> 43:45.130] And you'll see how nice this is. [43:46.530 --> 43:54.390] This program costs $1,000, but there is a student version, which they distribute under certain conditions for free. [43:55.810 --> 43:59.950] They've allowed me to distribute it for free with my book, which was a very nice compliment. [44:00.290 --> 44:01.690] And this is a big program. [44:01.690 --> 44:04.710] It takes two megs of memory, and it is now in the computer. [44:04.850 --> 44:07.010] Can you see a cursor moving on the screen? [44:07.610 --> 44:08.010] Okay. [44:08.150 --> 44:09.530] Otherwise, I look kind of stupid. [44:09.690 --> 44:10.250] And what are you doing? [44:10.430 --> 44:14.510] But I'm going to the file section, and I'm going to load a file. [44:15.850 --> 44:17.630] And I wrote a program. [44:19.830 --> 44:20.310] Okay. [44:20.530 --> 44:21.450] And I'm going to load it. [44:21.630 --> 44:22.730] And this is Lab Windows. [44:22.930 --> 44:23.850] And I'll explain what it is. [44:24.190 --> 44:28.090] Lab Windows will work in Basic, and it will work in Pascal. [44:31.270 --> 44:35.410] And I want to get this little circuit and show it to you working. [44:36.390 --> 44:38.570] So all we've got to do is figure out where we put it. [44:42.050 --> 44:42.490] And... [44:42.490 --> 44:43.130] Oh, boy. [44:47.310 --> 44:47.750] Okay. [44:47.950 --> 44:48.510] Here we go. [44:49.870 --> 44:51.010] This isn't the one. [44:51.270 --> 44:51.790] Here it is. [44:51.970 --> 44:52.250] Okay. [44:52.510 --> 44:53.830] I build a little prototype. [44:54.090 --> 44:58.050] Every circuit in the book, I build a little prototype board with Radio Shack parts, usually. [44:58.050 --> 44:59.610] And then I tried it. [44:59.690 --> 45:00.490] Then I wrote the software. [45:00.630 --> 45:05.730] Then I wrote a circuit using pads, which again, makes a shareware student version, which is free. [45:06.350 --> 45:11.170] And you can draw circuits, push a button, and it will route a circuit board for you. [45:12.130 --> 45:13.030] Not bad, huh? [45:14.410 --> 45:14.810] Okay. [45:18.390 --> 45:19.990] I've unplugged all that stuff. [45:20.430 --> 45:22.750] And I've got a little printer cable going to my printer. [45:24.090 --> 45:25.890] And I'm going to plug in this circuit board. [45:28.010 --> 45:29.670] It blows up in deep trouble. [45:31.670 --> 45:34.130] And it won't plug in because there's an adapter you need. [45:34.250 --> 45:34.630] And I don't... [45:34.630 --> 45:35.490] What do I do with the adapter? [45:37.550 --> 45:38.710] Okay, here's the adapter. [45:44.500 --> 45:47.380] I'm used to a mic that clips on here, so I'm sorry. [45:49.880 --> 45:50.960] Yeah, I keep... [45:50.960 --> 45:51.900] Well, it won't reach over here. [45:52.820 --> 45:53.840] Now he tells me. [45:54.440 --> 45:54.960] Okay. [45:55.660 --> 45:57.380] That little circuit... [45:57.380 --> 46:00.560] By the way, no circuit that I designed costs more than $20. [46:01.100 --> 46:02.100] Most of them are under $10. [46:02.820 --> 46:05.080] And this circuit costs about $4. [46:05.980 --> 46:07.620] If you build circuits... [46:07.620 --> 46:10.600] And I'm going a little advanced here. [46:11.140 --> 46:13.880] Don't use those little things with holes in it. [46:14.000 --> 46:15.340] Those white things in the wire. [46:15.520 --> 46:18.260] You drop it once on the floor and that's the end of it. [46:18.700 --> 46:21.580] The other problem is they only work up the frequencies of audio. [46:22.640 --> 46:25.940] If you go above audio, 20,000 cycles, it's worthless. [46:27.300 --> 46:33.620] If you use wire wrap, which is very expensive, it is no good above audio. [46:35.680 --> 46:42.160] So, when I look at the data specs on A to D converters, they tell you don't wire wrap. [46:43.040 --> 46:46.380] So, you might get away with it with a circuit, but they are not designed for anything. [46:46.680 --> 46:55.380] All those little windings will get a little bit of electrolytic corrosion on them, which causes it to become a capacitor. [46:55.380 --> 46:57.040] And all of a sudden, you got leakage currents. [46:58.120 --> 46:58.560] Okay. [46:58.760 --> 46:59.880] This circuit costs $5. [47:00.200 --> 47:04.060] What I have done is put a volume control on here. [47:04.660 --> 47:06.980] And the volume control makes 0 to 5 volts. [47:08.180 --> 47:14.200] And I'm going to read that analog value into a little chip that costs $4. [47:14.200 --> 47:16.100] It's ADC0804. [47:16.100 --> 47:19.540] That converts it to binary, 8 bits. [47:19.820 --> 47:22.080] And the cable brings it into my little laptop. [47:22.620 --> 47:25.700] And I'm going to read that number and display it on the screen. [47:26.880 --> 47:28.520] Why do I want to do a voltage? [47:28.740 --> 47:33.840] Well, many chips are designed for under a dollar that take a temperature. [47:34.420 --> 47:37.040] And it will divide the temperature into a voltage. [47:37.480 --> 47:40.940] You can read a frequency and divide it into a voltage. [47:41.460 --> 47:41.980] Right? [47:42.420 --> 47:45.100] You can take resistance. [47:45.120 --> 47:46.420] You can take pressure. [47:46.700 --> 47:47.220] All these things. [47:47.360 --> 47:48.840] So, if you want to do a science experiment. [47:49.020 --> 47:50.520] You want to read something in your computer. [47:51.020 --> 47:51.740] Read it in. [47:52.460 --> 47:53.620] Let's run the program. [47:55.620 --> 47:57.000] I guess that doesn't do it. [47:57.220 --> 47:57.860] How about this? [47:58.120 --> 47:59.240] Alternate run should do it. [47:59.300 --> 47:59.840] This is basic. [48:00.260 --> 48:01.940] You can write this in basic or C. [48:02.040 --> 48:02.740] The same program. [48:03.200 --> 48:05.560] I now have a beautiful little screen. [48:05.740 --> 48:08.200] This is lab windows for DOS. [48:08.340 --> 48:09.600] I do not like windows. [48:09.820 --> 48:10.900] This is a DOS program. [48:10.900 --> 48:15.700] And my cursor is over this that says I am using a monochrome graphics card. [48:16.300 --> 48:19.400] Unfortunately, there is no monochrome graphics card in a laptop. [48:19.400 --> 48:21.780] It is a color computer card. [48:21.780 --> 48:26.200] So, I have to switch to the printer port that comes with my computer. [48:26.840 --> 48:27.280] Okay? [48:27.340 --> 48:29.000] I wrote this whole thing in an hour. [48:29.740 --> 48:35.280] Now, we are on the color cards printer port. [48:35.740 --> 48:41.540] And when I turn this dial, you should be seeing a varying voltage displayed as a voltage. [48:42.160 --> 48:44.300] It is also being displayed in binary. [48:44.760 --> 48:46.660] It is also being displayed on a chart reader. [48:47.780 --> 48:50.260] All those things it is doing are icons. [48:50.260 --> 48:54.680] This is the visual basic for data acquisition. [48:55.180 --> 48:57.520] And this program is $1,000. [48:57.560 --> 49:00.880] They make a student version which they allow me to distribute with the book. [49:01.260 --> 49:03.720] And why it is so great is... [49:04.740 --> 49:06.240] Let me just show you that. [49:06.240 --> 49:11.620] I made this in one hour because if I go to this window... [49:11.620 --> 49:13.240] If I could see the black and white cursor... [49:15.040 --> 49:15.920] Options, Interface... [49:15.920 --> 49:18.280] And I am going to load the screen. [49:18.500 --> 49:20.000] To show it to you how easy it is. [49:20.540 --> 49:21.540] So, there is a file. [49:21.820 --> 49:23.980] In the upper left is your file. [49:24.860 --> 49:26.100] This program is fantastic. [49:26.100 --> 49:26.920] I love it. [49:27.460 --> 49:28.160] I will load it. [49:29.060 --> 49:31.500] And now I will load my analog. [49:34.420 --> 49:36.360] And you got to say select I guess. [49:37.660 --> 49:39.380] This is the screen that I developed. [49:39.600 --> 49:41.200] Each one of these is a variable. [49:41.440 --> 49:42.880] That I call D0. [49:43.620 --> 49:45.320] This one I call D1. [49:45.860 --> 49:47.200] This is what I call that one. [49:47.660 --> 49:52.400] And in fact, this is just an icon. [49:52.660 --> 49:53.820] And it has a number. [49:54.020 --> 49:56.880] And you tell it what the biggest number you want to send it is. [49:56.960 --> 49:58.960] You tell it what the littlest number you want to send it is. [49:59.060 --> 50:00.120] And it puts the scale in. [50:00.120 --> 50:02.560] The mouse, I never wrote a line of code. [50:02.740 --> 50:03.820] It knows what a mouse is. [50:03.920 --> 50:05.180] It knows how to read a mouse. [50:05.920 --> 50:07.560] The program does everything. [50:08.400 --> 50:11.820] So, when you design a circuit where you want to control a motor. [50:11.980 --> 50:13.560] Put a slide switch on the screen. [50:13.760 --> 50:15.720] And when you move the slide switch with your cursor. [50:16.720 --> 50:17.780] You read that number. [50:18.200 --> 50:19.400] And the motor will work. [50:19.520 --> 50:24.420] And you can control the speed from a beautiful graphical user interface. [50:24.740 --> 50:25.160] GUI. [50:25.780 --> 50:27.260] And that is what that thing does. [50:28.540 --> 50:33.680] So, what I've tried to show you in the last couple minutes. [50:35.440 --> 50:35.880] Okay. [50:36.020 --> 50:36.840] There is one other thing. [50:36.980 --> 50:38.400] That's an 8-bit A to D. [50:39.020 --> 50:42.540] I actually go as far as 8 channels of A to D. [50:42.720 --> 50:44.220] These are 8 different voltages. [50:44.220 --> 50:48.100] So, instead of having one little pot, you could have 8 pots. [50:48.380 --> 50:49.780] And for all 8 temperatures. [50:49.920 --> 50:50.620] All your fish tanks. [50:50.700 --> 50:51.920] You could monitor all their temperatures. [50:52.160 --> 50:54.420] And then have little valves put in the heater. [50:55.080 --> 50:56.580] And all you got is the chip. [50:57.460 --> 50:58.460] The printer port. [50:58.760 --> 50:59.660] And a little buffer. [50:59.800 --> 51:00.540] Which you really don't need. [51:00.640 --> 51:01.980] And a thing called an oscillator. [51:01.980 --> 51:03.400] And that costs $3. [51:03.520 --> 51:07.220] So, for about $10, you can build an 8-channel, 8-bit A to D. [51:07.620 --> 51:11.100] I have seen this in radio electronics for $99.95. [51:11.220 --> 51:12.900] From three different manufacturers. [51:13.180 --> 51:14.100] This circuit. [51:14.460 --> 51:15.760] That's what they're selling you. [51:15.880 --> 51:18.540] And all it takes is about $8 to $10 in parts. [51:19.220 --> 51:21.040] And, of course, you don't wire wrap it. [51:21.140 --> 51:21.240] Right? [51:21.900 --> 51:22.160] Right. [51:22.340 --> 51:30.240] Because this is going at 500,000 cycles a second. [51:30.560 --> 51:32.860] And wire wrap doesn't work that high. [51:33.820 --> 51:34.300] Reliably. [51:35.600 --> 51:36.080] Okay. [51:36.480 --> 51:38.100] So, what I've tried to do. [51:39.220 --> 51:41.420] And I'll just do this real quick. [51:42.640 --> 51:47.540] Is I've tried to show you that there are different things that you can control with your computer. [51:47.540 --> 51:49.240] You can input information. [51:49.460 --> 51:50.600] You can output information. [51:50.860 --> 51:52.880] You never have to open the hood. [51:53.040 --> 51:55.640] All you do is you plug into the printer port. [51:55.780 --> 52:02.320] And by doing that, you have very, very high degree of portability going from one place to another. [52:03.460 --> 52:05.260] A very simplistic method. [52:05.500 --> 52:06.240] It's very easy. [52:06.260 --> 52:07.140] And it's very portable. [52:07.480 --> 52:09.080] Any language you want to use. [52:09.160 --> 52:09.360] C. [52:09.500 --> 52:10.080] Even C. [52:10.220 --> 52:10.640] Pascal. [52:10.920 --> 52:11.260] Basic. [52:11.420 --> 52:11.880] COBOL. [52:11.880 --> 52:13.200] If you're really a masochist. [52:13.560 --> 52:15.540] They all have printer control. [52:15.820 --> 52:16.340] Right? [52:19.520 --> 52:23.640] And I've tried to show you the simplicity of the interfacing. [52:23.840 --> 52:26.040] Now, I've been talking for about 45 minutes. [52:26.160 --> 52:28.260] Does anybody have a question? [52:28.660 --> 52:30.820] I know that you're burning to say something. [52:30.960 --> 52:31.360] Yes, sir. [52:34.650 --> 52:35.470] Very good. [52:35.610 --> 52:39.010] The 0804, we get about 10,000 cycles per second. [52:39.550 --> 52:43.490] And you might have to go to assembly language to realize that if you're going to do a lot of display. [52:44.170 --> 52:48.310] And I just finished an article for Micro Computer Journal for November, December. [52:48.310 --> 52:55.190] I'm using a max 150, 500,000 samples a second. [52:55.710 --> 52:57.970] With that, you can take digital audio. [52:57.970 --> 52:59.030] You can read it in. [52:59.210 --> 53:00.990] And if you can do it and save it. [53:01.630 --> 53:02.830] And I even have... [53:02.830 --> 53:06.950] And also, it's an 8-bit that goes at 250,000 samples per second. [53:06.950 --> 53:11.330] At that point, you could have stereo or quad, whatever they call it, you know, surround sound. [53:11.550 --> 53:16.550] You could be recording the whole thing in real time and saving it and making your own recordings. [53:17.750 --> 53:23.230] The parallel port is whatever you hear the ratings are for serial, multiply it by 10. [53:23.410 --> 53:24.770] And that's what it is for parallel. [53:25.550 --> 53:29.590] Because you're reading it all in at once instead of 11 bits in a stream. [53:30.470 --> 53:31.550] Any other questions? [53:32.050 --> 53:33.370] We do have a couple minutes. [53:33.610 --> 53:34.770] Yes, right in the back. [53:44.320 --> 53:45.140] Oh, yeah. [53:45.480 --> 53:46.620] That was one of the beauties. [53:46.780 --> 53:47.680] You got a good... [53:47.680 --> 53:48.580] That's a good question. [53:49.440 --> 53:50.920] I'm sorry I didn't... [53:50.920 --> 53:52.880] You know, I was so rushed to get here. [53:53.040 --> 53:53.560] And I left out. [53:53.660 --> 53:55.080] That was a very important concept. [53:55.280 --> 53:55.620] Thank you. [53:56.700 --> 53:59.820] This is a beautiful elegance of simplicity. [53:59.820 --> 54:01.360] How easy it is to talk to the printer. [54:01.960 --> 54:06.020] The computer, when you say L print, thinks it's talking to a printer. [54:06.160 --> 54:07.740] Another gentleman over here said use out. [54:08.040 --> 54:11.920] You can do that if you know what the address is. [54:12.060 --> 54:12.760] And it gets a little... [54:12.760 --> 54:15.400] When you input, you have to use the out and the INP. [54:16.340 --> 54:18.840] What I did, sir, was to... [54:18.840 --> 54:20.500] You see this little resistor here? [54:21.200 --> 54:23.440] And there's another one, I think, somewhere. [54:24.580 --> 54:26.020] This acknowledged pin... [54:26.020 --> 54:27.020] I'm sorry, it's over here. [54:27.200 --> 54:28.100] Here's the other resistor. [54:28.240 --> 54:29.780] These resistors cost about two cents. [54:30.400 --> 54:32.720] And I connected these two lines to ground. [54:33.000 --> 54:36.540] And by doing that, the computer thinks it's talking to a printer. [54:36.540 --> 54:38.740] You need to add two little resistors. [54:39.040 --> 54:40.640] And two wires are shorted to ground. [54:40.820 --> 54:45.360] And at that point, when you say L print, the computer thinks it's online and it has paper. [54:45.520 --> 54:46.580] And there's no errors. [54:46.620 --> 54:47.920] And all those lines are correct. [54:48.820 --> 54:49.880] Any other questions? [54:50.240 --> 54:50.860] Yes, sir. [54:54.330 --> 54:56.410] In four minutes, it will be one hour. [54:56.730 --> 54:57.330] Thank you. [54:57.570 --> 54:57.990] Yes, sir. [55:04.920 --> 55:07.220] Yeah, LM12034 and all, they make temperature. [55:07.440 --> 55:09.920] You can buy a temperature sensor that is linear. [55:10.500 --> 55:13.360] And it's 10 millivolts per degree. [55:14.760 --> 55:17.280] And they give it calibrated in centigrade. [55:17.800 --> 55:20.060] And with an A, it's in Calvin. [55:20.300 --> 55:24.000] And with a B, it's in Fahrenheit. [55:25.060 --> 55:26.500] And they're all about a buck. [55:27.980 --> 55:29.020] Any other questions? [55:29.180 --> 55:29.900] I think it's an LM. [55:30.000 --> 55:30.780] I don't remember. [55:30.920 --> 55:33.760] I think it's LM134, 234, and 334. [55:34.120 --> 55:35.240] Any other questions? [55:38.000 --> 55:39.000] Well, then, thank you. [55:39.100 --> 55:39.460] Yes, sir. [55:40.260 --> 55:46.080] On the A, the A, and on the A, it's the . [55:46.600 --> 55:47.080] Yes. [55:49.600 --> 55:51.220] How about the . [55:51.220 --> 55:52.080] That's right. [55:52.080 --> 55:58.080] You're bringing in the eight bits on what says acknowledge, busy, paper, select, error in it. [55:58.200 --> 56:00.100] You have nine input lines. [56:00.440 --> 56:04.260] And it's, you're really reading it in two nibbles at a time. [56:04.360 --> 56:06.880] So you're reading in four bits and five bits. [56:06.880 --> 56:10.740] So it's a teeny weeny bit slower than all at once. [56:11.460 --> 56:15.160] Some of the portables, of course, have bi-directional ports, but that doesn't matter. [56:15.320 --> 56:18.880] So it's a little bit slower, but it's still a lot faster than serial. [56:18.880 --> 56:21.960] And a lot less money to build the converters. [56:22.920 --> 56:23.520] Yes. [56:27.710 --> 56:31.030] A microcontroller to... [56:32.030 --> 56:33.410] What kind of... [56:33.410 --> 56:34.590] What do you mean by a micro... [56:37.510 --> 56:38.710] You could... [56:38.710 --> 56:40.770] You mean to run a motor or something? [56:41.750 --> 56:42.210] Yes. [56:42.390 --> 56:50.130] The motor, microcontroller, I show a chip that does that, and you would just use four of those chips, and you're talking three to four dollars a chip. [56:50.890 --> 56:55.610] So you could run four stepping motors for about $15 in parts. [56:57.030 --> 56:58.410] It's really cheap. [56:58.730 --> 56:59.170] Okay. [56:59.570 --> 57:03.130] I started late, but I think they wanted to start on time, and I apologize. [57:03.130 --> 57:05.030] I want to really thank you. [57:05.370 --> 57:06.830] I appreciate your patience. [57:06.970 --> 57:08.630] You know, one of the guys out here to come to you and thank you.