I programmed the servos to point at individual letters by manually moving with the help of a couple of potentiometers. Once I knew the coordinates, it was easy to recall them at will. I implemented a serial connection to choose a letter or number, and the servos would move there.
Arduino's servo library doesn't allow much precision, and I wanted to be able to slide the puck around the board in a spooky manner, not the frenetic darting motion you can see above. I replaced the library with my code that allows me to move 0.1º instead of just 1º like the stock library.
I remapped the numbers and letters to reflect their coordinates in microseconds instead of degrees, which are not as easy to read, but it simplifies the map. Now that I had precise control, I was able to implement a speed limit to introduce speed ramping next. The goal is to have the resting puck slowly move off a letter, as though a spirit is struggling to push a physical object and gain speed, only to change direction before resting on the next character.
I finally implemented a ramping sequence. When the motors are resting and receive a command, they get dozens of orders to make tiny movements, and the moves get longer and longer, so the effect is that the puck gains momentum on its way to the next letter.
Many of the parameters I changed were hard-coded, so when I experimented with them, I had to recompile each time. To speed this up, I made a list of ASCII symbols that were not on the board and associated commands. For example, to access acceleration style 2, send "@" which you get if you hold shift and press the 2 key.
Another thing in the way was unnecessary feedback from the controller. For troubleshooting, it is necessary, but most of the time, it cluttered the serial window. I used a command to reduce the data returned. In some cases, I completely stopped all data, but I sent simplified data in other cases. For example, I used to send "Letter: X pos1, pos2," where X was the desired letter, and pos1 and pos2 were the current servo positions. In the reduced data, the controller responded with "X".
The rest of the summary posts have been arranged by date.
First time here?
Completed projects from year 1
Completed projects from year 2
Completed projects from year 3
Completed projects from year 4
Completed projects from year 5
Completed projects from year 6
Completed projects from year 7
Disclaimer for http://24hourengineer.blogspot.com and 24HourEngineer.com
This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.
All information on this blog, or linked by this blog, is not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property, or similar, is the responsibility of those involved in the replication.
All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.
Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim property or assets based on their post.
This blog, including pictures and text, is copyright to Brian McEvoy.
Arduino's servo library doesn't allow much precision, and I wanted to be able to slide the puck around the board in a spooky manner, not the frenetic darting motion you can see above. I replaced the library with my code that allows me to move 0.1º instead of just 1º like the stock library.
I remapped the numbers and letters to reflect their coordinates in microseconds instead of degrees, which are not as easy to read, but it simplifies the map. Now that I had precise control, I was able to implement a speed limit to introduce speed ramping next. The goal is to have the resting puck slowly move off a letter, as though a spirit is struggling to push a physical object and gain speed, only to change direction before resting on the next character.
(0:21) Moving with a speed limit
I finally implemented a ramping sequence. When the motors are resting and receive a command, they get dozens of orders to make tiny movements, and the moves get longer and longer, so the effect is that the puck gains momentum on its way to the next letter.
Many of the parameters I changed were hard-coded, so when I experimented with them, I had to recompile each time. To speed this up, I made a list of ASCII symbols that were not on the board and associated commands. For example, to access acceleration style 2, send "@" which you get if you hold shift and press the 2 key.
Command chart
Another thing in the way was unnecessary feedback from the controller. For troubleshooting, it is necessary, but most of the time, it cluttered the serial window. I used a command to reduce the data returned. In some cases, I completely stopped all data, but I sent simplified data in other cases. For example, I used to send "Letter: X pos1, pos2," where X was the desired letter, and pos1 and pos2 were the current servo positions. In the reduced data, the controller responded with "X".
The rest of the summary posts have been arranged by date.
First time here?
Completed projects from year 1
Completed projects from year 2
Completed projects from year 3
Completed projects from year 4
Completed projects from year 5
Completed projects from year 6
Completed projects from year 7
Disclaimer for http://24hourengineer.blogspot.com and 24HourEngineer.com
This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.
All information on this blog, or linked by this blog, is not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property, or similar, is the responsibility of those involved in the replication.
All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.
Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim property or assets based on their post.
This blog, including pictures and text, is copyright to Brian McEvoy.
Comments
Post a Comment