extern "C"
{
#include "poten_ctrl.h"
}
#define BUTTON_PIN 0
#define LIGHT_LEFT 7
#define LIGHT_RIGHT 8
/* Allocate model I/O structures */
inC_poten_ctrl in_struct;
outC_poten_ctrl out_struct;
void setup() {
Serial.begin(9600);
/* Arduino hw setup */
pinMode(BUTTON_PIN, INPUT);
pinMode(LIGHT_LEFT, OUTPUT);
pinMode(LIGHT_RIGHT, OUTPUT);
/* Init I/O memory structures */
memset(&in_struct, 0, sizeof(inC_poten_ctrl));
memset(&out_struct, 0, sizeof(outC_poten_ctrl));
/* Reset model internal state */
poten_ctrl_reset(&out_struct);
}
/* Simulate low-level driver handling lights */
void led_driver(int led_on)
{
digitalWrite(LIGHT_LEFT, false);
digitalWrite(LIGHT_RIGHT, false);
digitalWrite(led_on, true);
}
void loop() {
/***** Partition TrafficLight *******************/
/* Read model inputs from HW */
in_struct.poten_input = analogRead(BUTTON_PIN);
/* Call model main fuction */
poten_ctrl(&in_struct, &out_struct);
/* Write model outputs to HW */
led_driver((int) out_struct.led_cmd);
Serial.println(out_struct.led_cmd);
/************************************************/
/* Scheduler at 20 Hz = 50 ms */
delay(50);
}