mbed5b

Dependencies:   mbed

Committer:
Robsonik16
Date:
Fri May 05 20:00:16 2017 +0000
Revision:
0:d546b014a1e3
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Robsonik16 0:d546b014a1e3 1 #include "mbed.h"
Robsonik16 0:d546b014a1e3 2 //#include "servo.h"
Robsonik16 0:d546b014a1e3 3 //#include "command_decoder.h"
Robsonik16 0:d546b014a1e3 4 #include "led.h"
Robsonik16 0:d546b014a1e3 5 #include "serwo.h"
Robsonik16 0:d546b014a1e3 6 #include "command_decoder.h"
Robsonik16 0:d546b014a1e3 7
Robsonik16 0:d546b014a1e3 8
Robsonik16 0:d546b014a1e3 9
Robsonik16 0:d546b014a1e3 10 //#define DETECTOR_bm (PA4)
Robsonik16 0:d546b014a1e3 11
Robsonik16 0:d546b014a1e3 12
Robsonik16 0:d546b014a1e3 13 //DigitalIn det(PA_5);
Robsonik16 0:d546b014a1e3 14 //Ticker serwoTim;
Robsonik16 0:d546b014a1e3 15
Robsonik16 0:d546b014a1e3 16
Robsonik16 0:d546b014a1e3 17
Robsonik16 0:d546b014a1e3 18
Robsonik16 0:d546b014a1e3 19 //************************************************************************/
Robsonik16 0:d546b014a1e3 20
Robsonik16 0:d546b014a1e3 21 /******************************************************************/
Robsonik16 0:d546b014a1e3 22 //------------------------------------
Robsonik16 0:d546b014a1e3 23 // Hyperterminal configuration
Robsonik16 0:d546b014a1e3 24 // 9600 bauds, 8-bit data, no parity
Robsonik16 0:d546b014a1e3 25 //------------------------------------
Robsonik16 0:d546b014a1e3 26
Robsonik16 0:d546b014a1e3 27 RawSerial pc(USBTX,USBRX,9600);
Robsonik16 0:d546b014a1e3 28
Robsonik16 0:d546b014a1e3 29 DigitalOut led_green(LED1);
Robsonik16 0:d546b014a1e3 30 DigitalOut led_red(LED2);
Robsonik16 0:d546b014a1e3 31
Robsonik16 0:d546b014a1e3 32
Robsonik16 0:d546b014a1e3 33
Robsonik16 0:d546b014a1e3 34 Timeout LedTimeout;
Robsonik16 0:d546b014a1e3 35 Ticker Sender;
Robsonik16 0:d546b014a1e3 36
Robsonik16 0:d546b014a1e3 37 void LedOff()
Robsonik16 0:d546b014a1e3 38 {
Robsonik16 0:d546b014a1e3 39 led_red=0;
Robsonik16 0:d546b014a1e3 40 }
Robsonik16 0:d546b014a1e3 41
Robsonik16 0:d546b014a1e3 42 int my_puts(char tab[],int size)
Robsonik16 0:d546b014a1e3 43 {
Robsonik16 0:d546b014a1e3 44 //retutn 0 if string is valid
Robsonik16 0:d546b014a1e3 45 bool StringIsValid=false;
Robsonik16 0:d546b014a1e3 46 for( int index=0; index<size; index++) {
Robsonik16 0:d546b014a1e3 47 if (tab[index]==NULL) {
Robsonik16 0:d546b014a1e3 48 StringIsValid = true;
Robsonik16 0:d546b014a1e3 49 break;
Robsonik16 0:d546b014a1e3 50 }
Robsonik16 0:d546b014a1e3 51 }
Robsonik16 0:d546b014a1e3 52 if(StringIsValid == false) {
Robsonik16 0:d546b014a1e3 53 LedTimeout.attach(&LedOff, 0.5);
Robsonik16 0:d546b014a1e3 54 led_red=1;
Robsonik16 0:d546b014a1e3 55 return(1);
Robsonik16 0:d546b014a1e3 56 }
Robsonik16 0:d546b014a1e3 57
Robsonik16 0:d546b014a1e3 58 for( int index=0; index<size; index++) {
Robsonik16 0:d546b014a1e3 59 if (tab[index]==NULL) {
Robsonik16 0:d546b014a1e3 60 pc.putc('\r');
Robsonik16 0:d546b014a1e3 61 while(!pc.writeable());
Robsonik16 0:d546b014a1e3 62 pc.putc('\n');
Robsonik16 0:d546b014a1e3 63 return(0);
Robsonik16 0:d546b014a1e3 64 }
Robsonik16 0:d546b014a1e3 65 while(!pc.writeable());
Robsonik16 0:d546b014a1e3 66 pc.putc(tab[index]);
Robsonik16 0:d546b014a1e3 67 }
Robsonik16 0:d546b014a1e3 68 return(0);
Robsonik16 0:d546b014a1e3 69 }
Robsonik16 0:d546b014a1e3 70
Robsonik16 0:d546b014a1e3 71 void hardbeatSend()
Robsonik16 0:d546b014a1e3 72 {
Robsonik16 0:d546b014a1e3 73 static int count=0;
Robsonik16 0:d546b014a1e3 74 char tekst[25];
Robsonik16 0:d546b014a1e3 75 sprintf(tekst,"hardbeat number: %d \r\n", count );
Robsonik16 0:d546b014a1e3 76 //pc.printf("This program runs since %d seconds.\r\n", i);
Robsonik16 0:d546b014a1e3 77 my_puts(tekst,22);
Robsonik16 0:d546b014a1e3 78 count++;
Robsonik16 0:d546b014a1e3 79 }
Robsonik16 0:d546b014a1e3 80
Robsonik16 0:d546b014a1e3 81 char my_gets(char str[],int size)
Robsonik16 0:d546b014a1e3 82 {
Robsonik16 0:d546b014a1e3 83 if (!pc.readable())return (NULL);
Robsonik16 0:d546b014a1e3 84 char c;
Robsonik16 0:d546b014a1e3 85 for(int index=0; index <size; index++) {
Robsonik16 0:d546b014a1e3 86 c=pc.getc();
Robsonik16 0:d546b014a1e3 87 pc.putc(c);
Robsonik16 0:d546b014a1e3 88 if ((c=='\r')||(c=='\n')) {
Robsonik16 0:d546b014a1e3 89 pc.putc('\r');
Robsonik16 0:d546b014a1e3 90 pc.putc('\n');
Robsonik16 0:d546b014a1e3 91 str[index]=NULL;
Robsonik16 0:d546b014a1e3 92 return (1);
Robsonik16 0:d546b014a1e3 93 }
Robsonik16 0:d546b014a1e3 94 str[index]=c;
Robsonik16 0:d546b014a1e3 95 }
Robsonik16 0:d546b014a1e3 96 LedTimeout.attach(&LedOff, 5);
Robsonik16 0:d546b014a1e3 97 led_red=1;
Robsonik16 0:d546b014a1e3 98 return (1);
Robsonik16 0:d546b014a1e3 99 }
Robsonik16 0:d546b014a1e3 100
Robsonik16 0:d546b014a1e3 101
Robsonik16 0:d546b014a1e3 102
Robsonik16 0:d546b014a1e3 103
Robsonik16 0:d546b014a1e3 104
Robsonik16 0:d546b014a1e3 105
Robsonik16 0:d546b014a1e3 106 int main (){
Robsonik16 0:d546b014a1e3 107
Robsonik16 0:d546b014a1e3 108
Robsonik16 0:d546b014a1e3 109 unsigned int uiPreviusPos;
Robsonik16 0:d546b014a1e3 110 //ButtonInit();
Robsonik16 0:d546b014a1e3 111 //Servo_Init(500);
Robsonik16 0:d546b014a1e3 112 char cOdebranyString[20];
Robsonik16 0:d546b014a1e3 113 char init[] = "system start\r\n";
Robsonik16 0:d546b014a1e3 114 const char tekstSize = 20;
Robsonik16 0:d546b014a1e3 115 my_puts(init,tekstSize);
Robsonik16 0:d546b014a1e3 116 char tekst5[20];
Robsonik16 0:d546b014a1e3 117
Robsonik16 0:d546b014a1e3 118
Robsonik16 0:d546b014a1e3 119 int liczba=3;
Robsonik16 0:d546b014a1e3 120 char str[] = "ab234cid*(s349*(20kd";
Robsonik16 0:d546b014a1e3 121 char str2[]="-0123456789";
Robsonik16 0:d546b014a1e3 122
Robsonik16 0:d546b014a1e3 123
Robsonik16 0:d546b014a1e3 124
Robsonik16 0:d546b014a1e3 125
Robsonik16 0:d546b014a1e3 126 /*
Robsonik16 0:d546b014a1e3 127 sprintf(tekst5,"liczba: %d ", liczba );
Robsonik16 0:d546b014a1e3 128 my_puts(tekst5,10);
Robsonik16 0:d546b014a1e3 129 my_puts(str+liczba,20);
Robsonik16 0:d546b014a1e3 130 //long strtol( const char * start, char ** end, int base );
Robsonik16 0:d546b014a1e3 131 sprintf(tekst5,"caly string: %d ", atoi(str) );
Robsonik16 0:d546b014a1e3 132 my_puts(tekst5,20);
Robsonik16 0:d546b014a1e3 133 */
Robsonik16 0:d546b014a1e3 134 char * pZnak = strpbrk(str, str2);
Robsonik16 0:d546b014a1e3 135 my_puts(pZnak,20);
Robsonik16 0:d546b014a1e3 136 sprintf(tekst5,"string + li: %d ", atoi(pZnak) );
Robsonik16 0:d546b014a1e3 137 my_puts(tekst5,20);
Robsonik16 0:d546b014a1e3 138
Robsonik16 0:d546b014a1e3 139
Robsonik16 0:d546b014a1e3 140
Robsonik16 0:d546b014a1e3 141
Robsonik16 0:d546b014a1e3 142 Servo_Init(100);
Robsonik16 0:d546b014a1e3 143 //Servo_Callib();
Robsonik16 0:d546b014a1e3 144
Robsonik16 0:d546b014a1e3 145 while(1){
Robsonik16 0:d546b014a1e3 146
Robsonik16 0:d546b014a1e3 147
Robsonik16 0:d546b014a1e3 148
Robsonik16 0:d546b014a1e3 149 if (my_gets(cOdebranyString,tekstSize)!=NULL) {
Robsonik16 0:d546b014a1e3 150 if(strstr( cOdebranyString, "callib" )){Servo_Callib();}
Robsonik16 0:d546b014a1e3 151 if(strstr( cOdebranyString, "id" )){my_puts("ID:0x1234",15);}
Robsonik16 0:d546b014a1e3 152 if(strstr( cOdebranyString, "goto" )){
Robsonik16 0:d546b014a1e3 153 char * pZnak = strpbrk(cOdebranyString, str2);
Robsonik16 0:d546b014a1e3 154 uiPreviusPos = atoi(pZnak) ;
Robsonik16 0:d546b014a1e3 155 Servo_GoTo(uiPreviusPos);
Robsonik16 0:d546b014a1e3 156 my_puts(pZnak,20);
Robsonik16 0:d546b014a1e3 157 }
Robsonik16 0:d546b014a1e3 158 if(strstr( cOdebranyString, "step" )){
Robsonik16 0:d546b014a1e3 159 char * pZnak = strpbrk(cOdebranyString, str2);
Robsonik16 0:d546b014a1e3 160 uiPreviusPos = uiPreviusPos+ atoi( pZnak );
Robsonik16 0:d546b014a1e3 161 Servo_GoTo(uiPreviusPos);
Robsonik16 0:d546b014a1e3 162 my_puts(pZnak,20);
Robsonik16 0:d546b014a1e3 163 }
Robsonik16 0:d546b014a1e3 164 }
Robsonik16 0:d546b014a1e3 165
Robsonik16 0:d546b014a1e3 166
Robsonik16 0:d546b014a1e3 167
Robsonik16 0:d546b014a1e3 168 /*
Robsonik16 0:d546b014a1e3 169 if (my_gets(cOdebranyString,tekstSize)!=NULL) {
Robsonik16 0:d546b014a1e3 170 //if(eReciever_GetStatus() == READY){
Robsonik16 0:d546b014a1e3 171
Robsonik16 0:d546b014a1e3 172 //Reciever_GetStringCopy( cOdebranyString );
Robsonik16 0:d546b014a1e3 173 DecodeMsg( cOdebranyString );
Robsonik16 0:d546b014a1e3 174 if ((ucTokenNr > 0) && (asToken[0].eType == KEYWORD)){
Robsonik16 0:d546b014a1e3 175 switch (asToken[0].uValue.eKeyword){
Robsonik16 0:d546b014a1e3 176 case CALLIB:
Robsonik16 0:d546b014a1e3 177 Servo_Callib();
Robsonik16 0:d546b014a1e3 178 break;
Robsonik16 0:d546b014a1e3 179 case GOTO:
Robsonik16 0:d546b014a1e3 180 if (asToken[1].eType == NUMBER){
Robsonik16 0:d546b014a1e3 181 Servo_GoTo(asToken[1].uValue.uiNumber);
Robsonik16 0:d546b014a1e3 182 uiPreviusPos = asToken[1].uValue.uiNumber;
Robsonik16 0:d546b014a1e3 183 }
Robsonik16 0:d546b014a1e3 184 break;
Robsonik16 0:d546b014a1e3 185 case STEP:
Robsonik16 0:d546b014a1e3 186 if (asToken[1].eType == NUMBER){
Robsonik16 0:d546b014a1e3 187 Servo_GoTo(uiPreviusPos + asToken[1].uValue.uiNumber);
Robsonik16 0:d546b014a1e3 188 uiPreviusPos = uiPreviusPos + asToken[1].uValue.uiNumber;
Robsonik16 0:d546b014a1e3 189 }
Robsonik16 0:d546b014a1e3 190 break;
Robsonik16 0:d546b014a1e3 191 case ID:
Robsonik16 0:d546b014a1e3 192 my_puts("ID:0x1234",15);
Robsonik16 0:d546b014a1e3 193 break;
Robsonik16 0:d546b014a1e3 194 default:
Robsonik16 0:d546b014a1e3 195 break;
Robsonik16 0:d546b014a1e3 196 }
Robsonik16 0:d546b014a1e3 197 }
Robsonik16 0:d546b014a1e3 198 }
Robsonik16 0:d546b014a1e3 199 */
Robsonik16 0:d546b014a1e3 200 }
Robsonik16 0:d546b014a1e3 201 }
Robsonik16 0:d546b014a1e3 202
Robsonik16 0:d546b014a1e3 203
Robsonik16 0:d546b014a1e3 204
Robsonik16 0:d546b014a1e3 205
Robsonik16 0:d546b014a1e3 206
Robsonik16 0:d546b014a1e3 207
Robsonik16 0:d546b014a1e3 208
Robsonik16 0:d546b014a1e3 209
Robsonik16 0:d546b014a1e3 210 /*
Robsonik16 0:d546b014a1e3 211 int main()
Robsonik16 0:d546b014a1e3 212 {
Robsonik16 0:d546b014a1e3 213
Robsonik16 0:d546b014a1e3 214
Robsonik16 0:d546b014a1e3 215 bool flag=false;
Robsonik16 0:d546b014a1e3 216
Robsonik16 0:d546b014a1e3 217 const char tekstSize = 7;
Robsonik16 0:d546b014a1e3 218 char tekst[tekstSize];
Robsonik16 0:d546b014a1e3 219 //my_puts("[2J",5);//clear console
Robsonik16 0:d546b014a1e3 220 //pc.putc('[2J');
Robsonik16 0:d546b014a1e3 221 pc.putc(27);
Robsonik16 0:d546b014a1e3 222 char init[] = "system start\r\n";
Robsonik16 0:d546b014a1e3 223 my_puts(init,tekstSize);
Robsonik16 0:d546b014a1e3 224 Sender.attach(&hardbeatSend,1);
Robsonik16 0:d546b014a1e3 225
Robsonik16 0:d546b014a1e3 226
Robsonik16 0:d546b014a1e3 227
Robsonik16 0:d546b014a1e3 228 while(1) {
Robsonik16 0:d546b014a1e3 229
Robsonik16 0:d546b014a1e3 230
Robsonik16 0:d546b014a1e3 231
Robsonik16 0:d546b014a1e3 232 if (my_gets(tekst,tekstSize)!=NULL) {
Robsonik16 0:d546b014a1e3 233
Robsonik16 0:d546b014a1e3 234 my_puts(tekst,tekstSize);
Robsonik16 0:d546b014a1e3 235 if(strcmp(tekst,"on"))flag = true;
Robsonik16 0:d546b014a1e3 236 if(strcmp(tekst,"off"))flag = false;
Robsonik16 0:d546b014a1e3 237 if(strcmp(tekst,"toggle"))flag = !flag;
Robsonik16 0:d546b014a1e3 238 led_green =flag;
Robsonik16 0:d546b014a1e3 239 }
Robsonik16 0:d546b014a1e3 240
Robsonik16 0:d546b014a1e3 241 }
Robsonik16 0:d546b014a1e3 242 }
Robsonik16 0:d546b014a1e3 243 */
Robsonik16 0:d546b014a1e3 244