トップ «前の日記(2014-04-30(Wed)) 最新 次の日記(2014-05-03(Sat))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2014-05-01(Thu) あら日付変った

少々LEDが暗かったのは

analog

写真にはかなり明るく写っているが、実際は真上以外、かなり暗い。
電流を測ってみたが、やはり低すぎるようだ。
11mAほどしか出ていないみたい。

デジタルでも

digital

測ってみた。こちら(緑色)は8-9mAしかなく、赤より色合いが目立たない ことも手伝ってか、かなり暗く感じられた。

抵抗器も測ってみた。36Ω前後。この接続方式なら抵抗器二つを常に通過している。
でも、なんか計算が合わない気がする。
赤、緑とも16-18mAになる筈と思ってたのだけど。

点灯してすぐ消灯してまた点灯して

C(BCM2835)とpython(RPi.GPIO)で 特定のLEDを点けて消して...を繰り返してみた。
同じ回数は無理っぽいので適当に。

C は BCM2835のexampleのblink.c を借りて 適当に書き換えて50000000回。

// gcc -Wall 28-29.c -l bcm2835
#include <bcm2835.h>
#define PIN0 RPI_V2_GPIO_P5_04
#define PIN1 RPI_V2_GPIO_P5_03
int main(int argc, char **argv)
{
    if (!bcm2835_init())
        return 1;
    bcm2835_gpio_fsel(PIN0, BCM2835_GPIO_FSEL_OUTP);
    bcm2835_gpio_fsel(PIN1, BCM2835_GPIO_FSEL_OUTP);
    bcm2835_gpio_write(PIN0, LOW);
    int blink_times = 50000000;
    while (blink_times)
    {
        bcm2835_gpio_write(PIN1, HIGH);
        bcm2835_gpio_write(PIN1, LOW);
        blink_times--;
    }
    bcm2835_close();
    return 0;
}
$ time sudo ./a.out 
 
real    0m10.086s
user    0m9.990s
sys     0m0.010s

次いでPython。100000回。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from twelve_led_on_off import led_on
from twelve_led_on_off import led_off
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
repeat_time = 100000
led = 1
for i in range(repeat_time):
    led_on(led)
    led_off(led)
GPIO.cleanup()
$ time sudo python one_test.py 
 
real    0m8.521s
user    0m8.400s
sys     0m0.020s
$ echo '10.086/50000000' | bc -l
.00000020172000000000
 
$ echo '8.521/100000' | bc -l
.00008521000000000000

一周期あたりCが約200ナノ秒、 Pythonが85マイクロ秒といったところか。


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。