Lab 6 code.

Dependencies:   mbed

Fork of WaG by GroupA

main.cpp

Committer:
spm71
Date:
2018-02-20
Revision:
2:b444464ebe67
Parent:
1:1b05289d0bf5
Child:
3:293ff9cb705d

File content as of revision 2:b444464ebe67:

/******************************************************************************
* EECS 397
*
* Assignment Name: Lab 4: display_test2
* 
* Authors: Sam Morrison and Phong Nguyen 
*
* Purpose: Configures the board for 5-digit display
*
* Last Modified: 02/19/2018
*
******************************************************************************/
#include "mbed.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

DigitalOut SS(PC_7);

SPI spi(PA_7, PA_6, PA_5);
Serial pc(USBTX, USBRX);

bool num_range(char input[5]);
char to_command(char input, int place);

int main(void) {
    SS = 1; 
    
    spi.format(16,0);
    spi.frequency(1000000);
    
    SS = 0;
    spi.write(0x0C01); //normal operation
    SS = 1;
    
    SS = 0;
    spi.write(0x090F); //decode to bits 0:3
    SS = 1;
    
    SS = 0;
    spi.write(0x0F00); //set to normal mode
    SS = 1;
    
    SS = 0;
    spi.write(0x0A0F); //intensity set to max
    SS = 1;
    
    SS = 0;
    spi.write(0x0B04); //display digits 0:4
    SS = 1;
    
    SS = 0;
    spi.write(0x0100); //set digit 1 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0200); //set digit 2 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0300); //set digit 3 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0400); //set digit 4 to 0
    SS = 1;
    
    SS = 0;
    spi.write(0x0500); //set digit 5 to 0
    
    float command = 0x0100;
    int input;
    //char command_text[10] = "0x0";
    while(1) {
        pc.printf("Select a digit between 0 and 9999:\n");
        bool check = scanf("%d", &input);
        while (check != 1) {
            pc.printf("Select a digit between 0 and 9999:\n");
            check = scanf("%d", &input);
        }
        
        /*
        while (num_range(input) == false) { //ask for input until 0-9999 is selected
            pc.printf("Select a digit between 0 and 9999:\n");
            scanf("%d", input);
        }
        
        
        command_text[3] = place + '0';
        command_text[4] = '0';
        command_text[5] = input;
        
        command = atof(command_text); //converts string to float
        */
        
        pc.printf("command: %s\n", command_text);
        
        
        SS = 0;
        spi.write(command); // need to cycle 4 times
        SS = 1;
        //pc.printf("command: &f\n", commmand);
    }
    
    /*
    SS = 0;
    spi.write(0x0100); //set digit 0 to 0
    SS = 1;
    */
}

bool num_range(char input[5]) {
     bool result = true;
     for (int i = 1; i < 6; i++) {
        if (i > 4)
            if (input[i] != 0) //checks for number larger than 9999
                result = false; 
        if (input[i] < 48 or input[i] > 57) //checks for digits outside 0-9
            result = false;
     }
     return result;
}

char to_command(char input, int place) {
    
}