CdS の明るさと関係なく、ボリュームの位置に比例してサーボをまわすには、プログラムのmain関数を次のように変更します (または vr-servo.zip内にもあります)。
(変更後)
void
main(void)
{
unsigned char vr, j = 0;
EnableInterrupts;
PeriphInit();
for(;;) // Forever
{ // run in 50Hz
ADCSC1 = 0x1; // ADC conversion start
while ((ADCSC1 & 0x80) == 0) // Wait for conversion to complete
;
vr = ADCRL;
// Make a pluse (0.7ms - 2.1ms)
PTAD |= 0x4; // set H
Delay_100us(7); // 0.7ms delay
Delay_servo(vr); // 0-1.4ms delay (0x5.5us - 255x5.5us)
PTAD &= 0xfb; // set L
// Flash LED
j ++;
vr = vr/8;
if (j > vr) {
// Once for vr/8*20ms
// Toggles LED
PTAD ^= 0x01;
j = 0;
}
Delay_100us(200); // 20ms delay
}
}
戻る
(本を出しました:
はじめてのPICアセンブラ入門|
センサとデジカメで遊ぶ電子工作入門)
Copyright(c) 2007 光永 法明 non <at mark > ever.sanda.gr.jp