#include <LS7366.h>
#include <SPI.h>
#include <SoftwareSerial.h>
// Definimos los pines CS para comunicación SPI con cada circuito
LS7366 Encoder1(10);
LS7366 Encoder2(9);
LS7366 Encoder3(
;
SoftwareSerial BT1(4,5); //RX,TX
long countX=0;
long countY=0;
long countZ=0;
void setup() {
Serial.begin(19200);
BT1.begin (19200);
// Configuración del modo de trabajo del LS7366
// Divisor reloj/2, Deshabilitar Indice, Conteo libre, 4 cuentas por ciclo
Encoder1.write_mode_register_0(FILTER_1 | DISABLE_INDX | FREE_RUN | QUADRX4);
// No Flag, Habilita conteo, Contador de 4 Bytes
Encoder1.write_mode_register_1(NO_FLAGS | EN_CNTR | BYTE_4 );
// Borrar contador
Encoder1.clear_counter();
// Borrar registro estado
Encoder1.clear_status_register();
// 4 Bytes
Encoder1.write_data_register(4);
Encoder2.write_mode_register_0(FILTER_1 | DISABLE_INDX | FREE_RUN | QUADRX4);
Encoder2.write_mode_register_1(NO_FLAGS | EN_CNTR | BYTE_4 );
Encoder2.clear_counter();
Encoder2.clear_status_register();
Encoder2.write_data_register(4);
Encoder3.write_mode_register_0(FILTER_1 | DISABLE_INDX | FREE_RUN | QUADRX4);
Encoder3.write_mode_register_1(NO_FLAGS | EN_CNTR | BYTE_4 );
Encoder3.clear_counter();
Encoder3.clear_status_register();
Encoder3.write_data_register(4);
}
void loop() {
// Leer cada uno de los contadores y enviar el dato
long countX = Encoder1.read_counter();
BT1.print("X");
BT1.print((long)countX);
BT1.print(";");
long countY = Encoder2.read_counter();
BT1.print("Y");
BT1.print((long)countY);
BT1.print(";");
long countZ = Encoder3.read_counter();
BT1.print("Z");
BT1.print((long)countZ);
BT1.print(";");
delay(200);
}