Sunteți pe pagina 1din 4

/* Principiul jocului X si 0.

Pentru miscare in plan am folosit 2 motoare bipolare pas cu pas NEMA 17,
controlate de catre 2 drivere pentru motoare pas cu pas
si placa de arduino uno wifi rev 2.

Vom controla pasii efectuati de catre motoare cu ajutorul comenzii pe seriala,


care misca ansamblul format
in functie de numarul de pasi pe care il are asociat fiecare caracter
(A/B/C/D/E/F/R) conform incercarilor facute.

Pentru urmatorul update ne-am gandit la predefinirea miscarii in plan folosind


caractere pentru anumite pozitii conform cu urmatorul exemplu.

Spre exemplu: Avem avem o matrice 3 linii si 3 coloane.


Vom folosii: - caracterul "A" pentru a misca pozitionerul in pozitia aferenta
coloanei 1 (casuta 1/4/7);
- Caracterul "B" pentru a misca pozitionerul in pozitia aferenta
coloanei 2 (casuta 2/5/8);
- Caracterul "C" pentru a misca pozitionerul in pozitia
aferenta coloanei 3 (casuta 3/6/9);
- Caracterul "D" pentru a misca pozitionerul in pozitia
aferenta liniei 1 (casuta 1/4/7);
- Caracterul "E" pentru a misca pozitionerul in pozitia
aferenta liniei 2 (casuta 2/5/8);
- Caracterul "F" pentru a misca pozitionerul in pozitia
aferenta liniei 3 (casuta 3/6/9);
- Caracterul "R" pentru a misca pozitionerul in pozitia
initiala, definita in plan (0,0);

* A –coloana 1
* B –coloana 2
* C –coloana 3
* D –linia 1
* E -linia 2
* F –linia 3
* R- REVENIRE
*/

int dirpin1 = 2; //initializare pini directie motor 1


int steppin1 = 3; //initializare viteza motor 1

int dirpin2 = 8; //initializare pini directie motor 2


int steppin2 = 9; //initializare pini directie motor 2

int R; //revinire in pozitia initiala

void setup()
{
pinMode(dirpin1, OUTPUT); //setare pin 2 ca pin de iesire
pinMode(steppin1, OUTPUT); //setare pin 3 ca pin de iesire

pinMode(dirpin2, OUTPUT); //setare pin 8 ca pin de iesire


pinMode(steppin2, OUTPUT); //setare pin 9 ca pin de iesire

Serial.begin(9600); //initializarea serialei

}
void loop()
{
int i;
char input;

if (Serial.available()) {

input = Serial.read();

if(input=='A') {

digitalWrite(dirpin1, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<500; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 1.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 1, a
pasilor.

Serial.print("Se misca catre Coloana intai!"); // Se v-a afisa pe seriala


mesajul de miscare catre coloana dorita;
delay(1000) ;

}
}

if(input=='B') {

digitalWrite(dirpin1, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<800; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 1.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 1, a
pasilor.

Serial.print("Se misca catre Coloana a doua!"); // Se v-a afisa pe seriala


mesajul de miscare catre coloana dorita;
delay(1000) ;
}

if(input=='C') {

digitalWrite(dirpin1, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<1100; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 1.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 1, a
pasilor.

Serial.print("Se misca catre Coloana a treia!"); // Se v-a afisa pe seriala


mesajul de miscare catre coloana dorita;
delay(1000) ;
}

if(input=='D') {

digitalWrite(dirpin2, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<500; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 2.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 2, a
pasilor.

Serial.print("Se misca catre Linia intai!"); // Se v-a afisa pe seriala


mesajul de miscare catre linia dorita;
delay(1000) ;
}

if(input=='E') {

digitalWrite(dirpin2, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<800; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 2.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 2, a
pasilor.

Serial.print("Se misca catre Linia a doua!"); // Se v-a afisa pe seriala


mesajul de miscare catre linia dorita;
delay(1000) ;
}

if(input=='F') {

digitalWrite(dirpin2, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<1100; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 2.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 2, a
pasilor.

Serial.print("Se misca catre Linia a treia!"); // Se v-a afisa pe seriala


mesajul de miscare catre linia dorita;
delay(1000) ;
}

if(input=='R') {

digitalWrite(dirpin2, LOW); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<1100; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin2, HIGH); // Energizarea infasurarilor motorului 2.
digitalWrite(steppin2, LOW); // Stabilirea de catre driverul motorului 2, a
pasilor.
delay(1000);
}

digitalWrite(dirpin1, HIGH); // Setarea directiei motorului.


delay(1000);

for (i = 0; i<1100; i++) // Iterarea pasilor motorului.


{
digitalWrite(steppin1, HIGH); // Energizarea infasurarilor motorului 1.
digitalWrite(steppin1, LOW); // Stabilirea de catre driverul motorului 1, a
pasilor.
delay(1000);

Serial.print("Se revine in pozitia initiala!"); // Se v-a afisa pe


seriala mesajul de revenire in pozitia initiala;
delay(1000)
}

}
}
}

S-ar putea să vă placă și