Codigo Arduino motor a pasos
Enviado por Armandomunoz79 • 30 de Noviembre de 2021 • Trabajo • 425 Palabras (2 Páginas) • 89 Visitas
Código Arduino
int D0=10; int D1=11; int D2=12; int D3=13; int S1=7; int S2=6; int S3=5; int S4=4;
boolean a = false; boolean p = false; boolean g = false; int velocidad = 300; int unidades = 0; int giro = 0;
void setup()
{
Serial.begin(9600); pinMode(D0,OUTPUT); pinMode(D1,OUTPUT); pinMode(D2,OUTPUT); pinMode(D3,OUTPUT); pinMode(S1,OUTPUT); pinMode(S2,OUTPUT); pinMode(S3,OUTPUT); pinMode(S4,OUTPUT);
}
void loop()
{
if(Serial.available())
{
char letra = Serial.read(); if(letra == 'a')
{
a = true; p = false;
}
if(letra == 'b')
{
p = true; a = false;
}
if(letra == 'c')
{
g = !g;
}
}
if(g == true){giro = 1;} if(g == false){giro = 2;} if(a == true && giro == 1)
{
for(unidades=0;unidades<10;unidades++)
{
motor_derecha(); display_A(unidades);
}
}
if(a == true && giro ==2)
{
for(unidades=9;unidades>=0;unidades--)
{
motor_izquierda(); display_A(unidades);
}
}
if(p == true)
{
giro=0; unidades=0;
display_A(unidades); digitalWrite(D0,LOW); digitalWrite(D1,LOW); digitalWrite(D2,LOW); digitalWrite(D3,LOW);
}
}
void motor_derecha()
{
digitalWrite(D0,HIGH); digitalWrite(D1,LOW); digitalWrite(D2,LOW); digitalWrite(D3,LOW); delay(velocidad);
digitalWrite(D0,LOW); digitalWrite(D1,HIGH); digitalWrite(D2,LOW);
digitalWrite(D3,LOW); delay(velocidad);
digitalWrite(D0,LOW); digitalWrite(D1,LOW); digitalWrite(D2,HIGH); digitalWrite(D3,LOW); delay(velocidad);
digitalWrite(D0,LOW); digitalWrite(D1,LOW); digitalWrite(D2,LOW); digitalWrite(D3,HIGH); delay(velocidad);
}
void motor_izquierda()
{
digitalWrite(D0,LOW); digitalWrite(D1,LOW); digitalWrite(D2,LOW); digitalWrite(D3,HIGH); delay(velocidad);
digitalWrite(D0,LOW); digitalWrite(D1,LOW); digitalWrite(D2,HIGH); digitalWrite(D3,LOW); delay(velocidad);
digitalWrite(D0,LOW); digitalWrite(D1,HIGH); digitalWrite(D2,LOW); digitalWrite(D3,LOW); delay(velocidad);
digitalWrite(D0,HIGH); digitalWrite(D1,LOW); digitalWrite(D2,LOW); digitalWrite(D3,LOW); delay(velocidad);
}
void display_A(int unidades)
{
if(unidades==0)
{
digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,LOW); digitalWrite(S4,LOW);
}
if(unidades==1)
{
digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,LOW); digitalWrite(S4,LOW);
}
if(unidades==2)
{
digitalWrite(S1,LOW); digitalWrite(S2,HIGH); digitalWrite(S3,LOW); digitalWrite(S4,LOW);
}
if(unidades==3)
{
digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,LOW); digitalWrite(S4,LOW);
}
if(unidades==4)
{
digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,HIGH); digitalWrite(S4,LOW);
}
if(unidades==5)
{
digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,HIGH); digitalWrite(S4,LOW);
}
if(unidades==6)
{
digitalWrite(S1,LOW);
digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); digitalWrite(S4,LOW);
}
if(unidades==7)
{
digitalWrite(S1,HIGH); digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); digitalWrite(S4,LOW);
}
if(unidades==8)
{
digitalWrite(S1,LOW); digitalWrite(S2,LOW); digitalWrite(S3,LOW); digitalWrite(S4,HIGH);
}
if(unidades==9)
{
digitalWrite(S1,HIGH); digitalWrite(S2,LOW); digitalWrite(S3,LOW); digitalWrite(S4,HIGH);
}
}
Código Processing
import processing.serial.*;//Liberría
Serial MiSerial;
color Apagado = color(0,0,0); //negro
color Motor = color(204,102,0); //anaranjado color ColorLED = color(28,142,255); // azul color Arranque = color(0,200,0); //verde color Paro = color(200,0,0); //rojo
PFont fuente; boolean BA = false; boolean BP = false; boolean BG = false; int giro = 0;
int a = 0;
int numero = 0;
void setup()
{
size (600,600);
String NombrePuerto = "COM1"; print(NombrePuerto);
MiSerial = new Serial(this,NombrePuerto,9600);
fuente=createFont("Arial",16); textFont(fuente); textAlign(CENTER,CENTER);
}
void draw()
{
background(255); fill(Arranque); ellipse(100,100,100,100);
fill(Paro); ellipse(100,220,100,100); fill(100,0,100); ellipse(100,340,100,100);
fill(Apagado); textFont(fuente,15); text("Arranque",210,100); text("Paro",200,220);
text("Inv. Giro",200,340); text("Motor a Pasos",400,250); text("Display 7 seg.",400,500); if(BG == true){giro = 1;}
if(BG == false){giro = 2;} if(BA == true && giro == 1)
{
if(numero>=10){numero=0;} display_A(numero); motor_derecha();
}
if(BA == true && giro == 2)
{
if(numero<0){numero=9;} display_A(numero); motor_izquierda();
}
if(BP == true)
{
giro=0; numero=0;
display_A(numero); fill(Apagado); rect(300,280,40,40); rect(350,280,40,40); rect(400,280,40,40); rect(450,280,40,40);
}
}
void mousePressed()
{
float distanciaA = dist(100,100,mouseX,mouseY); float distanciaP = dist(100,220,mouseX,mouseY); float distanciaG = dist(100,340,mouseX,mouseY);
...