Paso 3: Programación en C
El código está escrito en C ya no me importaba para aprender la lengua "más fácil" de procesamiento que arduino se basa en. Yo mismo escribió la interfaz SPI y rf del transceptor para la experiencia de aprendizaje, pero pidió prestado el código ensamblador de i2c de avrfreaks.net. La interfaz de shiftbright es bitbanged en el código de C.Uno de los problemas que encontré fue irradic pequeñas variaciones en la salida de acelerómetro, esto hizo el led parpadear mucho. Había solucionado esto con un filtro de paso bajo de software. Una media móvil ponderada en los valores de acelerómetro.
El transceptor rf soporte hardware crc y ack con transmisión automática, pero para este proyecto el en tiempo real, actualización de lisa de los leds fue más importante. Cada paquete con valores de acelerómetro no necesita llegar intacto al receptor, siempre y cuando se descarta los paquetes corruptos. No he tenido problemas con paquetes perdidos de RF dentro de 20 metros línea de vista. Pero lejos el enlace llegó a ser inestable, y los leds no se actualizan continuamente.
El bucle principal del transmisor en seudocódigo:
Initialize();
mientras {}
Valores = abs (obtener x, y, z acelerómetro values());
RF_send(values);
Delay(20ms);
}
El bucle principal del receptor en seudocódigo:
Initialize();
mientras {}
nuevos valores = blocking_receiveRF());
rgbValues = rgbValues + 0.2*(newValues-rgbValues);
Escriba rgbValues para shiftbrigth;
}