final
Dependencies: mbed mbed-rtos SDFileSystem TB6612FNG
main.cpp
- Committer:
- avadivel3
- Date:
- 2019-12-05
- Revision:
- 0:3356e3f538d9
File content as of revision 0:3356e3f538d9:
#include "mbed.h" #include "TB6612FNG.h" #include "SDFileSystem.h" #include "rtos.h" SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board Thread thread; // -------------------taken pins-------------------------------- //5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,_,27,28,29,30 // ------------------------------------------------------------- //direction pins DigitalOut idir1(p9); DigitalOut idir2(p10); DigitalOut i2_dir1(p27); DigitalOut i2_dir2(p28); DigitalOut i3_dir1(p30); DigitalOut i3_dir2(p17); //in Thread thread; DigitalOut wc_dir1(p29); //SOLDER DigitalOut wc_dir2(p20); //SOLDER DigitalOut wc1_dir1(p12); //SOLDER DigitalOut wc1_dir2(p13); //SOLDER //pushbutton to stop program execution DigitalIn pb(p29); //pwm out to motors PwmOut ipwm(p21); PwmOut i2_pwm(p22); PwmOut i3_pwm(p23); //in Thread thread; PwmOut wc_in_pwm(p24); PwmOut wc_out_pwm(p25); //standby pins DigitalOut istdby(p11); DigitalOut set2_istdby(p18); DigitalOut wc_istdby(p14); //water level sensors DigitalIn water_level_fw_reservoir(p15); DigitalIn water_level_display_tank(p16); DigitalIn salt_mix_reservoir(p19); //flow rate (L/ # of days) float flow_rate_L_num_days = 40; //timespan (# of days) int days = 1; int sec_days = days * 86400; //vol of 2s pump (L) float two_s_pump_volume_L = 0.05; //pc serial connection Serial pc(USBTX, USBRX); // tx, rx //motors in main thread TB6612FNG fw_reservoir_to_display_tank(p27, p28, p22, p11); TB6612FNG source_to_fw_reservoir(p9, p10, p21, p11); TB6612FNG fw_reservoir_to_salt_mix_reservoir(p30, p17, p23, p18); //motors in Thread thread; TB6612FNG water_change_in(p29, p20, p24, p18); TB6612FNG water_change_out(p12, p13, p25, p14); //Motor Pins //TB6612FNG motor(PinName idir1, PinName idir2, PinName ipwm, PinName istby); void water_change(){ time_t start = time(NULL); // float flow_rate_L_num_days = 40; // float two_s_pump_volume_L = 0.05; int pumps_per_num_days = flow_rate_L_num_days / two_s_pump_volume_L; int total_wait_time = sec_days - (pumps_per_num_days * 2); int wait_bw_pump = total_wait_time / pumps_per_num_days; pc.printf("delay bw pumps in seconds: %d\n", wait_bw_pump); source_to_fw_reservoir.start(); water_change_in.start(); water_change_out.start(); while(time(NULL) - start < sec_days) { water_change_in.fwd(1); water_change_out.fwd(1); wait(wait_bw_pump); } water_change_in.stop(); water_change_out.stop(); } int main() { thread.start(water_change); pb.mode(PullUp); int count = 0; int count2 = 0; int count3 = 0; mkdir("/sd/mydir", 0777); FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); if(fp == NULL) { error("Could not open file for write\n"); } time_t start = time(NULL); fprintf(fp, "Start Time: %d\n", start); while(pb != 0) { //push button not pressed. pb != 0 //pc.printf("%d \n", test); ////////////////////////////////////////////// int val = water_level_fw_reservoir.read(); source_to_fw_reservoir.start(); while(val == 1) { //air detected val = water_level_fw_reservoir.read(); source_to_fw_reservoir.fwd(1); fprintf(fp, "SOURCE TO FWR #%d\n", count); time_t program_seconds = time(NULL); fprintf(fp, "Latest measurement time: %d\n", program_seconds); wait(2); count++; } source_to_fw_reservoir.stop(); /////////////////////////////////////////////////////// int val2 = water_level_display_tank.read(); //read display tank water level fw_reservoir_to_display_tank.start(); //pump start if(val2 == 1) { //air detected (needs water) fprintf(fp, "FWR TO DSPLY TANK #%d\n", count2); time_t program_seconds = time(NULL); fprintf(fp, "Latest measurement time: %d\n", program_seconds); fw_reservoir_to_display_tank.fwd(1); //power pump forward count2++; wait(2); } fw_reservoir_to_display_tank.stop(); /////////////////////////////////////////////////////// int val3 = salt_mix_reservoir.read(); //read display tank water level fw_reservoir_to_salt_mix_reservoir.start(); //pump start if(val3 == 1) { //air detected (needs water) fprintf(fp, "FWR TO SLT MX RVR #%d\n", count3); time_t program_seconds = time(NULL); fprintf(fp, "Latest measurement time: %d\n", program_seconds); fw_reservoir_to_salt_mix_reservoir.fwd(1); //power pump forward count3++; wait(2); } fw_reservoir_to_salt_mix_reservoir.stop(); } fclose(fp); //close sd filesystem }