logiciel arduino pour boussole électronique

Etant étudiant en 2° année GEII, je dois réaliser un projet qui est de concevoir une boussole électronique. Ayant réalisé ma carte(schéma: schema10.jpg | Servimg.com - Free image hosting service), je dois concevoir mon programme en Arduino, mes contraintes sont les suivantes:
-utilisation d'un Atméga 328.

-générer un signal PWM de 1KHz (Flip Degauss).

-Utilliser un capteur de température TC77(/CS, SI/O et SCK) qui communique en SPI (MICROWIRE).

-Utilliser deux capteurs de champ magnétique KMZ51( VM_X et VM_Y), soit programmer deux CAN.

Pouvez-vous nous éclairer sur le problème et essayer de nous donner des idées. Merci d'avance.

J'ai avancé un peu le programme, voici les parties que j'ai réussi à programmer :

-Utilliser un capteur de température TC77(/CS, SI/O et SCK) qui communique en SPI (MICROWIRE) :

#include "Spi.h"
int spi = 14; // LED connected to digital pin 9
float temp;

void setup()
{
pinMode (16, OUTPUT); // Tc77 actif
// pinMode (spi, OUTPUT);
Spi.mode((1<<SPR0)); // set SPI clock to system clock / 16
}

void loop()
{
digitalWrite(16, LOW);
temp = Spi.transfer(0x00, 2000);
}

-Utilliser deux capteurs de champ magnétique KMZ51( VM_X et VM_Y), soit programmer deux CAN.

int vm_y = 24;
int vm_x = 23;
/int valx = 0;
int valy = 0;
/

void setup()
{

}

void loop()
{
valx = analogRead(vm_x);
valy = analogRead(vm_y);
/delay(valx);
delay(valy);
/
}

Il ne me reste plus qu'a générer un signal PWM de 1KHz.