Idea process (Ruta)
My journey towards the arduino challenge began after Spring break, and so did Huong’s. Both of us were independently exploring project ideas. While I was exploring projects related to art, Huong was greatly interested in arduino projects related to voice and audio conversion. After weeks spent without trying to decide a project, both of us were in a helpless situation. I casually mentioned in the class once, to Huong about my inability to find a great project idea that I absolutely loved, and to my surprise Huong had the same to say. We then decided to work together with the hope that working together might save us some time.
Again, as we were browsing through Instructable projects, we landed on one that said ‘Morse Code Tutoring Machine’. We were instantly attracted to it. Morse Code had immediate appeal and both of us decided to take up this project. We were quite excited about doing it. Another important factor that impacted our decision was that it needed minimum materials and we wouldn’t have to necessarily purchase anything. This Instructables tutorial can be found here. We enquired at the Ann Arbor District Library, and decided to loan a Sparkfun Inventor’s arduino kit from there. Additionally, I borrowed an arduino Uno from my friend, incase we needed back-up.
Going in, we thought the project will be a lot easier as both of us have a computer science background and prior programming experience. It turned out that the project was was not easy. Of course our coding skills helped us troubleshoot the error messages really well. But even then, the instructions for this project weren’t precise and effective. A lot of the information seemed misguided. Also, we were using the Sparkfun board, while the Instructable tutorial used an arduino Uno board. The differences weren’t too contrasting, however it created some some confusion for us when we tried to map the circuit diagrams to actually make the connections. The diagrams were a bit confusing for us, as we were trying to understand the electronics behind a breadboard.
1 Sparkfun arduino board
1 LCD screen (16X2 character display)
1 push button
USB to mini-USB adapter
Work process (Huong)
As anticipated, there were issues at the very outset of this project. The code that we downloaded from the tutorial could not be compiled and returned “deprecated conversion from string constant to ‘char*’” errors. We tried a bunch of fixes, including changing double quotes to single quotes, and connecting the Arduino to a different USB port. Even googling the error, which usually works, did not initially help us as the solution writers, here for example, were rather wordy and unspecific. Eventually we added “const” at the beginning of our problematic line and the code compiled. We were both trained as programmers, and I wonder if artists, for whom Arduino was originally meant, would have reached the same point under the same time.
Next, we followed the tutorial and plugged the button into the breadboard, only to realize that the tutorial made no mention of how the LCD screen fit into it all. At one point we realized that the diagram in the tutorial was for the LCD screen only, not for the whole set-up with the button included. This is a problem, as there were no additional instructions for how to connect the LCD screen and we were reluctant to process with so little details. This tutorial needless to say is probably not meant for people just starting out; in other words, not meant for us.
We looked up additional tutorials on how to connect LCD screens to Arduino, partly to really make sure that part of the project works. There were a bunch online but we wanted something that matches visually to the equipment we had, which was the Sparkfun kit. Finally we went with this original Arduino example, as it has code with which we could test our screen.
At this point we encountered one of our biggest obstacles. The LCD screen had the backlights turned on, but would not show the text it was supposed to. There were several things that could have been causing this problem: 1) We had faulty wires, which one forum suggested. This is a frightening possibility as we had about 20 plugged in and the prospect of having to test all of them seemed grim indeed. 2) We had a broken LCD screen, which was an even more frightening thought, as we had no replacement. 3) The potentionmeter had to be adjusted. 4) The code needed to change to fit the screen we had, because of electrical currents or something. 5) The 330 resistor, which we used in place of the recommended 220 resistor, is somehow messing it up, etc., etc. There was discussion of moving on to another project.
Around this time we figured out how the breadboard actually worked. This allowed us to have more confidence in deviating from the diagrams or the instructions in the tutorials, as originally we planned to adhere to the grid exactly. We also debugged the code with Serial, which gave us more confidence with the programming as well. One interesting thing that happened is that for about 20 minutes we just uploaded various samples to the Arduino to see if any worked, and for some reason Autoscroll managed to make nonsensical things appear on the screen.
Finally, we added some wires not mentioned in the official Arduino tutorial, but were present in their diagram. It worked. The screen flashed “qwerty,” which we had changed from “Hello, world” because we thought that might have been too long. Another of the different thousand things we tried here. (Later we found a more detailed tutorial.)
Now we added the button and uploaded the correct code. The new problem is that the button keeps turning the whole machine off and on. We had the correct prompt on the screen (“Try: SOS”), but pressing the button in morse code only produced blocks of LCD lights. As there was no video in the tutorial, we could not be 100% certain whether or not the machine is working as intended, or if it works at all! Some helpful suggestions in the comments: “That looks good :)”
We went back to the code to determine what should be happening. It appeared that the second line on the LCD screen was supposed to print the morse code, and we tried printing to Serial at various points to see if the program reached those stages. We realized 2 things, that the machine is probably being turned on and off, and that the button should connect to Pin 13, which is crucial in the code but not mentioned anywhere in the tutorial.
The tutorial. (Has everything been a lie? Does this thing really work??)
Long story short, everything was a lie, but this thing really worked. We looked up how to connect a button to an Arduino and followed their diagram, in several different combinations. First we tried it in addition to the tutorial instructions (did not work), then we tried it while removing the wires from the tutorial instructions (did not work the first time, until we added the resistor).
It worked! This is a video of Ruta attempting her own name in morse code and failing like 10 times. One problem is that we cannot change the practice word unless we change the code and reuploaded it to the Arduino.
Overall changes we made (so that the machine actually worked):
- Changed the code
- So that the program compiled
- Changed the salutations so that it’s Rated G
- Did not make the outer box for the machine
- This is a prototype, and we have to return the equipment to the library
- Changed the wiring
Has Arduino democratized access to electronics development?
The question of democratic access is a dubious one in the first place. Recently there has been reexaminations of the concept of “access,” especially as it relates to healthcare and school. Technically everyone has access to first world healthcare in the United States, but what good does it do when most of those people would go bankrupt with an unexpected $500 expense? Technically everyone has the choice to enroll their kids in a private school. Just wish you’d told my parents while I was going to an underfunded public school in New York City with 50 kids in a class that didn’t have a Social Studies teacher for a year. Talk of democratic access, I think, ignores the lack of real democracy in which democratic access supposedly exists.
Let’s talk about these democratizing tools as they function in the real world. Who are the people taking advantage of this democratic access, when most projects on Instructables require a fully fitted kit (costing so much more than the original Arduino Uno), a laser cutter, a 3-D printer, and as we’ve seen, some programming and electrical experience? The same people, I’d wager, who comprise of MAKE’s readership: Professional class, white, male, and earning an astonishingly high income. The same holds true for the democratizing Massively Open Online Courses, one dream that never fulfilled its promise. It was originally supposed to give the common folks the opportunity to listen to the same lectures as Ivy Leaguers, but who else other than people with advanced degree would sit and watch other people with advanced degree try all they can to lull people to sleep in 8-minute increments?
Democratic access is not merely a flawed concept; it is a trap. It allows politicians to blame people who don’t make it, to say, “Have you tried learning coding yet?”, or say, “Have you tried Arduino yet?” It allows absurd ideas like “school choice” to be mentioned in the same breath as democracy. It shifts responsibility onto individuals, not societies, and in pursuing democratic access we must ask ourselves who it benefits: Is it an engine for good in and of itself, restlessly churning in a world meticulously vacuumed of not-fully-understood powers and private interests? Or is it just another mechanism through which the populace is temporarily placated by toys for which they had no use?