Étape 3: C-programmation
Le code est écrit en C, que je n’aimais pas apprendre la langue de traitement « plus facile » qui arduino est issu. Je me suis écrit l’interface ARVA SPI et rf pour l’expérience d’apprentissage, mais emprunté le code assembleur i2c de avrfreaks.net. L’interface de shiftbright est bitbanged sous forme de code C.Un problème que j’ai rencontré était irradic petites variations accéléromètre-sortie, cela fait de la led clignote beaucoup. J’ai résolu ceci avec un filtre passe-bas de logiciel. Une moyenne mobile pondérée sur les valeurs de l’accéléromètre.
Le rf-ARVA soutien matériel crc et ack avec auto-retransmission, mais pour ce projet le temps réel, mise à jour lisse des leds est plus importante. Tous les paquets avec des valeurs de l’accéléromètre n’a pas besoin d’arriver intacte au niveau du récepteur, tant que les paquets corrompus est ignoré. J’ai eu aucun problème avec les paquets de RF perdus dans la ligne de mire de 20 mètres. Mais plus loin le lien est devenu instable, et les leds ne mettait pas à jour en permanence.
La boucle principale de l’émetteur en pseudo-code :
Initialize() ;
while (true) {}
Valeurs = abs (get x, y, z accéléromètre values()) ;
RF_send(values) ;
Delay(20ms) ;
}
La boucle principale du récepteur en pseudo-code :
Initialize() ;
while (true) {}
newValues = blocking_receiveRF()) ;
rgbValues = rgbValues + 0.2*(newValues-rgbValues) ;
écrire rgbValues à shiftbrigth ;
}