Metec Braille Cells

JMCO:
Dear all,

we're currently looking at using Metec Braille Cells (a modified version of their B11 product line, please see http://web.metec-ag.de/braille%20cell%20b11.html for documentation) as a means of providing tactile stimulation (vibrations) at 30Hz.

In other terms, we're moving little pins up and down every 30 ms or so and have people touch these (and yes, other slightly less sophisticated means of providing similar sensations have been used in the past in our labs. But now, we want to be able to control the exact frequency).

After a bit of tinkering (we're far from experts), we were able to connect the braille cells, a DC2DC converter to feed them, and an Arduino Uno. Adjusted the sample code (http://web.metec-ag.de/B11B12%20Elektronik-1.pdf) a wee bit for it to run on the Arduino, and we're at present capable of controlling each individual pin.

Which is nice!

Below you can find the sample code and, in attach, a first attempt at Fritzing to show how everything is connected.
What we're interested in at the moment are the following items:
-> Has anyone else been using these or similar parts? Any experience to share?
-> Are we doing something stupid with the grounding of the DCDC step up converter, the Arduino, and the Braille Cells? (we're not exactly engineers, far from to be honest)
-> Any ideas about casings? Most likely, we'll cover a table in velcro, as well as the bottom of the individual Braille Cells, so we can reposition them as often as required, in whatever constellation (so one finger can be put over multiple cells, or there's one cell per finger, or...). But even so, we'd like them to be placed in individual casings. Their size is about (w,h,d) 6 mm, 17 mm, 74 mm. We've been looking around on vendor sites, but maybe there's a few good ones we're missing.
-> Any feedback is more than welcome!

int datainPin = 2;             //to cell, 'in' from perspective braille cell

int strobePin = 4;             //to cell
int clockPin = 7;              //to cell
int powerPin = 8;              //!goes to DCDC
unsigned int i;
float delaytime = 0.25;
void setup() {                
 pinMode(powerPin, OUTPUT);
 digitalWrite(powerPin, LOW);  // controlpin for DCDC converter (low is on)
 pinMode(datainPin, OUTPUT);
 pinMode(strobePin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 delay(50);
}
void loop()                       // switch between two example patterns
{
 digitalWrite(strobePin, LOW);   // low for setting data, high for using data
 for (i = 0; i < 40; i++)        //we have five cells of eight pins, so amount is 40
 {
   digitalWrite(clockPin, LOW);  // set clock low before sending value for 1 braille pin
   if ((i %2) == 0)              
   {
     digitalWrite(datainPin, LOW);
   }
   else
   {
     digitalWrite(datainPin, HIGH);
   }
   delay(delaytime);              //delay must be very short
   digitalWrite(clockPin, HIGH);  //set clock low
   delay(delaytime);
 }
digitalWrite(strobePin, HIGH);   //pattern is set and
delay(500);                      //remains for 500 ms

digitalWrite(strobePin, LOW);  // low for setting, high for using data
 for (i = 0; i < 40; i++)
 {
   digitalWrite(clockPin, LOW);  // set clock low
   if ((i %2) == 0)              //odd pins go down, even ones go up
   {
     digitalWrite(datainPin, HIGH);
   }
   else
   {
     digitalWrite(datainPin, LOW);
   }
   delay(delaytime);              
   digitalWrite(clockPin, HIGH);  
   delay(delaytime);
 }
digitalWrite(strobePin, HIGH);
delay(500);
}



![](https://fac.ppw.kuleuven.be/clep/newsletter/BrailleCellsSetup2.jpg)

Why does not this code work for me?