ecoder motor semaforo
Dependencies: mbed ssd1306_library SLCD
Revision 0:fb45c2082cb8, committed 2020-06-24
- Comitter:
- 20172573073
- Date:
- Wed Jun 24 23:39:49 2020 +0000
- Commit message:
- motor_RTOS
Changed in this revision
diff -r 000000000000 -r fb45c2082cb8 SLCD.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SLCD.lib Wed Jun 24 23:39:49 2020 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Sissors/code/SLCD/#ef2b3b7f1b01
diff -r 000000000000 -r fb45c2082cb8 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 24 23:39:49 2020 +0000 @@ -0,0 +1,213 @@ +#include "mbed.h" +#include "rtos.h" +#include "ssd1306.h" +#include "SLCD.h" + +SLCD slcd; +SSD1306 lcd (D7,D6); +InterruptIn botoncito(PTC12); +InterruptIn botoncito2(PTC3); +InterruptIn botoncito3(D2); +PwmOut pwm1(D5); +PwmOut pwm2(D8); +DigitalOut mo(D9); +int contador=0,a=1,c=0,r,h,q; +bool s=0,k=0; +Serial pc(USBTX,USBRX); +Semaphore one_slot(1); +Mutex mutex1; + + +Thread thread; +Thread thread1; +Thread thread2; +Thread thread3; +Thread thread4; + + +void herra() +{ + one_slot.release(); + one_slot.wait(); + r=r+1; + one_slot.release(); +} + +void boton1() +{ + one_slot.release(); + one_slot.wait(); + //one_slot.try_acquire(); + s=!s; + mo=s; + one_slot.release(); +} +void boton2() +{ + one_slot.release(); + one_slot.wait(); + NVIC_SystemReset (); + one_slot.release(); +} + + + +void motor1() +{ + while(1) { + if(s==1) { + c++; + switch(c) { + case 1: + pwm2=0.3; + q=30; + mo=s; + Thread::wait(2000); + break; + case 2: + pwm2=0.5; + q=50; + mo=s; + Thread::wait(2000); + break; + case 3: + pwm2=0.7; + q=70; + mo=s; + Thread::wait(2000); + break; + case 4: + pwm2=1; + q=100; + mo=s; + Thread::wait(6000); + break; + case 5: + pwm2=0.7; + q=70; + mo=s; + Thread::wait(2000); + break; + case 6: + pwm2=0.5; + q=50; + mo=s; + Thread::wait(2000); + break; + case 7: + q=30; + pwm2=0.3; + mo=s; + Thread::wait(2000); + c=0; + break; + + } + } + } +} + +void oled() +{ + while(1) { + + + if(k==0){ + lcd.init(); + lcd.speed (SSD1306::Fast); + lcd.cls(); + lcd.locate (1,0); + time_t seconds = time(NULL); + lcd.printf("Fecha= %s", ctime(&seconds)); + lcd.locate (4,1); + lcd.printf ("nivel: %d ",q); + lcd.locate (5,1); + lcd.printf ("rpm: %d ",h); + lcd.redraw(); + + }else if(k==1){ + lcd.init(); + lcd.speed (SSD1306::Fast); + lcd.cls(); + lcd.locate (2,1); + lcd.printf ("error"); + lcd.locate (5,0); + lcd.printf ("por favor revise el sistema"); + lcd.redraw(); + } + + Thread::wait(300); + } +} +void s7() +{ + while(1) { + if(s==1 && r==0){ + k=1; + + slcd.Home(); + slcd.putc('e'); + slcd.putc('r'); + r=0; + Thread::wait(1000); + slcd.clear(); + + }else{ + k=0; + slcd.Home(); + h=r*60; + h=h/4; + slcd.printf("%d",h); + r=0; + Thread::wait(1000); + slcd.clear(); + + } + } +} +void serial() +{ + while(1) { + + one_slot.release(); + one_slot.wait(); + + time_t seconds = time(NULL); + + char buffer2[32]; + strftime(buffer2, 32, "%m/%d/%y", localtime(&seconds)); + pc.printf("%s", buffer2); + + char buffer1[32]; + strftime(buffer1, 32, "%H:%M:%S", localtime(&seconds)); + pc.printf(" , %s", buffer1); + if(k==1) { + pc.printf(" , %d ciclo, %d rpm, error",q,h); + + } else { + pc.printf(" , %d ciclo, %d rpm, ok",q,h); + } + pc.printf("\n\r"); + + Thread::wait(100); + one_slot.release(); + + } +} +int main() +{ + + set_time(1593041944); + botoncito.mode(PullUp); + botoncito.fall(&boton1); + botoncito2.mode(PullUp); + botoncito2.fall(&boton2); + botoncito3.mode(PullUp); + botoncito3.fall(&herra); + + thread1.start(oled); + thread2.start(s7); + thread3.start(serial); + thread4.start((motor1)); + thread4.join(); +} \ No newline at end of file
diff -r 000000000000 -r fb45c2082cb8 mbed-os.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Jun 24 23:39:49 2020 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#c9e63f14085f5751ff5ead79a7c0382d50a813a2
diff -r 000000000000 -r fb45c2082cb8 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Jun 24 23:39:49 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400 \ No newline at end of file
diff -r 000000000000 -r fb45c2082cb8 ssd1306_library.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ssd1306_library.lib Wed Jun 24 23:39:49 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/rodriguj/code/ssd1306_library/#57209a7e9cba