Studienleistung 1 FINAL (BETA-5)

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 Ticker systick;
00003 volatile char bstandby;
00004 DigitalOut spg(p21); // U versorgung schalter
00005 DigitalOut spg2(p22);  // U versorgung schalter 
00006 DigitalOut rightled(LED4);
00007 DigitalOut leftled(LED1);
00008 DigitalIn left(p8);
00009 DigitalIn right(p14);
00010 Serial pc(USBTX, USBRX);
00011 Timer l;    // Plink Timmer links
00012 Timer r;    // Blinktimmer Rechts
00013 Timer pl;   //BRELLTIMER LINKS; brellen und timeverschiebung für zustand dauerhaft plinken
00014 Timer pr;   // BRELLTIMER RECHTS; brellen und timeverschiebung für zustand dauerhaft Plinken
00015 int   anzleft;
00016 int  anzright;
00017 int auswahlleft;
00018 int auswahlright;
00019 //==================================================00
00020 void vTimer(void){
00021 bstandby =1;
00022 }
00023 //================================================
00024 void blinkswitch(DigitalOut *led, int *anz, int *auswahl, Timer *tim){ // tim = l oder r 
00025     switch(*auswahl){
00026     case 0: *led =0;
00027     break;
00028     case 1:{
00029        if(tim->read()>= 0.3 || *anz == 8){  *led =! *led; tim->reset() ; *anz -=1; pc.printf("   %d",*anz);}
00030         if(*anz == 0) *auswahl = 0;}
00031     break;
00032     case 2:{
00033     if((*tim).read() >= 0.3){  *led =! *led ; (*tim).reset();pc.printf("BIN IN SEc 2  " );}
00034     
00035     }
00036     break;
00037     
00038     }
00039 }
00040 
00041 //=?======================================================000
00042  
00043 int main() {
00044 spg = 1; // Spannungsversorgung der angeschloosenen schalter
00045 spg2 =1;  // Spannungsversorgung der angeschlossenen schalter
00046 auswahlleft = 0;
00047 auswahlright = 0;
00048 
00049     while(1) {
00050    // systick.attach_us(&vTimer, 200);
00051     if(left == 1){
00052    //pc.printf("LINKS LIEGHT AN \n\n");
00053     if(auswahlleft == 0 && pl.read() >= 0.05){auswahlleft =1; anzleft =8; l.start();pl.reset();pl.start();}
00054     if(auswahlleft ==1 && pl.read()>= 0.5) {auswahlleft = 2;pl.stop();pl.reset();} 
00055     }else {
00056         if(auswahlleft ==2)auswahlleft =0;
00057         pl.start();}
00058     blinkswitch(&leftled,&anzleft, &auswahlleft, &l);
00059     
00060     if(right ==1){
00061         if(auswahlright ==0 && pr.read() >= 0.05) { auswahlright =1; anzright= 8; r.start () ; pr.reset(); pr.start();}
00062         if(auswahlright == 1 && pr.read() >=0.5 ) { auswahlright =2 ; pr.stop(); pr.reset();}
00063         }else {
00064             if(auswahlright == 2) auswahlright =0;
00065             pr.start();}
00066         blinkswitch(&rightled,&anzright, &auswahlright, &r);
00067    // while(bstandby == 0);
00068    // bstandby = 1;
00069     };
00070 }