僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
測ってみた。こちら(緑色)は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や内容が変った場合はあしからず。