19. Project development

   Complete your final project, tracking your progress:
      what tasks have been completed, and what tasks remain? 
      what's working? what's not?
      what questions need to be resolved?
      what will happen when?
      what have you learned?

Current Status (6/24/2020): Still Working on Project

What tasks have been completed, and what tasks remain?

For my final project, I have a board designed to read a number through Serial and use that as the pulse width to be sent to the ESC connected to my Brushless DC Motor. Any number from 1000 - 2000 µs can be set as the pulse width. In addition, I have a board containing seven DotStar LEDs that will be controlled at precise timings in order to produce a Persistence of Vision effect. I have been able to use timing interrupts to light up the DotStar LEDs quicker than a millisecond. In addition, I switched from using the Adafruit_DotStar library into directly writing into SPI. For timing the rotations of my LED board, I have a Hall Effect sensor board along with a neodymium magnet. To finish my project, I need a base to hold all the components of my project, code to convert a bitmap image with cartesian coordinates to polar coordinates, and to mold and cast the connection from my LED board to the shaft of the motor.

What’s working? what’s not?

Until now, it has been difficult migrating code from the Arduino IDE to Atmel Studio. Programming my board through the Arduino IDE seems to mess up the timer interrupts and so I switched to Atmel Studio. Instead of using the Arduino libraries for controlling the DotStars, I simply found documentation on the correct sequence of bits to write to my LEDs.

What questions need to be resolved?

A big question is whether I will communicate with my LED blades through I2C communication while they are spinning, or whether I can simply have a buffer on each LED Board that I will need to fill with the lighting pattern beforehand. I’m also not sure how I will straighten out my motor shaft as while I have the bearings required, the placement of the bearings are not known yet. In addition, I’m questioning whether I will have one or two switches on the front of my base to turn on or off the motor and power for testing or safety purposes. Lastly, I can either attach the neodymium magnet below an LED Board and have it spin so that it almost contacts my hall effect sensor, or have a magnet stationary and instead have the hall effec sensor board spinning.

What will happen when?

  • [ X ] 6/24: 3D printed base is finished, brushless dc motor is fitted into base and aligned with bearings. Top cover of base is laser cut along with a slip ring on top.
  • [ X ] 6/25: Molding and casting the LED board to fit onto the motor shaft. Soldering a simple master board that will communicate with my LED blade through I2C and take in Hall Effect Sensor values.
  • [ X ] 6/26: Getting Hall Effect Sensor and Neodymium magnet mounted so that they pass by each other. Have master board read when the sensor is on a rising edge and record the timing.
  • [ X ] 6/27: Documentation or programming at home
  • [ X ] 6/28: Documentation or programming at home
  • [ X ] 6/29: Have LED Board light up based on Hall Effect Sensor timings. Have a bitmap image show up with my project.
  • [ X ] 6/30: Final touches making sure that everything works

What have you learned?

A big thing that I have learned is the distinction between the Arduino IDE and Atmel Studio. Atmel Studio provides so many different options and there is a ton of things that I have not been able to explore in this software yet. The Arduino IDE sort of guides your hand through this process and is definitely fitting for simple prototyping and beginners who need a starting point. Learning to traverse datasheets and adapt code from older AVR boards to newer ones have also started to a large part of my learning process. There are so many things to learn about programming these AVR boards and it only seems that I have scratched the surface.