Simple mbed OS 5 test application for X-NUCLEO-OUT01A1 Industrial Digital output expansion board.

Dependencies:   X_NUCLEO_OUT1A1

main.cpp

Committer:
nikapov
Date:
2018-02-12
Revision:
0:d4d48da1e5d2

File content as of revision 0:d4d48da1e5d2:


#include "XNucleoOUT01A1.h"

XNucleoOUT01A1 *out01a1;
DigitalOut led1(LED1);

// main() runs in its own thread in the OS
int main() {
    
    printf("X-NUCLEO-OUT01A1 simple test application\n\r");
    
    
    
    /* Default Nucleos pinout, change accordingly on other platforms */
    out01a1 = new XNucleoOUT01A1(mode_direct, NC, A3, A4, A5, A0, A1, NC, A2, 
                                    D5, D4, D14, D15);
    out01a1->enable_outputs(true);
    
    printf("\n\rSetting all channels on\r\n");
    
    out01a1->set_inputs(0xFF);
    
    wait(3);
    
    out01a1->set_inputs(0x00);
    
    printf("\n\rIterating through channels in direct mode\r\n");
                                    
    for (int i=1; i<=8; i++) {
        
        uint8_t input_mask = 0x1 << (i-1);
        out01a1->set_inputs(input_mask);
        
        if (i == 3) {
            printf ("Input 3 not connected\n\r"); // pin3 not connected on Nucleo boards
        } else {
            printf("Output %d set \n\r", i);
        }
        
        wait(1);
    }
    
    out01a1->set_inputs(0x00);
    
    out01a1->enable_outputs(false);
    
    delete out01a1;
    
    wait(1);
    
    printf("\n\rNow iterating through channels in sync mode\r\n");
    
    /* Default Nucleos pinout, change accordingly on other platforms */
    out01a1 = new XNucleoOUT01A1(mode_sync);        
    out01a1->enable_outputs(true);
                                    
    for (int i=1; i<=8; i++) {

        uint8_t input_mask = 0x1 << (i-1);
        out01a1->set_inputs(input_mask);
        out01a1->update_outputs();
        
        if (i == 3) {
            printf ("Input 3 not connected\n\r"); // pin3 not connected on Nucleo boards
        } else {
            printf("Output %d set \n\r", i);
        }
        
        wait(1);
    }
    
    out01a1->enable_outputs(false);
    
    printf("\n\rTest completed, now blinking the LED!!\n\r");
         
    while (true) {
        led1 = !led1;
        wait(0.5);
    }
}