#include "adcdma.h" #include "hdo.h" /////////////////////////////////////////////////////////////// /* Tohle je trochu komplexnější příklad. * * Na vstup PC4 přivádíme ze síťového transformátoru napětí * cca 0.7-1 V efektivního napětí. Vstup musí být tedy připojen * na odporový dělič 1:1, zapojený mezi VCC a GND a trafo k tomuto * bodu připojíme přes vhodný kondenzátor, tak, aby střídavé napětí * nebylo limitováno. * Firmware z toho Goertzelovým algoritmem vytáhne signál HDO (zde 216.6 Hz) * a vyhodnotí jednotlivé pulsy. Velikost pulsu je vypisována na sériový * port (PD5, 115200 Bd) a pokud překročí hodnotu trigger, rozsvítí LED na PD2 (aktivní v L). * Dále je pak z pulsů sestaven telegram, opět vypsán sériový port, * a pokud se shoduje s povelem uvedeným v konstruktoru Hdo, sepne / rozepne * relé na portu PD4 (aktivní v H) podle vysílaného signálu. * Celé se to vejde do 3.5 KiB flash a 1 KiB RAM, i v takto malém procesoru * tedy zbývá poměrně dost místa na jiné kraviny. * * Tvar výpisů je tento: * A1---B---4---- DP: VVZZ ZZZV ZZZZ VVZV * A--3-B--34---- DP: --VV Z-V- -V-V ---- * A1---B-------8 DP: VVVZ VZVV ZZZV -VZV * A1---B---45678 DP: ---Z -Z-V Z-Z- -VZV * * * !!! Krystal 24 MHz nutný !!! * */ /////////////////////////////////////////////////////////////// static AdcDma adc; static Hdo hdo ("A1B8DP1"); int main () { adc.attach(hdo); for (;;) { hdo.pass(); } return 0; }