Introduction

As the project evolves, issues arise. It is worth to point the attention on the most impacting ones I met; I hope that documenting those I found and how I solved them may be useful for other users.

In this new episode, we will see how I had to change the left eye implant for both technical and aesthetic reasons.

 

Creating the Eye Implant

As you have probably already seen in the images of the mannequin – it is definitive, it has a name, 7 of 9 (guess why?) – the left eye will host an implant with lights and the Pi camera.

Starting from the mannequin head proportions I have designed the implant profile, then I have converted it in SVG format with Inkscape and, finally, used the profile to create the model with fusion 360 for 3D printing.

Above: the draft idea of the eye implant overlayed on the left side of the face; the size is conditioned by the dimensions of the NeoPixel 12 LEDs ring.

Below: the Fusion360 3D rendering of the implant. Note in the center the transparent toroidal ring that will be the front side of the NeoPixel ring.

To complete the eye implant effect I initially decided to use a 12 LEDs NeoPixel ring; a second internal toroidal ring has been designed for this purpose, 3D printed with the Elegoo MARS LCD printer using transparent resin.

Below: the implant preview covering the left eye of 7 of 9 before painting and gluing the parts together.

To keep the NeoPixel ring in place to the back of the transparent ring another small support has been designed and 3D printed. Also after painting the result was technically good but aesthetically not very satisfying.

Anyway, I have decided to use it to see the real effect when put in place. As you can see in the above images the size and the internal transparent ring have a too hard impact with the face proportions,  and the transparent ring seems redundant. Thus I decided to redesign it with a reduced size.

As explained in detail below I have also experienced a blocking hardware issue related to the use of the NeoPixel together with the stepper library on Arduino.

 

The Incompatibility Between the NeoPixel Library and the Stepper Library

In the specific case of this project, the adoption of the NeoPixel ring has been abandoned as the result was not as good as I expected. When I was testing the use of the Arduino with the motor controller all functions worked fine; then I connected the Neo pixel ring and it worked as expected too, but the motor started running in a weird mode; it was losing steps, getting a wrong count of the angle based on the number of steps, and the speed frequencies were unreliable and unstable.

First I investigated the problem of the motor then I realized that the issue was related to the Adafruit NeoPixel library. Not only. Also commenting all the calls and the initialization of the library in the setup() the problem persisted. As I was sure that removing every reference to the library from the source – including the creation of the library instance – the motor started again running as expected, I searched on the Internet for the reason of this problem (maybe something related to the Arduino IDE version or an outdated version of the NeoPixellibrary)

Finally, I found an article, reporting an explanation of the same issue concerning the contemporary use of NeoPixel and servo motors. The NeoPixel library seems to have an internal issue managing the microcontroller interrupts. As a matter of fact, the NeoPixels library has been designed without taking care of the use of the interrupt vectors by other devices eventually; in some cases, it stops the interrupts for some millisecond in a way that any other device like the stepper library suffers an unpredictable negative impact.

 

Previous Episodes

 

Next Episodes