Matrisskrivare från en CD/DVD läsare med Arduino (15 / 17 steg)
Steg 15: Programmering Arduino.
Det är nödvändigt burn Arduino bara en gång, eftersom vi använder den seriella porten via USB för att skicka bilderna till Arduino utskrift.
Arduinoen tar emot byte från datorn och kontrollerar om det har att göra en prick eller inte.
Vid varje punkt förskott pennan, tills det får en för att börja en ny rad, när papperet rör sig lite.
Är inte nödvändigt att ladda ner någon extra bibliotek, bara själva koden.
Skrivet av Robson Couto
http://dragaosemchama.com.br/
Augusti 2014.
#define tid 4 / / tid i millisekunder mellan varje motor steg
#define pentime 200 //time av puls i pennan motorn
#define pulltime 6200 //time (i mikrosekunder att tillåta en alrge rad) av pulsen på motorn dra papperet.
#define penPin 4 //pen motor pin
#define paperPin 5 //paper motor pin
#define StepperA1 9 //stepper motor pins
#define StepperA2 10 / /
#define StepperB1 11 / /
#define StepperB2 12 / /
byte data; //byte att ta emot och kontrollera data från datorn
void setup() {
Serial.BEGIN (9600); //Start den seriella porten.
pinMode (StepperA1, OUTPUT); //Stepper motor pins som utgång
pinMode (StepperA2, OUTPUT);
pinMode (StepperB1, OUTPUT);
pinMode (StepperB2, OUTPUT);
pinMode (penPin, produktionen); //Pen motor pin som en utgång
pinMode (paperPin, produktionen); //Paper motor pin som en utgång
Back (80); //makes bilen tillbaka, för att vara säker på att det börjar på början av raden
}
void loop() {
IF(Serial.available()) {//if det är uppgifter om den seriella buffert
While(Serial.available() > 0) {//continues läser värdena på bufferten.
data=Serial.Read();
IF(data==1) {
dot (); //if en en mottogs, gör en prick.
framåt (1), //avances en gång (fyra steg)
}
IF(data==0) {
Forward(1); / / om en nolla var mottagna bara avances.
}
IF(data=='L') {//if en "L" togs emot, ta bort papper att börja en ny rad.
pullPaper (); //call funktionen dra papper.
Back (80); //return bilen.
}
}
}
}
utan laga kraft framåt (int antal) {//forward funktion, kan du välja antalet steg när du ringer funktionen
int jag = 0; //to styra antalet steg
While(i<Number) {
digitalWrite (StepperA1, hög); denna sekvens är en del av den grundläggande algoritm att styra en bipolär stegmotor.
digitalWrite (StepperA2, låg);
digitalWrite (StepperB1, hög);
digitalWrite (StepperB2, låg);
fördröjning (tid); //wait tiden definieras.
digitalWrite (StepperA1, hög);
digitalWrite (StepperA2, låg);
digitalWrite (StepperB1, låg);
digitalWrite (StepperB2, hög);
Delay(Time);
digitalWrite (StepperA1, låg);
digitalWrite (StepperA2, hög);
digitalWrite (StepperB1, låg);
digitalWrite (StepperB2, hög);
Delay(Time);
digitalWrite (StepperA1, låg);
digitalWrite (StepperA2, hög);
digitalWrite (StepperB1, hög);
digitalWrite (StepperB2, låg);
Delay(Time);
i ++;
}
digitalWrite (StepperA1, låg);
digitalWrite (StepperA2, låg);
digitalWrite (StepperB1, låg);
digitalWrite (StepperB2, låg);
}
Annullera back (int antal) {//As funktionen framåt, men gör den omvända sekvensen.
int jag = 0;
While(i<Number) {
digitalWrite (StepperA1, låg);
digitalWrite (StepperA2, hög);
digitalWrite (StepperB1, hög);
digitalWrite (StepperB2, låg);
Delay(Time);
digitalWrite (StepperA1, låg);
digitalWrite (StepperA2, hög);
digitalWrite (StepperB1, låg);
digitalWrite (StepperB2, hög);
Delay(Time);
digitalWrite (StepperA1, hög);
digitalWrite (StepperA2, låg);
digitalWrite (StepperB1, låg);
digitalWrite (StepperB2, hög);
Delay(Time);
digitalWrite (StepperA1, hög);
digitalWrite (StepperA2, låg);
digitalWrite (StepperB1, hög);
digitalWrite (StepperB2, låg);
Delay(Time);
i ++;
}
digitalWrite (StepperA1, låg);
digitalWrite (StepperA2, låg);
digitalWrite (StepperB1, låg);
digitalWrite (StepperB2, låg);
}
void dot(void) {//actives penna motorn för en tid
digitalWrite(penPin,HIGH);
Delay(pentime);
digitalWrite(penPin,LOW);
}
void pen(void) {//this funktioner kan användas om du vill göra linjer i stället för punkter,
digitalWrite(penPin,HIGH); Jag tror att prickarna är cool.
} //
void nopen(void) {/ /
digitalWrite(penPin,LOW); //
} //
void pullPaper(void) {//function att dra papperet
digitalWrite(paperPin,HIGH);
delayMicroseconds(pulltime);
digitalWrite(paperPin,LOW);
}