Étape 2: Programmer le micro-contrôleur
Il y a deux parties principales de ce programme :
Le code du programme est commenté, s’il vous plaît se référer à elle.
- Un programme qui crée un cycle d’éclairage modulé, qui est relié à une horloge principale qui conserve la trace des choses. L’horloge maître garde le temps par une période d’interruption prédéfinis - de toute période que vous désirez ! Autrement dit, il est interrompu et incrémenté d’un montant basé sur la taille du « modulation_step_period ». Chaque fois que l’horloge est interrompu, une variable appelée « intensity_index_counter » incréments par 1. Valeur d’index de « intensity_index_counter » récupère une valeur d’un tableau dans le fichier d’en-tête « Data.h » et le passe à « TACCR1 ». Ce tableau représentent les nombres de 1440 sur la base d’une période de 24 heures (1440 = 24 h * 60 min/h = x). Chaque valeur du tableau représente le temps que le signal est actif sur le « PWM_Period » - c’est effectivement le rapport cyclique. Notez que les nombres dans le tableau sont générés d’une formule de Gauss: f (x) = ("frequency")*EXP(-0.5*((x-Xc/2)/100)^2).
- Un programme qui reçoit un signal de l’UART et reprogramme l’intensité de l’éclairage. Utilise le port RX sur le microcontrôleur, octets sont nourris dans un par un d’un module Bluetooth et lu par le microcontrôleur. Si la taille du caractère est supérieure à 1 octet, puis chaque octet est transmis un par un dans un tableau "Current_Time []". Puisque les octets arrivent en tant que type char, ils sont ensuite converties en type int et assignés à « true_time », ce qui arrive par cas. Si le microcontrôleur reçoit toutes les informations de l’UART, un drapeau est surélevé « frame_received_flag » et la valeur de « intensity_index_counter » est remplacée par « true_time ». * Notez que l’application écrite pour l’envoi d’octets au microcontrôleur envoie 1, 2, 3 ou 4 chiffres codée en ascii.
- Le code de programme a été compilé à l’aide de Code compositeur Studio.