BRAILLE PRINTER
Braille printer or braille embosser (is the same thing), do the same thing as a regular printer, but it prints for blind people. Braille is named after its creator, Frenchman Louis Braille, who lost his eyesight due to a childhood accident.
A full Braille cell includes six raised dots arranged in two lateral rows each having three dots. The dot positions are identified by numbers from one through six. 64 solutions are possible from using one or more dots. A single cell can be used to represent an alphabet letter, number, punctuation mark, or even an entire word.
Documentation
Braille printer or braille embosser (is the same thing), do the same thing as a regular printer, but it prints for blind people. Braille is named after its creator, Frenchman Louis Braille, who lost his eyesight due to a childhood accident.
First thing I do was to study the alphabet, so I start to research
A full Braille cell includes six raised dots arranged in two lateral rows each having three dots. The dot positions are identified by numbers from one through six. 64 solutions are possible from using one or more dots. A single cell can be used to represent an alphabet letter, number, punctuation mark, or even an entire word.
Part List
Some parts is reused form old compuer and printer
- 2x Driver
- 1x Servo
- 1x Arduino
- 1x old cd reader
- 1x wheel
- 1x stepper from old pregular printer
- some wires
- glue and motivation, don't forget about motivation!
How It Works
The wheel is actioned by stepper motor (X axis) and it drag the paper in. The Y-Axis is made from old CD reader, on top is the servo which will empos the paper.
Downloads
Arduino Software
#include
#include
int in1Pin = 12; int in2Pin = 11; int in3Pin = 10; int in4Pin = 9;
int in5Pin = 8; int in6Pin = 7; int in7Pin = 6; int in8Pin = 5;
#define STEPS 24 #define STEPS2 56 Servo myservo; Stepper motor(STEPS, in1Pin, in2Pin, in3Pin, in4Pin); Stepper mfoaie(STEPS2, in5Pin, in6Pin, in7Pin, in8Pin);
void m1 () { int steps = Serial.parseInt(); motor.step(steps); }
void m2 () { int steps2 = Serial.parseInt(); mfoaie.step(steps2); }
void servo() { myservo.write(1); delay(200); myservo.write(30); delay(200); }
void litera(char l){ if (l == ']'){mfoaie.step(2);} if (l == ';'){mfoaie.step(1);} if (l == 'A'){servo(); mfoaie.step(5);} if (l == 'B'){ servo(); motor.step(39); servo(); motor.step(-39); mfoaie.step(2);mfoaie.step(3); } if (l == 'C'){servo(); mfoaie.step(2);servo();mfoaie.step(3);} if (l == 'D'){servo(); mfoaie.step(2);servo();motor.step(39);servo();motor.step(-39);mfoaie.step(3);} if (l == 'E'){servo(); mfoaie.step(2);motor.step(39);servo();motor.step(-39);mfoaie.step(3);} if (l == 'F'){servo();motor.step(39);servo();motor.step(-39);mfoaie.step(2);servo();mfoaie.step(3);} if (l == 'G'){servo();motor.step(39);servo();mfoaie.step(2);servo();motor.step(-39);servo();mfoaie.step(3);} if (l == 'H'){servo();motor.step(39);servo();mfoaie.step(2);servo();motor.step(-39);mfoaie.step(3);} if (l == 'I'){ motor.step(39); servo(); motor.step(-39); mfoaie.step(2);servo();mfoaie.step(3);} if (l == 'J'){motor.step(39);servo();mfoaie.step(2);servo();motor.step(-39);servo();mfoaie.step(3);} if (l == 'K'){servo();motor.step(69);servo();motor.step(-69);mfoaie.step(5);} if (l == 'L'){servo();motor.step(39);servo();motor.step(30);servo();motor.step(-69);mfoaie.step(5);} if (l == 'M'){servo();motor.step(69);servo();motor.step(-69);servo();mfoaie.step(2);servo();mfoaie.step(3);} if (l == 'N'){servo();motor.step(69);servo();motor.step(-69);servo();mfoaie.step(2);servo();motor.step(39);servo();motor.step(-39);mfoaie.step(3);} if (l == 'O'){servo();motor.step(69);servo();motor.step(-69);servo();mfoaie.step(2);motor.step(39);servo();motor.step(-39);mfoaie.step(3);} if (l == 'P'){servo();motor.step(39);servo();motor.step(30);servo();motor.step(-69);mfoaie.step(2);servo();mfoaie.step(3);} if (l == 'Q'){servo();motor.step(39);servo();motor.step(30);servo();motor.step(-30);mfoaie.step(2);servo();motor.step(-39);servo();mfoaie.step(3);} if (l == 'R'){servo();motor.step(39);servo();motor.step(30);servo();motor.step(-30);mfoaie.step(2);servo();motor.step(-39);mfoaie.step(3);} if (l == 'S'){motor.step(39);servo();motor.step(30);servo();motor.step(-69);mfoaie.step(2);servo();mfoaie.step(3);} if (l == 'T'){motor.step(39);servo();motor.step(30);servo();motor.step(-30);mfoaie.step(2);servo();motor.step(-39);servo();mfoaie.step(3);} if (l == 'U'){servo();motor.step(69);servo();mfoaie.step(2);servo();motor.step(-69);mfoaie.step(3);} if (l == 'V'){servo();motor.step(39);servo();motor.step(30);servo();mfoaie.step(2);servo();motor.step(-69);mfoaie.step(3);} if (l == 'W'){motor.step(39);servo();motor.step(30);mfoaie.step(2);servo();motor.step(-30);servo();motor.step(-39);servo();mfoaie.step(3);} if (l == 'X'){servo();motor.step(69);servo();mfoaie.step(2);servo();motor.step(-69);mfoaie.step(3);} if (l == 'Y'){servo();motor.step(69);servo();mfoaie.step(2);servo();motor.step(-30);servo();motor.step(-39);servo();mfoaie.step(3);} if (l == 'Z'){servo();motor.step(69);servo();mfoaie.step(2);servo();motor.step(-30);servo();motor.step(-39);mfoaie.step(3);} }
//steps depend of what kind of stepper you use and the distance between holes. see pic.
void setup() { // initialize serial communication: Serial.begin(9600); pinMode(in1Pin, OUTPUT); pinMode(in2Pin, OUTPUT); pinMode(in3Pin, OUTPUT); pinMode(in4Pin, OUTPUT); pinMode(in5Pin, OUTPUT); pinMode(in6Pin, OUTPUT); pinMode(in7Pin, OUTPUT); pinMode(in8Pin, OUTPUT); Serial.begin(9600); myservo.attach(4); myservo.write(40); motor.setSpeed(100); mfoaie.setSpeed(50); // delay(10000); }
void loop() { // read the sensor: if (Serial.available() > 0) { char inByte = Serial.read(); litera(inByte);
}}
Downloads
Attention
This project is for overview. I will try to make another one with detailed steps. This project was made in one day.]
THANKS! :)