
URS - LV11 - HMI - 3. zadatak - Servo
Dependencies: mbed
main.cpp@0:0bb9abf8a951, 2022-01-19 (annotated)
- 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?
User | Revision | Line number | New 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 | } |