Vážený pane docente, zde Vám posílám své 3 programy a jedno schéma zapojení z kurzu praktické elektroniky. Jan Hřebec, účastník kurzu praktické elektroniky ----------------------- První program -------------------------------- // autor: Jan Hřebec // hraje písničku Běží liška k Táboru #include "mbed.h" #define SPEED 500 // délka čtvrt doby v ms DigitalOut repr(PA_4); // pin 10 int stav; int pozice; void ton(int per){ int us = 0; while(us70+70*sin((float)faze/500)){ myled1 = 1; } if(i>70+70*sin((float)(faze+1000)/500)){ myled2 = 1; } if(i>70+70*sin((float)(faze+2000)/500)){ myled3 = 1; } wait_us(100); } faze += 2 + foto*foto*foto*50; if(faze>3141){ faze = 0; } } } ----------------------- Třetí program -------------------------------- // autor: Jan Hřebec // snímač vzdálenosti (není to moc hezký kód) #include "mbed.h" #define SAMPLE 200 // počet pamatovaných hodnot DigitalOut led(PA_3); //pin9 LED DigitalOut buzz(PA_4); //pin10 reproduktor AnalogIn foto(PA_5); //pin11 vstup fototranzistoru int main() { float prumerBez[SAMPLE]; float prumerS[SAMPLE]; int ukazatelBez = 0; int ukazatelS = 0; int cas = 0; int perioda = 0; while(1) { //hlavní smyčka programu wait_us(10); if(cas % 200 == 0){ //blikani ledkou led = 0; } if(cas % 200 == 100){ led = 1; } if(cas%10 == 5){ //zapis hodnoty do prumeru if(cas % 200 < 100){ prumerBez[ukazatelBez] = foto; ukazatelBez = (ukazatelBez + 1) % SAMPLE; } else { prumerS[ukazatelS] = foto; ukazatelS = (ukazatelS + 1) % SAMPLE; } } if(perioda == 0){ //slabý signál, reproduktor nehraje buzz = 0; } else { // reproduktor hraje if(cas % perioda > perioda / 2){ buzz = 0; } else { buzz = 1; } } if(cas % 200 == 0){ // aktualizace frekvence reproduktoru float prumer = 0; for (int i = 0; i < SAMPLE; i++){ prumer += prumerS[i]; prumer -= prumerBez[i]; } if (prumer > 0.5){ prumer = sqrt(prumer + 1) * 10; perioda = (float)1000 / prumer; } else { perioda = 0; } } cas++; } }