Odpuzovac na hlodavce

Jaroslav Lukesh lukesh na seznam.cz
Úterý Červenec 21 21:58:35 CEST 2015


Dobrý den,

chcípla nám kočka a nemá kdo lovit takové to chlupaté s ocáskem, no a než se 
sežene a vyroste nové kotě v lovce, tak nás v září hlodavci ohlodají. Našel 
jsem nějaké teorie i schémátka (vyloveno z archive.org a fakt si vzpomínám 
jenom velmi matně kde to mohlo být, proto je v příloze), no a protože prostě 
nemám plnou lékárničku s tím co tam chtějí, tak jsem to předělal do arduina. 
No tak se mě nechtělo na rozpálenou půdu.

Nevím proč, ale zdá se mně, že to bylo 2x pomalejší než to mělo být 
(20-32-40kHz), no tak jsem udělal jednu úpravu a to tu, že oscilátor se 
nedělí dvěma a rovnou je brán jako Q0 (zde oznečené jako Q1). Schéma má 
číslování posunuté, je to tak i v tom programu. Axx je označené vývody 4011.

Mohl by někdo kvalifikovaně odhadnout, kolik microsec zhruba může zabrat to 
zpracování v cyklu FOR...? Stačí mi zhruba nástřel ze zkušeností, kolik by 
to mohlo být, nikoli výpočet. Chci to na upřesnění toho DelayMicro

A samozřejmě pokud máte nějaké tipy ohledně toho bitshiftu, či kritiku kódu 
že se to dělá jinak, tak se za to taky nebudu zlobit.

No a největší sranda je ta, že když jsem tenhle kód teďka hodil do starého 
prostředí Arduino-1.5.1, tak jel 2x rychleji, než z UECIDE, vek terém jsem 
to psal a na které jsou upravené i čísla u DelayMicrosec a to mám v obou 
vybranou stejnou desku (Arduino Nano). Asi mi v tom taky řádili 
mimozemšťani, jako komusi nedávno v C::B.

Děkuji, JL.

#include <avr/wdt.h> // watchdog#define LED 13#define OUT1 9;  // pravá 
kaskáda tranzistorů#define OUT2 10; // levábyte SW1 = 1;   // 0 = hmyz, 1 = 
zvířatavoid hash_4020_1(){    // binární dělička 4020    // schéma plašiče 
je blbě číslované, začíná Q1 místo Q0 jak je v datasheetu    byte Q01 = 0; 
byte Q04 = 0;    byte Q06 = 0;    byte Q08 = 0;    byte Q10 = 0;    byte Q12 
= 0;    byte Q13 = 0;    byte Q14 = 0;    byte A11 = 0;    byte A12 = 0; 
byte A09 = 0;    byte A10 = 0;                for (unsigned int i = 0; i <= 
16383 ; i++){     // pin QC = i, ale nějak to nevycházelo moc nízko, tak 
i=Q1            Q01 = i & 1 ; // kaskáda binárních děliček            Q04 = 
i>>3 & 1 ;            Q06 = i>>5 & 1 ;            Q08 = i>>7 & 1 ; 
Q10 = i>>9 & 1 ;            Q12 = i>>11 & 1 ;            Q13 = i>>12 & 1 ; 
Q14 = i>>13 & 1 ;            if (SW1 == 0) // 4011                A12 = Q12 
| Q08 ;            else                 A12 = Q12 | Q08 | Q04 ; 
A11 = not(A12 | Q01) ;            A10 = not(A11 | A12) ; 
bitWrite(PORTB,1,A11);// D9     // pravá kaskáda tranzistorů 
bitWrite(PORTB,2,A10);// D10    // levá            bitWrite(PORTB,5,Q14); // 
D13   // BLIK            if     (Q10 == 0 and Q13 == 0) 
delayMicroseconds(20); // řízení kmitočtu oscilátoru            else if(Q10 
== 1 and Q13 == 0) delayMicroseconds(14);            else if(Q10 == 0 and 
Q13 == 1) delayMicroseconds(14);            else if(Q10 == 1 and Q13 == 1) 
delayMicroseconds(10);         }    }void setup() {     wdt_enable(WDTO_8S); 
//interní watchdog 8 vteřin - hodnoty WDTO_15MS, 30MS, 60MS, 120MS, 250MS, 
500MS, 1S, 2S, 4S, 8S     pinMode(LED, OUTPUT);     digitalWrite(LED, 1); 
delay(1000);     digitalWrite(LED, 0);     digitalWrite(10, 0); 
tone(9,1000,100);     wdt_reset(); // watchdog OK}void loop() { 
hash_4020_1();     wdt_reset(); // watchdog OK} 
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150721/d2f22321/attachment.html>
------------- další část ---------------
A non-text attachment was scrubbed...
Name: PestRepeller2_.png
Type: image/png
Size: 9040 bytes
Desc: [žádný popis není k dispozici]
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150721/d2f22321/attachment.png>


Další informace o konferenci Hw-list