#define pinPen 22
#define pinHorVer 24
#define pinPlusMinus 26
#define pinMove 28
#define pinReadyIn 30
#define pinReadyOut 32
//-------------------------
// pinPen = LOW ... Pen UP
// pinPen = HIGH ... Pen DOWN
// pinMove = change from LOW to HIGH mean 1 step
// pinHorVer = LOW ... Movement of pen carriage
// pinHorVer = HIGH ... Movement of paper
// pinPlusMinus = LOW ... Carriage to the left or paper forward
// pinPlusMinus = HIGH ... Carriage to the right or paper backwords
// pinreadyIn = LOW ... Ready
// pinreadyIn = HIGH ... Not ready
//---------------------------------
int StepDelay = 4; // Doba 1
int PenDelay = 128 // Doba 2
float PosX, PosY;
void setup() {
// put your setup code here, to run once:
pinMode(pinPen, OUTPUT);
pinMode(pinHorVer, OUTPUT);
pinMode(pinPlusMinus, OUTPUT);
pinMode(pinMove, OUTPUT);
pinMode(pinReadyOut, OUTPUT);
pinMode(pinReadyIn, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
}
void StepPause(){ // Pauza 1
delay(Stepdelay);
}
void PenPause(){ // Pauza 1
delay(PenDelay);
}
void Horizontal(){
digitalWrite(pinHorVer, LOW);
}
void Vertical(){
digitalWrite(pinHorVer, HIGH);
}
void LeftUP() {
digitalWrite(pinPlusMinus, LOW);
}
void RightDown() {
digitalWrite(pinPlusMinus, HIGH);
}
void PenUp(){
digitalWrite(pinPen, LOW);
}
void PenDown(){
digitalWrite(pinPen, HIGH);
}
void Step() {
digitalWrite(pinMove, LOW);
delay(1);
digitalWrite(pinMove, HIGH);
StepPause();
digitalWrite(pinMove, LOW);
}
void Forward() {
Vertical();
LeftUp();
Step();
PosY = PosY + 1;
}
void Backwords() {
Vertical();
RightDown();
Step();
PosY = PosY - 1;
}
void Left(){
Horizontal();
LeftUp();
Step();
PosX = PosX - 1;
}
void Right(){
Horizontal();
RightDown();
Step();
PosX = PosX + 1;
}
void InitPlotter() {
int i;
for(i = 0; i < 2000; i++){
Left();
}
PosX = 0;
PosY = 2600;
}
HorizontalStep(float dxx) {
if (dxx != 0) {
if (dxx > 0) {
Right();
} else {
Left();
}
}
}
VerticalStep(float dyy) {
if (dyy != 0) {
if (dyy > 0) {
Forward();
} else {
Backwards();
}
}
}
void MR(float dx, dy) {
float dxx, dyy, k, y, yp;
/*
PROCEDURE POM1;
VAR X:INTEGER;
BEGIN
K:=DX/DY;YP:=0;X:=1;
REPEAT
Y:=K*X;SVISLE(DYY);X:=X+1;
IF (Y-YP)>0.5 THEN
BEGIN
HORIZ(DXX);YP:=YP+1;
END;
UNTIL X>DY;
END;
*/
void pom1() {
int x;
k = dx/dy;
yp = 0;
x = 1;
do {
y = k * x;
VerticalStep();
x++;
if ((y - yp) > 0.5) {
HorizontalStep();
yp = yp + 1;
}
}
while (x > dy);
}
/*
PROCEDURE POM2;
VAR X:INTEGER;
BEGIN
K:=DY/DX;YP:=0;X:=1;
REPEAT
Y:=K*X;HORIZ(DXX);X:=X+1;
IF (Y-YP)>0.5 THEN
BEGIN
SVISLE(DYY);YP:=YP+1;
END;
UNTIL X>DX;
END;
*/
/*
BEGIN
DXX:=DX;DYY:=DY;
DX:=ABS(DX);DY:=ABS(DY);
DX:=ROUND(DX);DY:=ROUND(DY);
IF DY>DX THEN
POM1
ELSE
POM2
END;
*/
}