Sample Servo / LCD code for KL46Z. Display slider value on LCD and set servo position according to slider. Sample code for RS

Fork of Servo by Simon Ford

Demonstrate SLIDER, SERVO and LCD

Servo output is on port pin PTC1 Servo must be powered independently from KL46Z Delay of 1-2s out of reset caused by unknown issue.

Committer:
edware
Date:
Wed Jul 12 04:38:54 2017 +0000
Revision:
5:b237e6e2ed77
Sample Servo / LCD code for KL46Z.; Display slider value on LCD and set servo position according to slider.; Sample code for RS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edware 5:b237e6e2ed77 1 #include "mbed.h"
edware 5:b237e6e2ed77 2 #include "Servo.h"
edware 5:b237e6e2ed77 3 #include "tsi_sensor.h"
edware 5:b237e6e2ed77 4 #include "SLCD.h"
edware 5:b237e6e2ed77 5
edware 5:b237e6e2ed77 6 /* This defines will be replaced by PinNames soon */
edware 5:b237e6e2ed77 7 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
edware 5:b237e6e2ed77 8 #define ELEC0 9
edware 5:b237e6e2ed77 9 #define ELEC1 10
edware 5:b237e6e2ed77 10 #elif defined (TARGET_KL05Z)
edware 5:b237e6e2ed77 11 #define ELEC0 9
edware 5:b237e6e2ed77 12 #define ELEC1 8
edware 5:b237e6e2ed77 13 #else
edware 5:b237e6e2ed77 14 #error TARGET NOT DEFINED
edware 5:b237e6e2ed77 15 #endif
edware 5:b237e6e2ed77 16
edware 5:b237e6e2ed77 17 Servo s1(PTC1);
edware 5:b237e6e2ed77 18 //AnalogIn p1(PTB0);
edware 5:b237e6e2ed77 19 SLCD slcd;
edware 5:b237e6e2ed77 20 float f,g;
edware 5:b237e6e2ed77 21
edware 5:b237e6e2ed77 22 int main() {
edware 5:b237e6e2ed77 23 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
edware 5:b237e6e2ed77 24 s1.calibrate(0.0009,220.0);
edware 5:b237e6e2ed77 25 f = 0;
edware 5:b237e6e2ed77 26 #if 0
edware 5:b237e6e2ed77 27 while (true) {
edware 5:b237e6e2ed77 28 f = 0;
edware 5:b237e6e2ed77 29 f=tsi.readPercentage();
edware 5:b237e6e2ed77 30 while (f>1) f-=1;
edware 5:b237e6e2ed77 31 slcd.printf("%1.3f",f);
edware 5:b237e6e2ed77 32 wait(0.05f);
edware 5:b237e6e2ed77 33 }
edware 5:b237e6e2ed77 34 #else
edware 5:b237e6e2ed77 35 while(1) {
edware 5:b237e6e2ed77 36 g =0;
edware 5:b237e6e2ed77 37 g=(float)tsi.readPercentage();
edware 5:b237e6e2ed77 38 while (g>1) g-=1; // Workaround for bug. Ensures 0<=g<1
edware 5:b237e6e2ed77 39 g *= 1.2; // Scale up by 20% for greater servo output range
edware 5:b237e6e2ed77 40 s1.write(g); // Set servo position
edware 5:b237e6e2ed77 41 //printf(" %f \r",p1.read());
edware 5:b237e6e2ed77 42 slcd.printf("%1.3f",(float)g); // Display value on LCD
edware 5:b237e6e2ed77 43 //wait(0.1f);
edware 5:b237e6e2ed77 44 f+=0.001;
edware 5:b237e6e2ed77 45 }
edware 5:b237e6e2ed77 46 #endif
edware 5:b237e6e2ed77 47 }