URS - LV11 - HMI - 3. zadatak - Servo

Dependencies:   mbed

main.cpp

Committer:
dfraj
Date:
2022-01-19
Revision:
0:0bb9abf8a951
Child:
1:a59853df510d

File content as of revision 0:0bb9abf8a951:

#include "mbed.h"

Serial nextion(p28, p27); 
PwmOut servo(p21);            

char buffer[20]; 
int znak = 0; 

uint8_t pozicija = 0;

void Rx_interrupt(void){
    char c;

    if(nextion.readable()) {
        c = nextion.getc();
        buffer[znak] = c;
        znak++;

        if ((znak >= 3) && (buffer[znak-1] == 0xff) && (buffer[znak-2] == 0xff) && (buffer[znak-3] == 0xff)) {  
            buffer[znak-3] = '\0';
            pozicija = 0;
            for(int i = 0; i < 3; i++) {
                if(buffer[i] == '\0') break;
                pozicija = pozicija * 10 + (buffer[i] - 48);
            }
            servo.pulsewidth_us(5.56*pozicija+1000);
            memset(buffer,0,strlen(buffer));
            znak = 0;
        }
    }
} 

int main(){
    nextion .attach(&Rx_interrupt, Serial::RxIrq); 
    servo.period(0.02);    
    while (1) {
        wait(1.0);     
    }
}