/********************************************************************* * analog example for Versa1.0 * Analog capture on connectors K1, K2, K3 and K5. *********************************************************************/ #define BOARD Versa1 #include #include #include t_delay mainDelay; DCMOTOR_DECLARE(A); DCMOTOR_DECLARE(B); void setup(void) { //----------- Setup ---------------- fruitInit(); pinModeDigitalOut(LED); // set the LED pin mode to digital out digitalClear(LED); // clear the LED delayStart(mainDelay, 5000); // init the mainDelay to 5 ms //----------- Analog setup ---------------- analogInit(); // init analog module analogSelect(0, MOTA_CURRENT); // assign MotorA current sense to analog channel 0 analogSelect(1, MOTB_CURRENT); // assign MotorB current sense to analog channel 1 //----------- dcmotor setup ---------------- dcmotorInit(A); dcmotorInit(B); } void loop() { // ---------- Main loop ------------ fraiseService(); // listen to Fraise events analogService(); // analog management routine if(delayFinished(mainDelay)) // when mainDelay triggers : { delayStart(mainDelay, 5000); // re-init mainDelay analogSend(); // send analog channels that changed DCMOTOR_COMPUTE(A,SYM); DCMOTOR_COMPUTE(B,SYM); } } // Receiving void fraiseReceiveChar() // receive text { unsigned char c; c=fraiseGetChar(); if(c=='L'){ //switch LED on/off c=fraiseGetChar(); digitalWrite(LED, c!='0'); } else if(c=='E') { // echo text (send it back to host) printf("C"); c = fraiseGetLen(); // get length of current packet while(c--) printf("%c",fraiseGetChar());// send each received byte putchar('\n'); // end of line } } void fraiseReceive() // receive raw { unsigned char c; c=fraiseGetChar(); switch(c) { case 120 : DCMOTOR_INPUT(A) ; break; case 121 : DCMOTOR_INPUT(B) ; break; } }