Professional Documents
Culture Documents
int count = 0;
int aux=0;
unsigned int posXdecimal=0;
unsigned int posYdecimal=0;
int i=0;
//BOTONERA
//Pin10: ENTER
//Pin11: BOTON ARRIBA
//Pin12: BOTON ABAJO
int botonEnter=10;
int botonArriba=12;
int botonAbajo=11;
void setup()
{
//Pines Botonera:
pinMode(botonEnter, INPUT);
pinMode(botonArriba, INPUT);
pinMode(botonAbajo, INPUT);
pinMode(CLK, OUTPUT);
pinMode(SYNC, OUTPUT);
pinMode(CHAN1, OUTPUT);
pinMode(CHAN2, OUTPUT);
digitalWrite(CLK, LOW);
digitalWrite(SYNC, LOW);
digitalWrite(CHAN1, LOW);
digitalWrite(CHAN2, LOW);
delay(5000);
digitalWrite(CHAN1, LOW);
digitalWrite(CHAN2, LOW);
digitalWrite(SYNC, LOW);
for( i = 0; i < 100; i++)
{
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
}
}
void loop()
{
//Header:
//Bit 1:
digitalWrite(SYNC, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
//Bit 2:
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
//Bit 3:
digitalWrite(CHAN1, HIGH);
digitalWrite(CHAN2, HIGH);
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
//Posicion:
//Min: 0 Max: 65535 (comprobado que ese es el maximo)
// posXdecimal=posXdecimal+300;
// posYdecimal=posYdecimal+300;
// posXdecimal=300;
//posYdecimal=300;
//Enviar posiciones
for( i = 15; i >= 0; i--)
{
//PosX:
salida = (posXdecimal >> i) & 1; // n=0..15. stores nth bit of x in y. y
becomes 0 or 1.
if(salida==1)
{
digitalWrite(CHAN1, HIGH);
}
else
{
digitalWrite(CHAN1, LOW);
}
//PosY:
salida = (posYdecimal >> i) & 1; // n=0..15. stores nth bit of x in y. y
becomes 0 or 1.
if(salida==1)
{
digitalWrite(CHAN2, HIGH);
}
else
{
digitalWrite(CHAN2, LOW);
}
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
}
//Parece que las paridades dan lo mismo si estan bien o mal
//Paridad X:
count = 0;
for (int n=0; n<16; ++n) {
if (posXdecimal & (1<<n)) {
++count;
}
}
if ( (count % 2) == 1)
{
digitalWrite(CHAN1, L);
}
else
{
digitalWrite(CHAN1, LOW);
}
//Paridad Y:
count=0;
for (int n=0; n<16; ++n) {
if (posYdecimal & (1<<n)) {
++count;
}
}
if ( (count % 2) == 1)
{
digitalWrite(CHAN2, LOW);
}
else
{
digitalWrite(CHAN2, HIGH);
}
digitalWrite(SYNC, LOW);
delay(30);
}