hola amigos del foro,estoy con un proyecto de robot.Tengo un arduino nano y quiero aprobechar cada pin de este.Mi idea es controlar un l293b mediante el 74hc595 e visto que se controlan led pero no lo tengo muy claro.Me podrian ayudar??
Ya tengo una lcd conectada al nano con otro 74hc595 pero encontre una librería y la conecte siguiendo un tutoríal. : Smiley-confunden:
Saludos.
El 74595 es un registro de desplazamiento con latch. La forma de controlarlo es fácil y no necesitas una librería para controlarlo.
Lo primero este integrado utiliza 3 pines de control. El latch es para indicarle al integrado cuando debe cambiar sus estados. Posee un pin de datos y otro de reloj. Asi que puedes conectar en paralelo varios de estos señores y controlarlos por el latch (uno para cada 74595) o colocarlos en serie y colocar todos los cables en paralelo (usas solo 3 pines pero es mas lento).
Para hacer lo que pretendes debes cargar una variable tipo byte con los valores de las salidas que deseas. y luego utilizas esta funcion.
void update595( byte value ) {
digitalWrite( RCLK, LOW );
shiftOut( DIO, SCLK, MSBFIRST, value ); // update data
digitalWrite( RCLK, HIGH );
}
Donde
RCLK : lactch.
DIO : Datos.
SCLK : Reloj.
hola amigo,gracias por tu respuesta algo me e aclarado,el problema es que ahora e dado valor a la variable.
pero para hacer funcionar el motor tengo que desconectar uno de los pines del 74595 para activar el puente.
te dejo el codigo para que lo veas.
int latch=12;
int clockpin=8;
int data=11;
byte avanza = 256;
byte para = 0;
void setup(){
pinMode(latch,OUTPUT);
pinMode(clockpin,OUTPUT);
pinMode(data,OUTPUT);
}
void loop(){
adelante(avanza,para);
delay(1000);
atras(avanza,para);
delay(1000);
}
void adelante(byte,byte) {
digitalWrite( latch, LOW );
shiftOut( data, clockpin, MSBFIRST,avanza); // update data
digitalWrite( latch, HIGH );
digitalWrite( latch, LOW );
shiftOut( data, clockpin, LSBFIRST,para); // update data
digitalWrite( latch, HIGH );
}
void atras(byte,byte) {
digitalWrite( latch, LOW );
shiftOut( data, clockpin, MSBFIRST,para); // update data
digitalWrite( latch, HIGH );
digitalWrite( latch, LOW );
shiftOut( data, clockpin, LSBFIRST,avanza); // update data
digitalWrite( latch, HIGH );
}
hola de nuevo ,aki estoy investigando un poco ,una duda que me a surgido ,como puedo activar un pin del 74hc595?se activa dando el valor maxio de la variable pero como puedo seleccionar el pin de salida?
Ok.
Como te explique no puedes controlar un solo pin.
Tienes que tener en una variable tipo byte la informacion que vas a enviar al 74595, alli con bitSet o clearBit en arduino puedes variar el bit (representacion del pin) que deseas y luego enviar la informacion de nuevo.