Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: TextLCD mbed MultiSerial Pswitch_Lib
Revision 9:39d3392a9587, committed 2014-10-04
- Comitter:
- lilac0112_1
- Date:
- Sat Oct 04 02:28:38 2014 +0000
- Parent:
- 7:8c15316bdba6
- Child:
- 10:8b49bbf4c0c9
- Commit message:
Changed in this revision
--- a/MultiSerial.lib Fri Sep 26 08:20:41 2014 +0000 +++ b/MultiSerial.lib Sat Oct 04 02:28:38 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/teams/B/code/MultiSerial/#5539a5dcdeff +http://mbed.org/teams/B/code/MultiSerial/#ce09c92e33b4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Pswitch_Lib.lib Sat Oct 04 02:28:38 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/teams/B/code/Pswitch_Lib/#4588548211df
--- a/main.cpp Fri Sep 26 08:20:41 2014 +0000
+++ b/main.cpp Sat Oct 04 02:28:38 2014 +0000
@@ -1,43 +1,26 @@
#include "mbed.h"
#include "TextLCD.h"
#include "MultiSerial.h"
-
-/*
-strategy
-1 ソフトリセット
-2 最初の通信に割り込みを使わない
-3 MODSERIAL.hを使う
-4 __disable_irq();を使う
-*/
+#include "Pswitch.h"
+
#define DATA_NUM 2
-#define LINKCODE 0xCC
-#define LINK_INTERVAL 100
#define KEYCODE 0xAA
-#define INTERVAL .5 //12
+#define INTERVAL 12
enum HAND{RIGHT=0, LEFT};
enum FINGER{INDEX=0, MIDDLE};
enum COMPASS{NORTH=0, EAST, SOUTH, WEST};
enum COLOR{YELLOW=0, RED, GREEN, BLUE};
-uint8_t TXdata[DATA_NUM]={0};
-uint8_t RXdata[DATA_NUM]={0};
-
-uint8_t INdata[DATA_NUM]={0};
-uint8_t EXdata[DATA_NUM]={0};
-
-volatile uint8_t count=0;
+uint8_t INdata[DATA_NUM]={0}, EXdata[DATA_NUM]={0};
+uint8_t count=0;
+//uint8_t watch;
bool SW;
-bool GAT=1;
void SetUp();
-void connect_check();
-void GiveAndTake();
uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one);
void illumination();
-Ticker TAX;
-
Ticker flick;
BusOut LED(LED1, LED2, LED3, LED4);
@@ -46,45 +29,29 @@
DigitalIn CrossKey[4][2]={{p8, p30}, {p11, p29}, {p15, p28}, {p16, p27}};//p7, p12=reserve
DigitalIn SideKey[2][2]={{p17, p20}, {p18, p19}};
DigitalIn Toggle(p5);
-
-MultiSerial Xbee(p9, p10);
-Serial pc(USBTX,USBRX);
+//Pswitch Toggle(p5);
+MultiSerial Xbee(p9, p10, write);//or p13, p14
+Serial pc(USBTX, USBRX);
-int main()
-{
+TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD16x2); // rs, e, d4-d7
+
+int main() {
SetUp();
- TAX.attach(GiveAndTake, 0.1);
- Toggle.mode(PullUp);
-
- while(1){
- if(RXdata[0]==LINKCODE) break;
- }
- Xbee.stop_read();
-
- //connect_check();
-
- TextLCD lcd(p26, p25, p24, p23, p22, p21, TextLCD::LCD16x2); // rs, e, d4-d7
-
- if(TXdata[0]==LINKCODE) lcd.cls(), lcd.printf("3SecondsLater,\n YouCanRun");
-
- wait(3);
-
- SW = Toggle;
-
- Xbee.start_write();
Xbee.write_data(EXdata, KEYCODE);
-
while(1) {
YLED=!Toggle;
+ if(Toggle){
+ YLED=!Toggle.read();
+ }
if(YLED&&SW) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0;
if((!YLED)&&(!SW)) lcd.cls(), lcd.printf("Run Mode\n"), SW=1;
- if(Toggle){
+ if(Toggle.read()){
EXdata[0] = LinkBit(!CrossKey[YELLOW][LEFT], !CrossKey[RED][LEFT], !CrossKey[GREEN][LEFT], !CrossKey[BLUE][LEFT],
!CrossKey[YELLOW][RIGHT], !CrossKey[RED][RIGHT], !CrossKey[GREEN][RIGHT], !CrossKey[BLUE][RIGHT]);
@@ -94,12 +61,19 @@
EXdata[0] = EXdata[1] = 0x00;
}
+ LED = Toggle*LinkBit(0, 0, 0, 0, !SideKey[INDEX][LEFT], !SideKey[MIDDLE][LEFT], !SideKey[INDEX][RIGHT], !SideKey[MIDDLE][RIGHT]);
+
}
-
}
void SetUp(void){
+
+
+ lcd.printf("Hello World!\n");
+ if(!Toggle.read()) lcd.cls(), lcd.printf("Pause Mode\n"), SW=0;
+ if(Toggle.read()) lcd.cls(), lcd.printf("Run Mode\n"), SW=1;
+
CrossKey[NORTH][RIGHT].mode(PullUp);
CrossKey[EAST][RIGHT].mode(PullUp);
CrossKey[WEST][RIGHT].mode(PullUp);
@@ -114,64 +88,9 @@
SideKey[INDEX][LEFT].mode(PullUp);
SideKey[MIDDLE][LEFT].mode(PullUp);
- flick.attach(illumination, INTERVAL);
- flick.detach();
-}
-void connect_check(void){
-
- while(1){
-
- YLED = !Toggle;
- LED = 12;
-
- Xbee.start_write();
- TXdata[0]=LINKCODE;
- Xbee.write_data(TXdata,KEYCODE);
- //wait_ms(100);
- Xbee.stop_write();
-
- LED = 3;
-
- Xbee.start_read();
-
- Xbee.read_data(RXdata,KEYCODE);
- //wait_ms(100);
- Xbee.stop_read();
-
- if(RXdata[0]==LINKCODE) break;
-
- NVIC_SystemReset();
+ Toggle.mode(PullUp);
- }
-
-}
-void GiveAndTake(){
-
- if(GAT){
- YLED = !Toggle;
- LED = 12;
-
- Xbee.stop_read();
-
- TXdata[0]=LINKCODE;
- Xbee.start_write();
- Xbee.write_data(TXdata,KEYCODE);
- }
- else{
- YLED = !Toggle;
-
- Xbee.stop_write();
-
- Xbee.start_read();
- LED = 3;
- Xbee.read_data(RXdata,KEYCODE);
-
- wait_ms(100);
-
- if(RXdata[0]==LINKCODE) TAX.detach();
- NVIC_SystemReset();
- }
- GAT = !GAT;
+ //flick.attach(illumination, INTERVAL);
}
uint8_t LinkBit(bool eight, bool seven, bool six, bool five, bool fore, bool three, bool two, bool one){//0と1を集めて整数を作る
return 0x80*eight + 0x40*seven + 0x20*six + 0x10*five + 0x08*fore + 0x04*three + 0x02*two + 0x01*one;