กระปุกออมสินดิจิตอล
Dependencies: DigitDisplay Servo eeprom mbed my8x8RGB
Fork of Project_digital by
Revision 1:586f08d816ec, committed 2015-12-09
- Comitter:
- aimp
- Date:
- Wed Dec 09 06:58:30 2015 +0000
- Parent:
- 0:e4a8e7656728
- Commit message:
- V_final
Changed in this revision
diff -r e4a8e7656728 -r 586f08d816ec DigitDisplay.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DigitDisplay.lib Wed Dec 09 06:58:30 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/FRA221_2015/code/DigitDisplay/#d036b4009446
diff -r e4a8e7656728 -r 586f08d816ec Servo.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Servo.lib Wed Dec 09 06:58:30 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/simon/code/Servo/#36b69a7ced07
diff -r e4a8e7656728 -r 586f08d816ec main.cpp --- a/main.cpp Sat Dec 05 22:13:13 2015 +0000 +++ b/main.cpp Wed Dec 09 06:58:30 2015 +0000 @@ -1,43 +1,572 @@ #include "mbed.h" #include "eeprom.h" - - +# include "DigitDisplay.h" +#include "my8x8RGB.h" +#include "Servo.h" +Timer t; /* //ถึง 8192 //255 //16 // SET ค่า เก็บไว้ใน address 0 -// เก็บค่า address ที่ไรท์ไปถึง ไว้ address ที่ 1 +// เก็บค่า address ที่ไรท์ไปถึง ไว้ address ที่ 1 */ -InterruptIn countone(D3); -InterruptIn counttwo(D4); -InterruptIn countfive(D5); -InterruptIn countten(D6); + + + +InterruptIn countone(PA_13); +InterruptIn counttwo(PA_14); +InterruptIn countfive(PC_10); +InterruptIn countten(PC_12); + +EEPROM memory(I2C_SDA,I2C_SCL,0);//PB9 , PB8 +Serial pc(PA_15,PB_7); +//Serial pc(SERIAL_TX, SERIAL_RX); + +DigitDisplay dis(PC_8,PA_12);//PC8,PA12 = 7,8 + +InterruptIn ok(PB_2); -EEPROM memory(I2C_SDA,I2C_SCL,0); +AnalogIn button1(PC_5); +Servo servo(PC_6);//PC6 = LED1 +int cfall = 0; +uint8_t state_menu=0; +uint8_t state_show=0; +uint8_t state_exit =0; +uint8_t data; + +float value; +int position1; +int position2; +int position3; +int position4; +int valueint; +int userset= 0; +int limit=0; +int mode_set; +int display_RGB=-1; void printone(); void printtwo(); void printfive(); void printten(); int sumAll(); +void lock_pot_motor(); + +void LevelMatrix(int,int); +void LevelNumber(int); + int cone=0; int ctwo=0; int cfive=0; int cten=0; - +int value_from_eeprom; int current_a=3; int current_v; +int l=0 ; +int data_final = 'f'; +int state_final = 0; + +float level_0,level_1,level_2,level_3,level_4,level_5,level_6,level_7; + +void LevelMatrix(int get,int x)//แสดงเปอร์เซนต์ตามเป้าหมาย get = ค่าเป้าหมายที่ใส่มา , แสดงที่ด้านขวาของ dot +{ + level_0=get/8; + level_1=level_0 + level_0; + level_2=level_1 + level_0; + level_3=level_2 + level_0; + level_4=level_3 + level_0; + level_5=level_4 + level_0; + level_6=level_5 + level_0; + level_7=level_6 + level_0; + + if( 0 <= x && x <= level_0 ) { + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } + if( level_0 < x && x <= level_1) { + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + + } + if( level_1 < x && x <= level_2) { + rgb_point(0,5,0,125,255); + rgb_point(1,5,0,125,255); + rgb_point(2,5,0,125,255); + rgb_point(3,5,255,255,255); + + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } + if( level_2 < x && x <= level_3) { + rgb_point(0,4,0,0,255); + rgb_point(1,4,0,0,255); + rgb_point(2,4,0,0,255); + rgb_point(3,4,255,255,255); + + rgb_point(0,5,0,125,255); + rgb_point(1,5,0,125,255); + rgb_point(2,5,0,125,255); + rgb_point(3,5,255,255,255); + + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } + if( level_3 < x && x <= level_4) { + rgb_point(0,3,80,0,255); + rgb_point(1,3,80,0,255); + rgb_point(2,3,80,0,255); + rgb_point(3,3,255,255,255); + + rgb_point(0,4,0,0,255); + rgb_point(1,4,0,0,255); + rgb_point(2,4,0,0,255); + rgb_point(3,4,255,255,255); + + rgb_point(0,5,0,125,255); + rgb_point(1,5,0,125,255); + rgb_point(2,5,0,125,255); + rgb_point(3,5,255,255,255); + + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } + if( level_4 < x && x <= level_5) { + rgb_point(0,2,255,0,255); + rgb_point(1,2,255,0,255); + rgb_point(2,2,255,0,255); + rgb_point(3,2,255,255,255); + + rgb_point(0,3,80,0,255); + rgb_point(1,3,80,0,255); + rgb_point(2,3,80,0,255); + rgb_point(3,3,255,255,255); + + rgb_point(0,4,0,0,255); + rgb_point(1,4,0,0,255); + rgb_point(2,4,0,0,255); + rgb_point(3,4,255,255,255); + + rgb_point(0,5,0,125,255); + rgb_point(1,5,0,125,255); + rgb_point(2,5,0,125,255); + rgb_point(3,5,255,255,255); + + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } + if( level_5 < x && x <= level_6) { + rgb_point(0,1,255,0,40); + rgb_point(1,1,255,0,40); + rgb_point(2,1,255,0,40); + rgb_point(3,1,255,255,255); + + rgb_point(0,2,255,0,255); + rgb_point(1,2,255,0,255); + rgb_point(2,2,255,0,255); + rgb_point(3,2,255,255,255); + + rgb_point(0,3,80,0,255); + rgb_point(1,3,80,0,255); + rgb_point(2,3,80,0,255); + rgb_point(3,3,255,255,255); + + rgb_point(0,4,0,0,255); + rgb_point(1,4,0,0,255); + rgb_point(2,4,0,0,255); + rgb_point(3,4,255,255,255); + + rgb_point(0,5,0,125,255); + rgb_point(1,5,0,125,255); + rgb_point(2,5,0,125,255); + rgb_point(3,5,255,255,255); + + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } + if( level_6 < x && x <= level_7) { + rgb_point(0,0,255,0,0); + rgb_point(1,0,255,0,0); + rgb_point(2,0,255,0,0); + rgb_point(3,0,255,255,255); + + rgb_point(0,1,255,0,40); + rgb_point(1,1,255,0,40); + rgb_point(2,1,255,0,40); + rgb_point(3,1,255,255,255); + + rgb_point(0,2,255,0,255); + rgb_point(1,2,255,0,255); + rgb_point(2,2,255,0,255); + rgb_point(3,2,255,255,255); + + rgb_point(0,3,80,0,255); + rgb_point(1,3,80,0,255); + rgb_point(2,3,80,0,255); + rgb_point(3,3,255,255,255); + + rgb_point(0,4,0,0,255); + rgb_point(1,4,0,0,255); + rgb_point(2,4,0,0,255); + rgb_point(3,4,255,255,255); + + rgb_point(0,5,0,125,255); + rgb_point(1,5,0,125,255); + rgb_point(2,5,0,125,255); + rgb_point(3,5,255,255,255); + + rgb_point(0,6,0,255,255); + rgb_point(1,6,0,255,255); + rgb_point(2,6,0,255,255); + rgb_point(3,6,255,255,255); + + rgb_point(0,7,0,255,125); + rgb_point(1,7,0,255,125); + rgb_point(2,7,0,255,125); + rgb_point(3,7,255,255,255); + } +} + +void LevelNumber(int x)//แสดงจำนวนเงินในกระปุก แสดงที่ฝั่งซ้ายของ dot +{ + // printf("\n%d",x); + if( 0 <= x && x <= 125 ) { + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + + if( 125 < x && x <= 250) { + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + + if( 250 < x && x <= 375) { + rgb_point(4,5,255,255,255); + rgb_point(5,5,0,255,125); + rgb_point(6,5,0,255,125); + rgb_point(7,5,0,255,125); + + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + if( 375 < x && x <= 500) { + rgb_point(4,4,255,255,255); + rgb_point(5,4,0,255,0); + rgb_point(6,4,0,255,0); + rgb_point(7,4,0,255,0); + + rgb_point(4,5,255,255,255); + rgb_point(5,5,0,255,125); + rgb_point(6,5,0,255,125); + rgb_point(7,5,0,255,125); + + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + if( 500 < x && x <= 625) { + rgb_point(4,3,255,255,255); + rgb_point(5,3,125,255,0); + rgb_point(6,3,125,255,0); + rgb_point(7,3,125,255,0); + + rgb_point(4,4,255,255,255); + rgb_point(5,4,0,255,0); + rgb_point(6,4,0,255,0); + rgb_point(7,4,0,255,0); + + rgb_point(4,5,255,255,255); + rgb_point(5,5,0,255,125); + rgb_point(6,5,0,255,125); + rgb_point(7,5,0,255,125); + + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + if( 625 < x && x <= 750) { + rgb_point(4,2,255,255,255); + rgb_point(5,2,255,255,0); + rgb_point(6,2,255,255,0); + rgb_point(7,2,255,255,0); + + rgb_point(4,3,255,255,255); + rgb_point(5,3,125,255,0); + rgb_point(6,3,125,255,0); + rgb_point(7,3,125,255,0); + + rgb_point(4,4,255,255,255); + rgb_point(5,4,0,255,0); + rgb_point(6,4,0,255,0); + rgb_point(7,4,0,255,0); + + rgb_point(4,5,255,255,255); + rgb_point(5,5,0,255,125); + rgb_point(6,5,0,255,125); + rgb_point(7,5,0,255,125); + + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + if( 750 < x && x <= 875) { + rgb_point(4,1,255,255,255); + rgb_point(5,1,255,125,0); + rgb_point(6,1,255,125,0); + rgb_point(7,1,255,125,0); + + rgb_point(4,2,255,255,255); + rgb_point(5,2,255,255,0); + rgb_point(6,2,255,255,0); + rgb_point(7,2,255,255,0); + + rgb_point(4,3,255,255,255); + rgb_point(5,3,125,255,0); + rgb_point(6,3,125,255,0); + rgb_point(7,3,125,255,0); + + rgb_point(4,4,255,255,255); + rgb_point(5,4,0,255,0); + rgb_point(6,4,0,255,0); + rgb_point(7,4,0,255,0); + + rgb_point(4,5,255,255,255); + rgb_point(5,5,0,255,125); + rgb_point(6,5,0,255,125); + rgb_point(7,5,0,255,125); + + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } + if( 875 < x && x <= 1000) { + rgb_point(4,0,255,255,255); + rgb_point(5,0,255,0,0); + rgb_point(6,0,255,0,0); + rgb_point(7,0,255,0,0); + + rgb_point(4,1,255,255,255); + rgb_point(5,1,255,125,0); + rgb_point(6,1,255,125,0); + rgb_point(7,1,255,125,0); + + rgb_point(4,2,255,255,255); + rgb_point(5,2,255,255,0); + rgb_point(6,2,255,255,0); + rgb_point(7,2,255,255,0); + + rgb_point(4,3,255,255,255); + rgb_point(5,3,125,255,0); + rgb_point(6,3,125,255,0); + rgb_point(7,3,125,255,0); + + rgb_point(4,4,255,255,255); + rgb_point(5,4,0,255,0); + rgb_point(6,4,0,255,0); + rgb_point(7,4,0,255,0); + + rgb_point(4,5,255,255,255); + rgb_point(5,5,0,255,125); + rgb_point(6,5,0,255,125); + rgb_point(7,5,0,255,125); + + rgb_point(4,6,255,255,255); + rgb_point(5,6,0,255,255); + rgb_point(6,6,0,255,255); + rgb_point(7,6,0,255,255); + + rgb_point(4,7,255,255,255); + rgb_point(5,7,0,125,255); + rgb_point(6,7,0,125,255); + rgb_point(7,7,0,125,255); + } +} + + +void happy() +{ + rgb_point(0,2,255,255,0);//ตาซ้าย + rgb_point(1,1,255,255,0);//ตาซ้าย + rgb_point(1,1,255,255,0);//ตาซ้าย + rgb_point(2,2,255,255,0);//ตาซ้าย + rgb_point(5,2,255,255,0);//ตาขวา + rgb_point(6,1,255,255,0);//ตาซ้าย + rgb_point(7,2,255,255,0);//ตาซ้าย + rgb_point(2,4,255,255,0);//ปาก + rgb_point(3,4,255,255,0);//ปาก + rgb_point(4,4,255,255,0);//ปาก + rgb_point(5,4,255,255,0);//ปาก + rgb_point(6,4,255,255,0);//ปาก + rgb_point(1,4,255,255,0);//ปาก + rgb_point(2,5,255,255,0);//ปาก + rgb_point(5,5,255,255,0);//ปาก + rgb_point(3,6,255,255,0);//ปาก + rgb_point(4,6,255,255,0);//ปาก + rgb_point(3,5,255,255,0);//ปาก + rgb_point(4,5,255,255,0);//ปาก +} + + +void smile() +{ + rgb_point(2,1,0,255,255);//ตาซ้าย + rgb_point(2,2,0,255,255);//ตาซ้าย + rgb_point(5,1,0,255,255);//ตาขวา + rgb_point(5,2,0,255,255);//ตาขวา + rgb_point(1,4,0,255,255);//ปาก + rgb_point(6,4,0,255,255);//ปาก + rgb_point(2,5,0,255,255);//ปาก + rgb_point(5,5,0,255,255);//ปาก + rgb_point(3,6,0,255,255);//ปาก + rgb_point(4,6,0,255,255);//ปาก +} + +void indifferent() +{ + + rgb_point(2,1,255,125,0);//ตาซ้าย + rgb_point(2,2,255,125,0);//ตาซ้าย + rgb_point(1,1,255,125,0);//ตาซ้าย + rgb_point(1,2,255,125,0);//ตาซ้าย + rgb_point(5,1,255,125,0);//ตาขวา + rgb_point(6,1,255,125,0);//ตาซ้าย + rgb_point(6,2,255,125,0);//ตาซ้าย + rgb_point(5,2,255,125,0);//ตาขวา + rgb_point(1,5,255,125,0);//ปาก + rgb_point(2,5,255,125,0);//ปาก + rgb_point(3,5,255,125,0);//ปาก + rgb_point(4,5,255,125,0);//ปาก + rgb_point(5,5,255,125,0);//ปาก + rgb_point(6,5,255,125,0);//ปาก + rgb_point(1,5,255,125,0);//ปาก + rgb_point(6,5,255,125,0);//ปาก +} + +void frown() +{ + rgb_point(2,1,255,0,0);//ตาซ้าย + rgb_point(2,2,255,0,0);//ตาซ้าย + rgb_point(5,1,255,0,0);//ตาขวา + rgb_point(5,2,255,0,0);//ตาขวา + rgb_point(1,6,255,0,0);//ปาก + rgb_point(2,5,255,0,0);//ปาก + rgb_point(3,5,255,0,0);//ปาก + rgb_point(4,5,255,0,0);//ปาก + rgb_point(5,5,255,0,0);//ปาก + rgb_point(6,6,255,0,0);//ปาก +} + + void printone() { cone++; wait_ms(200); - printf("one = %d\n",cone); + pc.printf("one = %d\n",cone); + sumAll(); + + display_RGB=1; + + while(display_RGB==1) { + t.start(); + screen_off(); + frown(); + displayRGB(); + if(t.read_ms()%1200==0) { + screen_off(); + display_RGB=-1; + } + + } + } void printtwo() @@ -45,82 +574,159 @@ ctwo++; wait_ms(200); - printf("two = %d\n",ctwo); + pc.printf("two = %d\n",ctwo); + //indifferent(); sumAll(); + + display_RGB=2; + + while(display_RGB==2) { + t.start(); + screen_off(); + indifferent(); + displayRGB(); + if(t.read_ms()%1200==0) { + screen_off(); + display_RGB=-1; + } + + } } void printfive() { cfive++; wait_ms(200); - printf("five = %d\n",cfive); + pc.printf("five = %d\n",cfive); + // smile(); sumAll(); + + display_RGB=3; + while(display_RGB==3) { + t.start(); + screen_off(); + smile(); + displayRGB(); + if(t.read_ms()%1200==0) { + screen_off(); + display_RGB=-1; + } + + } } void printten() { cten++; wait_ms(200); - printf("ten = %d\n",cten); + pc.printf("ten = %d\n",cten); + // happy(); sumAll(); + + display_RGB=4; + while(display_RGB==4) { + t.start(); + screen_off(); + happy(); + displayRGB(); + if(t.read_ms()%1200==0) { + screen_off(); + display_RGB=-1; + } + + } } -void current_address_eeprom_save(){ - +void current_address_eeprom_save() +{ + int c=0; + memory.write(1,(int)current_a); - memory.read(1,current_a); - - - } - -void current_value_eeprom_save(){ - - - + wait_ms(10); + memory.read(1,c); + wait_ms(10); + //pc.printf("current_address_eeprom_save1 = %d\n",current_a); + // pc.printf("current_address_eeprom_save = %d\n",c); + +} + +void current_value_eeprom_save() +{ + + // pc.printf("current_cv = %d\n",current_v); + // pc.printf("current_a_cv = %d\n",current_a); + wait_ms(10); memory.write(current_a,(int)current_v); + wait_ms(10); memory.read(current_a,current_v); - - } - -int read_current_a_value_from_eeprom(){ + // pc.printf("current_cv1 = %d\n",current_v); + wait_ms(10); + +} +/* +void current_address_target() +{ + int li,b; + b = current_a+1; + memory.write(b,(int)limit); + wait_ms(10); + memory.read(b,li); + wait_ms(10); + + pc.printf("current_address_target = %d\n",limit); + pc.printf("current_address_target = %d\n",li); +} +*/ +int read_current_a_value_from_eeprom() +{ int current_address; int x =0; + memory.write(2,(int)x); + wait_ms(10); memory.read(1,current_address); - + wait_ms(10); + return current_address; - } +} +/* +int read_current_address_target_from_eeprom() +{ + int current_limit; + int x =0,b; -int read_current_value_from_eeprom(){ - int current_value; - int x =0; + b = current_a+1; memory.write(2,(int)x); - printf("current_a = %d\n\n",current_a); - memory.read(current_a,current_value); - - return current_value; - - } + wait_ms(10); + memory.read(b,current_limit); + wait_ms(10); + pc.printf("T target = %d\n\n",b); + pc.printf("target = %d\n",current_limit); + return current_limit; -int read_pre_value_from_eeprom(){ +} +*/ +int read_pre_value_from_eeprom() +{ int current_value; int a ; int x =0; + a = current_a-1; + // a = current_a; memory.write(2,(int)x); - - a = current_a-1; - if(current_a == 3){ - a = 8192; - } + wait_ms(10); + memory.read(a,current_value); + wait_ms(10); +// pc.printf("P current_a = %d\n\n",a); + // pc.printf("current_v = %d\n",current_v); + return current_value; - memory.read(a,current_value); - printf("P current_a = %d\n\n",a); - printf("current_v = %d\n",current_v); - return current_value; - - } +} + + + int sumAll() @@ -136,45 +742,438 @@ valueoffive = cfive * 5; valueoften = cten * 10; - printf("current_v = %d\n",current_v); + // pc.printf("previous_v = %d\n",current_v); sumvalue = valueofone + valueoftwo + valueoffive + valueoften + current_v; - printf("Total = %d\n",sumvalue); - + pc.printf("Total = %d\n",sumvalue); + cone = 0; ctwo = 0; cfive = 0; cten = 0; - current_v = sumvalue ; +// pc.printf("save_target_1 = %d\n",limit); + current_v = sumvalue ; current_value_eeprom_save(); - current_a++; - - if(current_a> 8192){ - - current_a = 3 ; - } - +// pc.printf("save_target_2 = %d\n",limit); + current_a = current_a +1; + //current_a = current_a +2; + /* if(current_a> 8192){ + + current_a = 3 ; + }*/ + current_address_eeprom_save(); - - /* printf("current_v = %d\n",current_v); - printf("current_a = %d\n\n",current_a);*/ - + // current_address_target(); + // pc.printf("save_target_3 = %d\n",limit); + // pc.printf("current_v = %d\n",current_v); + // pc.printf("current_a = %d\n\n",current_a); + return sumvalue; } -int main() -{ - current_a = read_current_a_value_from_eeprom(); - current_v = read_pre_value_from_eeprom(); - //current_v = 0; - /* printf("current_v = %d\n",current_v); - printf("current_a = %d\n\n",current_a);*/ + + +void checkfall() +{ + wait_ms(200); + if(mode_set == 1) { + if(limit == 0)userset = valueint ; + data = 'c'; + pc.printf("LIMIT IS %d\n\n",userset); + pc.printf("**********////////*********\n\n"); + pc.printf("ARE YOU SURE ?\n"); + pc.printf("y.IF YOU SURE\n"); + pc.printf("n.IF YOU NOT SURE\n"); + + state_menu = 1; + do { + if(pc.readable()) { + + data = pc.getc(); + pc.printf("\n"); + state_menu=0; + state_exit =1; + switch(data) { + + case 'y': + + limit = userset; + // pc.printf("CV IS1 %d\n",current_v); + current_value_eeprom_save(); + // current_a = current_a +2; + current_a = current_a +1; + // pc.printf("CV IS2 %d\n",current_v); + current_address_eeprom_save(); + // pc.printf("CV IS3 %d\n",current_v); + //current_address_target(); + lock_pot_motor(); + pc.printf("LIMIT IS %d\n",limit); + // pc.printf("CV IS %d\n",current_v); + + break; + + case 'n': + + state_show =1; + pc.printf("PLEASE PRESS RESET TO SET LIMIT"); + + break; + + - while(1) { - countone.fall(&printone); - counttwo.fall(&printtwo); - countfive.fall(&printfive); - countten.fall(&printten); + default: + pc.printf("PLEASE SELECT y OR n\n"); + pc.printf("\n"); + data = 'c'; + state_menu = 1; + break; + } + } + + + } while(data == 'c'); + + } else if(mode_set == 2) { + display_RGB==0; + if(limit == 0) { + + pc.printf("PLEASE SELECT 1 TO SET AMOUNT OF MONEY\n"); + + + } else { + //เอาจาก eeprom + //แสดงค่าของเงินที่หยอด ว่าในกระปุกมีเงินเท่าไหร่ + + int c; + int percent_from_target; + c = read_pre_value_from_eeprom(); + pc.printf("Value in the pot : %d\n",c); + pc.printf("Your Target : %d\n",limit); + percent_from_target = (c*100)/limit; + pc.printf("Completed : %d\n",percent_from_target); + + + + while(display_RGB==0) { + t.start(); + screen_off();; + LevelMatrix(limit,current_v); + LevelNumber(current_v); + displayRGB(); + if(t.read_ms()%4000==0) { + screen_off(); + display_RGB=-1; + } + + } + + + } + } + + else { + pc.printf("PLEASE SELECT 1 OR 2\n"); + state_show =1; } } +void lock_pot_motor() +{ + + + servo.write(0.1); + +} + + +void unlock_pot_motor() +{ + + servo.write(0.7); + + +} + + +void open_pot() +{ + + //limit = read_target(); + current_v = read_pre_value_from_eeprom(); + + + + current_v = 0 ; + current_a = 3; + limit = 0; + current_value_eeprom_save(); + //current_a = current_a +2; + current_a = current_a +1; + current_address_eeprom_save(); + //current_address_target(); + + + unlock_pot_motor(); + + + +} + + +int main() +{ + + current_a = read_current_a_value_from_eeprom(); + current_v = read_pre_value_from_eeprom(); + // limit = read_current_address_target_from_eeprom(); + + + // pc.printf("limit : %d\n",limit); + + limit = 0; + position1 = limit/1000; + position2 = (limit % 1000)/100; + position3 = (limit % 100)/10; + position3 = (limit % 10); + + + dis.write(0,position1); + dis.write(1,position2); + dis.write(2,position3); + dis.write(3,position4); + + + // current_v = 0; + // current_a = 3; + //pc.printf("current_v = %d\n",current_v); + // pc.printf("current_a = %d\n\n",current_a); + + t.start(); + char xx[3]= {64,64,64}; + INITRGB(xx); + + //screen_off(); + + countone.fall(&printone); + counttwo.fall(&printtwo); + countfive.fall(&printfive); + countten.fall(&printten); + ok.rise(&checkfall); + + + while(1) { + + + do { + if(limit <= current_v && limit != 0) { + + pc.printf("You reach the target\n"); + pc.printf("1.END THE SAVE MONEY PROJECT\n"); + pc.printf("2.GO ON THE SAVE MONEY PROJECT\n"); + do { + if(pc.readable()) { + data_final = pc.getc(); + } + + } while(data_final=='f'); + + if(data_final == '1') { + + open_pot(); + state_final = 1; + + } else if(data_final == '2') { + + pc.printf(" PLEASE SELECT THE NEW TARGET\n"); + pc.printf("PLEASE ROTATE POTENTIOMETER AND PRESS THE BUTTON TO SET LIMIT\n\n"); + do { + + value = button1.read(); + value = value * 1000; + + if (0 <= value && value <= 100) { + value = 100; + } + + else if (100 <= value && value <= 200) { + value = 200; + } + + else if (200 <= value && value <= 300) { + value = 300; + } + + else if (300 <= value && value <= 400) { + value = 400; + } + + else if (400 <= value && value <= 500) { + value = 500; + } + + else if (500 <= value && value <= 600) { + value = 600; + } + + else if (600 <= value && value <= 700) { + value = 700; + } + + else if (700 <= value && value <= 800) { + value = 800; + } + + else if (800 <= value && value <= 900) { + value = 900; + } + + else if (900 <= value && value <= 1000) { + value = 1000; + } + wait(0.2); + //pc.printf("value = %f\n",value); + wait(0.5); + + position1 = value/1000; + valueint = value; + position2 = (valueint % 1000)/100; + position3 = (valueint % 100)/10; + position3 = (valueint % 10); + + + dis.write(0,position1); + dis.write(1,position2); + dis.write(2,position3); + dis.write(3,position4); + + + + + + } while(state_exit ==0); + pc.printf("\n\n"); + + state_final = 1; + + } else { + + pc.printf(" PLEASE SELECT 1 OR 2\n"); + state_final = 0; + + } + + } + } while(state_final = 0 && limit <= current_v); + + + if(state_show == 0) { + pc.printf("Menu\n"); + pc.printf("1.SET AMOUNT OF MONEY\n"); + pc.printf("2.SHOW TOTAL OF MONEY\n"); + state_show =1; + mode_set = 0; + } + + + if(pc.readable()) { + data = pc.getc(); + pc.printf("\n"); + state_show =0; + state_exit =0; + switch(data) { + case '1': + if(limit == 0) { + mode_set = 1; + pc.printf("PLEASE ROTATE POTENTIOMETER AND PRESS THE BUTTON TO SET LIMIT\n\n"); + do { + + value = button1.read(); + value = value * 1000; + + if (0 <= value && value <= 100) { + value = 100; + } + + else if (100 <= value && value <= 200) { + value = 200; + } + + else if (200 <= value && value <= 300) { + value = 300; + } + + else if (300 <= value && value <= 400) { + value = 400; + } + + else if (400 <= value && value <= 500) { + value = 500; + } + + else if (500 <= value && value <= 600) { + value = 600; + } + + else if (600 <= value && value <= 700) { + value = 700; + } + + else if (700 <= value && value <= 800) { + value = 800; + } + + else if (800 <= value && value <= 900) { + value = 900; + } + + else if (900 <= value && value <= 1000) { + value = 1000; + } + wait(0.2); + //pc.printf("value = %f\n",value); + wait(0.5); + + position1 = value/1000; + valueint = value; + position2 = (valueint % 1000)/100; + position3 = (valueint % 100)/10; + position3 = (valueint % 10); + + + dis.write(0,position1); + dis.write(1,position2); + dis.write(2,position3); + dis.write(3,position4); + + + + + + } while(state_exit ==0); + pc.printf("\n\n"); + + } else { + + pc.printf("\nYou have set target already.\n"); + + } + break; + + + case '2': + + pc.printf("LIMIT IS %d\n",limit); + + mode_set = 2; + + default: + + // mode_set != 1 && mode_set != 2; + checkfall(); + break; + } + + pc.printf("**********////////*********\n\n"); + } + } +}
diff -r e4a8e7656728 -r 586f08d816ec my8x8RGB.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/my8x8RGB.lib Wed Dec 09 06:58:30 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/teams/FRA221_4449/code/my8x8RGB/#4cfd98904ded