Sketch arduino pour simuler un CAN n bits puis restituer la valeur obtenue par un CNA de même résolution

Montage

Sortie série

Code à téléverser

/** * can.ino * Ce sketch affiche la valeur de la tension appliquée à l'entrée A0 * avec une résolution au choix pour le CAN et le CNA * * Ue −[CAN]−> canValue −[CNA]−> cnaVoltage */ // 1. Déclarations des constantes et variables globales // Résolution du CAN au choix − N bits const byte CAN_RES = 6; // Nombre de niveaux de quantification = 2^CAN_RES const int LEVELS = 1 << CAN_RES; // Nombre de bits à supprimer pour passer de 10 à N bits const byte SHIFT_BITS = 10 - CAN_RES; // 2. Setup − Exécuté une seule fois void setup() { // Fixe la vitesse de communication entre arduino et le PC Serial.begin(9600); } // 3. Loop − Variables recréées à chaque boucle void loop() { // Valeur numérique − CAN N bits int canValue = analogRead(A0) >> SHIFT_BITS; // Reconstruction de la tension − CNA N bits float cnaVoltage = canValue * 5.0 / (LEVELS - 1); // Afficahge des grandeurs for (int i = CAN_RES - 1; i >= 0; i--) { Serial.print(bitRead(canValue, i)); // Valeur bianire de canValue } Serial.print("\t"); Serial.print(canValue); // Valeur décimale de canValue Serial.print("\t"); Serial.println(cnaVoltage, 2); // Tension restituée − 2 décimales // On attend une seconde delay(1000); } // 4. Fonctions − Variables locales