Metec Braille Cells

Thanks for the Reply. But the DC-DC converter still cannot function

Because of the unsatisfied result, I have bought the DC-DC converter from your company LINK. It works to ON/OFF the cotroller from the Arduino UNO.

But unfortunately why the Braille Pin doesn't pull up based on my Code. Isnt something wrong with the panel? All the connection I make is refer to this [quote author=Nick Gammon link=msg=2108749 date=1424726086]
The following post accidentally triggered a spam ban for metec_ab. Restored post below. Apologies.

  • Moderator

Post by metec_ab:

Controlling Braille Cells:This tutorial shows you how to control Metec P20 braille cells with an Arduino Uno board. The speed of the pins can be controlled with a potentiometer on the analog pin 0.
Braille cells need about 200V. It is also possible to use your own power source.

Video on YouToobe

//  Backpanel P20 with 5 braille cells
//  -----------------------------------------------------------------------------------------------             7 +200V  <-------------------------- DC-DC +185V
// |  cell 0   |   cell 1  |  cell 2   |  cell 3   |  cell 4   |  cell 5   |  cell 6   |  cell 7   | <-- Cable  6 n.c.
//  ------------------------------------------------------------------------------------------------            5 GND    <----   Arduino GND    ---> DC-DC GND
// |  1 oo 8   |  1 oo 8   |  1 oo 8   |  1 oo 8   |  1 oo 8   |  values of the pins               |            4 CLK    <----   Arduino pin 5
// |  2 oo 16  |  2 oo 16  |  2 oo 16  |  2 oo 16  |  2 oo 16  |                                   |            3 STRB   <----   Arduino pin 4
// |  4 oo 32  |  4 oo 32  |  4 oo 32  |  4 oo 32  |  4 oo 32  |                                   |            2 Din    <----   Arduino pin 3
// | 64 oo 128 | 64 oo 128 | 64 oo 128 | 64 oo 128 | 64 oo 128 |                                   |            1 +5V    <----   Arduino +5V    ---> DC-DC +5V
//  -----------------------------------------------------------------------------------------------                              Arduino pin 2  ---> DC-DC /ON
//
// YouTube video: https://www.youtube.com/watch?v=3zqth08wQBs
// P20 cell:      http://web.metec-ag.de/P20.pdf
// DC-DC:         http://web.metec-ag.de/DCDC%20Converter%205to200V.pdf
// Contact:       ab@metec-ag.de


const int ON     =  2;  // DC-DC Converter ON Pin. You can use it to switch off the cell power in a sleeping mode 
const int DATA   =  3;  // Backpanel Pin 2 (Din)
const int STROBE =  4;  // Backpanel Pin 3 (STRB)
const int CLOCK  =  5;  // Backpanel Pin 4 (CLK)
const int POTI   =  0;  // Optional. There is an potentiometer on analog pin 0

const int cellCount = 8;
byte cells[cellCount];


void setup() 
{
 pinMode(ON,     OUTPUT);
 pinMode(DATA,   OUTPUT);
 pinMode(STROBE, OUTPUT);
 pinMode(CLOCK,  OUTPUT);
 
 digitalWrite(ON, 0);  // 0=ON, 1=OFF
}


void loop() 
{
 // left cell run all pins, next cell blinks and the others are running horizonal
 // Set the pins, send it and wait...
 cells[0] = 1;   cells[1] = 0;      cells[2] = 1+2+4+64;    cells[3] = 0;           cells[4] = 0;            Flush(); Wait();
 cells[0] = 2;   cells[1] = 255;    cells[2] = 8+16+32+128; cells[3] = 0;           cells[4] = 0;            Flush(); Wait();
 cells[0] = 4;   cells[1] = 0;      cells[2] = 0;           cells[3] = 1+2+4+64;    cells[4] = 0;            Flush(); Wait();
 cells[0] = 8;   cells[1] = 255;    cells[2] = 0;           cells[3] = 8+16+32+128; cells[4] = 0;            Flush(); Wait();
 cells[0] = 16;  cells[1] = 0;      cells[2] = 0;           cells[3] = 0;           cells[4] = 1+2+4+64;     Flush(); Wait();
 cells[0] = 32;  cells[1] = 255;    cells[2] = 0;           cells[3] = 0;           cells[4] = 8+16+32+128;  Flush(); Wait();
 cells[0] = 64;  cells[1] = 0;      cells[2] = 0;           cells[3] = 0;           cells[4] = 0;            Flush(); Wait();
 cells[0] = 128; cells[1] = 255;    cells[2] = 0;           cells[3] = 0;           cells[4] = 0;            Flush(); Wait();
}


void Wait()
{
 // optional. read the value from the poti on analog pin 0
 delay( analogRead(POTI) / 2 );
}




// Send the data
void Flush ()
{
 // This example is for one P20 backpanel. If you are using others you have to change the bit order!
 // P20: 6,7,2,1,0,5,4,3
 // P16: 6,2,1,0,7,5,4,3
 // B11: 0,1,2,3,4,5,6,7  
 // Rotate the bytes from the right side. Cell 0 comes first and is on the left position.
 
 for (int i = 0; i < cellCount; i++)
 {
   if ( bitRead(cells[i], 6) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 7) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 2) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 1) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 0) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 5) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 4) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
   if ( bitRead(cells[i], 3) )   {digitalWrite(DATA, 0);} else {digitalWrite(DATA, 1);}     digitalWrite(CLOCK, 1); digitalWrite(CLOCK, 0);
 }

 digitalWrite(STROBE, 1);  // Strobe on
 digitalWrite(STROBE, 0);  // Strobe off
}

[/quote]