Академический Документы
Профессиональный Документы
Культура Документы
2
3
4
5
//Display 7 Segmentos Catodo Común
int display7c[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
//Display 7 Segmentos Anodo Común
int display7a[10]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x18};
//Delcaración de Los Pines del Display
byte a=2;
byte b=3;
byte c=4;
byte d=5;
byte e=6;
byte f=7;
byte g=8;
// Declaración de los Pines de los Transistores
byte t1=9;
byte t2=10;
byte t3=11;
byte t4=12;
6
//Contadores para hacer el Temporizador
long tempor=0,contret=0;
//Función que coloca en el puerto de salida los bits comenzando
// desde el pin ini hasta el pin fin
void puerto(int bits,int ini,int fin){
for(int i=ini;i<=fin;i++)
{
digitalWrite(i,bitRead(bits,i-ini));
}
}
//Rutina de Multiplexación
for(int i=t1;i<=t4;i++){
//Muestra unidades
puerto(display7c[dig[i-t1]],a,g);
digitalWrite(i,HIGH); //Enciende el display de unidades
delay(1); //Retardo de 1 milisegundos
digitalWrite(i,LOW); //Apaga el display de unidades
}
}
//Programa Principal
void loop() {
tempor=0; //Inicializa el temporizador en Cero
while(tempor<9999) //mientras la variable TEMPOR es menor que 9999
{
temporizacion(); //Llama la Función Temporizaor
tempor++; //Incrementa el tempor
}
}
8
9
10
11
12
13
//Declaración de los PULSADORES
byte PHorario = 2; //Pulsador sentido horario
byte PAntiHorario = 3; //Pulsador sentido anti horario
byte PPasos = 4; //Pulsador número de pasos
byte PVel = 5; //Pulsador velocidad
14
//secuencia 1 paso
const int UnPaso[4] = { B1000,
B0100,
B0010,
B0001 };
//secuencia 2 pasos
const int DosPasos[4] = { B1100,
B0110,
B0011,
B1001 };
// Secuencia a medio paso
byte const MedioPaso[8] = { B1000,
B1100,
B0100,
B0110,
B0010,
B0011,
B0001,
B1001 };
//Función que coloca en el puerto de salida los bits comenzando
// desde el pin ini hasta el pin fin
void puerto(int bits,int ini,int fin){
for(int i=ini;i<=fin;i++)
{
digitalWrite(i,bitRead(bits,i-ini));
}
}
void setup() {
void loop() {
//******************************************************************************//
//*********** Pregunta por los Pulsadores *********************************//
//******************************************************************************//
puerto(B0000,IN1,IN4);
}
//******************************************************************************//
//*********** Logica de los contadores *********************************//
//******************************************************************************//
if(horario==1)
{
Cpaso++; //Incremente la variable cont
16
if(Cpaso>=paso)
Cpaso=0; //Se pone Contador de pasos en cero
}
else{
Cpaso--; //Decremente la variable cont
if(Cpaso<0)
Cpaso=paso-1; //Se pone Contador igual al paso
}
//******************************************************************************//
//*********** Secuencia de Movimiento del Motor ***************************//
//******************************************************************************//
switch(conf){
case 1:
puerto(UnPaso[Cpaso],IN1,IN4); //Envíe al puerto la información de la tabla
paso=4;
break;
case 2:
puerto(DosPasos[Cpaso],IN1,IN4); //Envíe al puerto la información de la tabla
paso=4;
break;
case 3:
puerto(MedioPaso[Cpaso],IN1,IN4); //Envíe al puerto la información de la tabla
paso=8;
break;
}
delay(vel[Cvel]); //Retardo de 100 milisegundos
17