Paso 4: Software. Que cosa que hace cosas cosas.
¿Sí, las herramientas. Luego vaya a la "Junta" y seleccione "attiny2313 @ 8Mhz". Sí, sé que los otros instrucable dijo para ponerlo a 1MHz antes. USA 8MHz porque hace correr 8 veces más rápido, con absolutamente ninguna modificación del software o de otro modo. Asegurándose que su arduino normal está configurado para enviar programas a lo attiny (pueden destruir el arduino si no lo es), haga clic en "Herramientas > Burn Bootloader". Deberán parpadear algunas luces, y entonces debe decir "bootloader hecho ardiente". Si no devolvió un error, entonces solo sube el código normalmente. Cuando las luces de blinky, desconecte el arduino, saque el attiny y romper una vez más su protoboard.
ATtiny 2313 controlador paso a paso por Jduffy. Instrucciones en instrucatables.
byte const I011 = 1; //the clavijas para cada función.
byte const I111 = 2; //names terminan en 1 son de paso a paso 1
dr11 byte const = 3;
byte const I021 = 8;
byte const I121 = 9;
const dr21 bytes = 10;
byte const I012 = 11; //same para el paso a paso 2
byte const I112 = 12;
dr12 byte const = 13;
byte const I022 = 14;
byte const I122 = 15;
const dr22 bytes = 16; //for todo el siguiente, 0 representa en "on" pin
como la 2619 registros de baja como activo.
listas como esta se utilizan porque tienen muy poco de la
chips de memoria, que para el attiny2313, escasea (sólo 2k!)
También simplifica el código a continuación.
Boolean stp10 [] = {1,0,1,0,1,0,1,0,1,0,1,0}; //output LSB corriente limitar 1
Boolean stp11 [] = {1,1,0,0,0,1,1,1,0,0,0,1}; //output a MSB corriente limitar 1
Boolean stpd1 [] = {1,1,1,1,1,1,0,0,0,0,0,0}; //output a la dirección 1
Boolean stp20 [] = {0,1,0,1,0,1,0,1,0,1,0,1}; //output LSB corriente limitar 2
Boolean stp21 [] = {0,0,1,1,1,0,0,0,1,1,1,0}; //output a MSB corriente limitar 2
Boolean stpd2 [] = {0,0,0,1,1,1,1,1,1,0,0,0}; //output a la dirección 2
stepp1 bytes, //step parte de paso a paso 1
largo pos1; / / posición "real" de paso a paso 1
dpos1 largo, //desired posición de paso a paso 1
byte 1 = 6; la clavija de entrada de //direction para el paso a paso 1
stepp2 bytes, //same cosas para paso a paso 2
pos2 largo;
largo dpos2;
in2 byte = 7;
void setup() {}
DDRB = B11111111; //This es muy importante, ya que es la
DDRD = B1000011; //same como "pinMode(); pero ocupa muy poco espacio.
Si utilizas otra cosa que un attiny 2313, entonces debe cambiar todos estos a
el estándar "pinMode();" comando.
DDRA = B011; //if utiliza pines 6 o 7 como salidas, se deben cambiar estas líneas
//
Si no sabes lo que significan estas líneas, hay una
explicación en http://arduino.cc/en/Reference/PortManipulation
attachInterrupt (0, paso 1, levantamiento); //ALWAYS en digital 4 o 5 (0 = 4, 1 = 5), las interrupciones no pueden ser
attachInterrupt 1, step2, levantamiento; //on cualquier otros pernos, a menos que use pcinterrupts, que ofrece poco
} //to ninguna ventaja. El 0 y 1 son los mismos para todas las placas avr, aunque el perno sí mismo número será diferente
void loop() {}
Si (pos1! = dpos1) {//if el paso a paso no está donde debe estar...
Si (pos1 < dpos1) {//and necesita para seguir adelante...
stepfwd1 (); //go adelante!
} else {//otherwise
stepbck1 (); //go al revés!
}
}
Si (pos2! = dpos2) {//do lo mismo para el paso a paso 2
Si (pos2 < dpos2) {}
stepfwd2();
} else {}
stepbck2();
}
}
delayMicroseconds(3); esperar un poco
}
void step1() {//if el pin de "paso" de paso a paso 1 trajeron alto
if(digitalRead(in1)==LOW) {//and el pin de "dirección" es baja
dpos1 ++; //tell el bucle de dar un paso adelante 1
} else {//otherwire
dpos1--; //step espalda 1
}
}
void step2() {//same para paso a paso 2
{if(digitalRead(in2)==LOW)}
dpos2 ++;
} else {}
dpos2--;
}
}
void stepfwd1() {//if paso a paso 1 necesidades para seguir adelante
stepp1 ++; //advance la secuencia de paso 1
Pos1 ++; //increase la posición tanto por 1
Si (stepp1 > 11) {//if consumado un completo paso entonces
stepp1 = 0; //reset a principio de la secuencia de paso
}
hacia fuera (); //digitalWrite todos los pernos que lo necesitan.
}
void stepfwd2() {//same para paso a paso 2
stepp2 ++;
POS2 ++;
Si (stepp2 > 11) {//if consumado un completo paso entonces
stepp2 = 0; //reset a principio de la secuencia de paso
}
out();
}
void stepbck1() {//if necesita volver
stepp1--; //move el paso trasero de la secuencia
Pos1--; //move la presumible posición trasera
Si (stepp1 > 12) {//if consumado un completo paso entonces
stepp1 = 11; //reset a principio de la secuencia de paso
}
out();
}
void stepbck2() {//same para paso a paso 2
stepp2--;
POS2--;
Si (stepp2 > 12) {//if consumado un completo paso entonces
stepp2 = 11; //reset a principio de la secuencia de paso
}
out();
}
{} void out()
if(stepp1>11) {//these impedir el byte "stepp" salir de los datos
stepp1 = 0; en las listas de paso.
}
if(stepp2>11) {}
stepp2 = 0;
}
digitalWrite (I011, stp10 [stepp1]); //writes los valores de cada lista para su pin.
digitalWrite(I111,stp11[stepp1]);
digitalWrite(dr11,stpd1[stepp1]);
digitalWrite(I021,stp20[stepp1]);
digitalWrite(I121,stp21[stepp1]);
digitalWrite(dr21,stpd2[stepp1]);
digitalWrite(I012,stp10[stepp2]);
digitalWrite(I112,stp11[stepp2]);
digitalWrite(dr12,stpd1[stepp2]);
digitalWrite(I022,stp20[stepp2]);
digitalWrite(I122,stp21[stepp2]);
digitalWrite(dr22,stpd2[stepp2]);
}