URS - LV11 - HMI - 3. zadatak - Servo

Dependencies:   mbed

Committer:
dfraj
Date:
Wed Jan 19 14:42:24 2022 +0000
Revision:
0:0bb9abf8a951
Child:
1:a59853df510d
URS - LV11 - 3. zadatak - Servo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dfraj 0:0bb9abf8a951 1 #include "mbed.h"
dfraj 0:0bb9abf8a951 2
dfraj 0:0bb9abf8a951 3 Serial nextion(p28, p27);
dfraj 0:0bb9abf8a951 4 PwmOut servo(p21);
dfraj 0:0bb9abf8a951 5
dfraj 0:0bb9abf8a951 6 char buffer[20];
dfraj 0:0bb9abf8a951 7 int znak = 0;
dfraj 0:0bb9abf8a951 8
dfraj 0:0bb9abf8a951 9 uint8_t pozicija = 0;
dfraj 0:0bb9abf8a951 10
dfraj 0:0bb9abf8a951 11 void Rx_interrupt(void){
dfraj 0:0bb9abf8a951 12 char c;
dfraj 0:0bb9abf8a951 13
dfraj 0:0bb9abf8a951 14 if(nextion.readable()) {
dfraj 0:0bb9abf8a951 15 c = nextion.getc();
dfraj 0:0bb9abf8a951 16 buffer[znak] = c;
dfraj 0:0bb9abf8a951 17 znak++;
dfraj 0:0bb9abf8a951 18
dfraj 0:0bb9abf8a951 19 if ((znak >= 3) && (buffer[znak-1] == 0xff) && (buffer[znak-2] == 0xff) && (buffer[znak-3] == 0xff)) {
dfraj 0:0bb9abf8a951 20 buffer[znak-3] = '\0';
dfraj 0:0bb9abf8a951 21 pozicija = 0;
dfraj 0:0bb9abf8a951 22 for(int i = 0; i < 3; i++) {
dfraj 0:0bb9abf8a951 23 if(buffer[i] == '\0') break;
dfraj 0:0bb9abf8a951 24 pozicija = pozicija * 10 + (buffer[i] - 48);
dfraj 0:0bb9abf8a951 25 }
dfraj 0:0bb9abf8a951 26 servo.pulsewidth_us(5.56*pozicija+1000);
dfraj 0:0bb9abf8a951 27 memset(buffer,0,strlen(buffer));
dfraj 0:0bb9abf8a951 28 znak = 0;
dfraj 0:0bb9abf8a951 29 }
dfraj 0:0bb9abf8a951 30 }
dfraj 0:0bb9abf8a951 31 }
dfraj 0:0bb9abf8a951 32
dfraj 0:0bb9abf8a951 33 int main(){
dfraj 0:0bb9abf8a951 34 nextion .attach(&Rx_interrupt, Serial::RxIrq);
dfraj 0:0bb9abf8a951 35 servo.period(0.02);
dfraj 0:0bb9abf8a951 36 while (1) {
dfraj 0:0bb9abf8a951 37 wait(1.0);
dfraj 0:0bb9abf8a951 38 }
dfraj 0:0bb9abf8a951 39 }