
lab 3
Dependencies: mbed mbed-rtos tsi_sensor SLCD
Diff: main.cpp
- Revision:
- 0:78b84e1ce9df
- Child:
- 1:03ee5f19d879
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Feb 18 21:16:23 2020 +0000 @@ -0,0 +1,299 @@ +#include "mbed.h" +#include "rtos.h" + +#include "stdio.h" +#include "stdint.h" +#include "ctype.h" +#include "math.h" +#include "errno.h" + +/* These are header files created for EE 3420 that are generally useful but add a minimum of dependencies */ +#include "Freedom_headers.h" +//The following are names for pins by position on the headers +/* +The USB connections are on this end of the board + + J2_19 OO J2_20 + J2_17 OO J2_18 + J2_15 OO J2_16 + J2_13 OO J2_14 +J3_2 OO J3_1 J2_11 OO J2_12 +J3_4 OO J3_3 J2_9 OO J2_10 +J3_6 OO J3_5 J2_7 OO J2_8 +J3_8 OO J3_7 J2_5 OO J2_6 +J3_10 OO J3_9 J2_3 OO J2_4 +J3_12 OO J3_11 J2_1 OO J2_2 +J3_14 OO J3_13 +J3_16 OO J3_15 J1_15 OO J1_16 + J1_13 OO J1_14 +J4_2 OO J4_1 J1_11 OO J1_12 +J4_4 OO J4_3 J1_9 OO J1_10 +J4_6 OO J4_5 J1_7 OO J1_8 +J4_8 OO J4_7 J1_5 OO J1_6 +J4_10 OO J4_9 J1_3 OO J1_4 +J4_12 OO J4_11 J1_1 OO J1_2 + +*/ + +#include "ASCII.h" + +#ifndef TRUE +#define TRUE (1==1) +#endif + +#ifndef FALSE +#define FALSE (1==0) +#endif + +#ifndef BIT +#define BIT(N) (1 << (N)) +#endif + +//Pushbuttons (active-low), digital input or interrupt input +//pins need pull-up resistors +DigitalIn left_button(PTC12, PullUp); +//InterruptIn left_button(PTC12, PullUp); +DigitalIn right_button(PTC3, PullUp); +//InterruptIn right_button(PTC3, PullUp); + +//User LEDs +DigitalOut red_led(PTE29); +DigitalOut green_led(PTD5); + +//Light sensor (phototransistor) +AnalogIn light_sensor(PTE22); + +//Temperature sensor(LM34) +AnalogIn LM34(PTC2); + +//Speakers +PwmOut speaker1(PTE21); +PwmOut Speaker2(PTE23); + +// All of the follwoing define "pc" identically +Serial pc(USBTX, USBRX); // MBED standard pin names +//Serial pc(PTA2, PTA1); // KL46Z pin names +//Serial pc(J1_4, J1_2); // Jumper position pin names +//Serial pc(D1,D0); // Arduino-equivalent pin names +/* USBTX=PTA2, USBRX=PTA1 */ +/* UART0_TX=PTA2, UART0_RX=PTA1, so actually UART0 */ +/* UART0 on KL46Z routed through OpenSDA chip to USB */ +/* now "pc" refers to this virtualized com port on host computer*/ + +/* available functions */ +/* +pc.baud() +pc.format() +pc.readable() +pc.writeable() +pc.read() +pc.write() +pc.getc() +pc.putc() +pc.gets() +pc.puts() +pc.printf() +pc.scanf() +*/ + +#include "VT100.h" +//The VT100 functions send terminal control commands to the "pc" serial port +/* +void vt100_home() +void vt100_move_cursor(int row, int column) +void vt100_save_cursor() +void vt100_unsave_cursor() +void vt100_up() +void vt100_up_by(int count) +void vt100_down() +void vt100_down_by(int count) +void vt100_right() +void vt100_right_by(int count) +void vt100_left() +void vt100_left_by(int count) +void vt100_erase_right() +void vt100_erase_left() +void vt100_erase_line() +void vt100_erase_above() +void vt100_erase_below() +void vt100_erase_screen() +void vt100_set_attribute(int attrib) +void vt100_text_default() +void vt100_text_bright() +void vt100_text_dim() +void vt100_text_underscore() +void vt100_text_blink() +void vt100_text_reverse() +void vt100_text_hidden() +void vt100_set_foreground(vt100_colors color) +void vt100_set_background(vt100_colors color) +*/ + +#include "SLCD.h" +//slcd is the 4-digit, 7-segment LCD on the KL46Z +SLCD slcd; +/* available functions */ +/* +slcd.printf("1234"); // standard printf function, only charaters in ASCII_TO_WF_CODIFICATION_TABLE will display +slcd.putc('A'); // prints a single character +slcd.Write_Char('A'); // prints a single character +slcd.All_Segments(y); // y=1 for ALL segments on, 0 for ALL segments off +slcd.DPx(y); // x=DP1 to DP3, y=1 for on 0 for off +slcd.Colon(y); // y=1 for on, 0 for off +slcd.CharPosition=x; // x=0 to 3, 0 is start position +slcd.Home(); // sets next charater to posistion 0 (start) +slcd.Contrast (x); // set contrast x=0 - 15, 0 lightest, 15 darkest +*/ + +#include "tsi_sensor.h" +//Touch Sensitive Interface +#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) + #define ELEC0 9 + #define ELEC1 10 +#elif defined (TARGET_KL05Z) + #define ELEC0 9 + #define ELEC1 8 +#else + #error TARGET NOT DEFINED +#endif +TSIAnalogSlider tsi(ELEC0, ELEC1, 40); + +/* available functions */ +/* float TSIAnalogSlider.readPercentage() */ + +#include "keypad4x4.h" +//BusOut keypad4x4_columns(PTE19, PTE18, PTE17, PTE16); +//BusIn keypad4x4_rows(PTA14, PTA15, PTA16, PTA17); +//InterruptIn keypad4x4_interrupt(PTC16); +//available functions: +/* +int keypad4x4_set_type(int type) +int keypad4x4_query(char *key_value, int * key_row, int *key_column) +char keypad4x4_getc(void) +int keypad4x4_input(char *key_value, int * key_row, int *key_column) + +*/ + +#include "NKC_LCD.h" +Serial lcd(PTD3,NC); +//Serial lcd(J1_6,NC); +//available functions: +/* +int lcd_baud_decode(int baud) +int lcd_baud(int baud); +int lcd_default_baud(int baud); +void lcd_on() +void lcd_off() +void lcd_ddram_address(int address) +int lcd_cursor(int row, int column) +void lcd_home() +void lcd_underline_on() +void lcd_underline_off() +int lcd_underline(int select) +void lcd_backspace() +void lcd_clear() +void lcd_blink_on() +void lcd_blink_off() +int lcd_blink(int select) +void lcd_move_left() +void lcd_move_right() +void lcd_shift_left() +void lcd_shift_right() +*/ + +//Stepper motor driver (ULN2803A) +BusOut stepper(PTB0, PTB1, PTB2, PTB3); +//BusOut stepper(J4_2, J4_4, J4_6, J4_8); + +//DC Quad Half-Hmotor driver (SN754410) +DigitalOut motor_1(PTB20); +DigitalOut motor_2(PTE30); +DigitalOut motor_3(PTB18); +DigitalOut motor_4(PTB19); +PwmOut motor_enable_12(PTA6); +PwmOut motor_enable_34(PTA7); +//DigitalOut motor_enable_12(PTA6); +//DigitalOut motor_enable_34(PTA7); + +//Servo motors +PwmOut servo1(PTA4); +PwmOut servo2(PTA5); + +//Inter-integrated circuit bus +//I2C i2c0(PTE25, PTE24); //internal I2C bus for accelerometer and magnetometer +//I2C i2c1(PTE0, PTE1); //external I2C bus (commonly real-time clock); +//I2C i2c1(D14, D15); //external I2C bus (commonly real-time clock); + +//alternative serial port +Serial uart1(PTE0,PTE1); + +//IMPORTANT NOTE: i2c1 and uart1 both use PTE0/PTE1 so cannot be used simultaneously. + +//common SPI (MSI, MISO, SCK, SS, use_gpio_ssel_t) +//SPI spi1(PTD6, PTD7, PTD5); +//SPI spi1(PTD6, PTD7, PTD5, PTD4, use_gpio_ssel_t); +//SPI spi1(D11, D12, D13); +//SPI spi1(D11, D12, D13, D10, use_gpio_ssel_t); + +char pc_string[50]; +char uart1_string[50]; +int pc_count=0; +int uart1_count=0; +int pc_ready=0; +int uart1_ready=0; + +char tempc; + +int main() +{ + pc.baud(115200); + lcd_default_baud(115200); + lcd_baud(115200); + uart1.baud(115200); + slcd.All_Segments(0); + + + +while(true) +{ + if(pc.readable()) + { + tempc=pc.getc(); + pc_string[pc_count++]=tempc; + if(pc_count>=40 || tempc==CR || tempc==LF) + { + pc_string[pc_count++]='\n'; + pc_string[pc_count++]=NULL; + pc_ready=1; + } + } + if(uart1.readable()) + { + + + } + if(pc_ready == 1) + { + pc.putc('\n'); + vt100_set_foreground(green); + //pc.puts(pc_string); + pc.printf("%s",pc_string); + uart1.printf("%s",pc_string); + lcd_cursor(0, 0); + lcd.printf("%s",pc_string); + pc_ready=0; + pc_count=0; + vt100_text_default(); + } + if(uart1_ready==1) + { + + + + } + + +} +/* YOUR CODE GOES HERE */ + +}