CodeLab技術ブログ

プログラミング技術まとめ

2015年11月30日
から CodeLab
[Cakephp]CakeShellでメモリ使用量オーバーで起動できない場合。 はコメントを受け付けていません。

[Cakephp]CakeShellでメモリ使用量オーバーで起動できない場合。

cakeは比較的メモリ要求量が多いフレームワークです。 デフォルトでも動作しますが、多少増やしておいた方が良いですし、プログラム内でも使用量に留意したほうが賢明です。 しかし、Shellでの起動の場合、設定しても解決しな … 続きを読む

2015年11月7日
から CodeLab
Raspberry pi2でI2C通信をやってみる はコメントを受け付けていません。

Raspberry pi2でI2C通信をやってみる

今回はRaspberrypi2でSPI通信をやってみることにします。 GPIOでは1つのポートはON/OFFの1ビットのデータしか表現できません。 これではいくつポートがあっても足りません。 そこで、I2CやSPIなどの … 続きを読む

Raspberrypi2でGPIOの入力

2015年11月7日 から CodeLab | Raspberrypi2でGPIOの入力 はコメントを受け付けていません。

ということで、前回に引き続き、今回はGPIOでの入力をしてみたいと思います。

今回はPORT27と3.3Vラインをタクトスイッチで接続。並列でプルダウン抵抗をつないてみました。
wiringPIで試してみましょう

# gpio -g mode 27 in ##ポート27をINモードにする
# gpio read 27

タクトスイッチを押しながらリードコマンドを発行すると1が、OFFにして発行すると0が返ってくると思います。

では、プログラムで試してみます。
今回は、PORT27のタクトスイッチが押されたら、PORT22のLEDの表示状態を変えるプログラムを書いてみます。

#include <wiringpi .h>
#define GPIO22 22
#define GPIO27 27
int main(void){
    int i;
    //初期設定
    if(wiringPiSetupGpio() == -1) return 1;

    pinMode(GPIO27,INPUT);
    pinMode(GPIO22,OUTPUT);

    while(1){
//チャタリング対策 100ms待ってONなら入力されたとみなす
        if(digitalRead(GPIO27)==0){
            continue;
        }
        delay(100);
        if(digitalRead(GPIO27)==0){
            continue;
        }
//スイッチが離されるまで待つ
        while(digitalRead(GPIO27));
//LEDの表示変更
        digitalWrite(GPIO22,!digitalRead(GPIO22));


    }
    return 0;
}

コンパイルは前回と同じです。
gcc -o test test.cpp -lwiringPi

どうでしょうか?タクトスイッチが押されるたびに、LEDが点灯・消灯を繰り返すはずです。
※チャタリング対策(スイッチが入ったり切ったりする間に、一瞬、ON/OFFが繰り返されてしまう現象)はかなり適当ですが、誤動作はなさそうです。

このように、非常に簡単に制御することが可能です。
高速なデバイスは難しいかもしれませんが、簡単なON/OFFのリード、ライトであれば十分実用に足るのではないかと思います。

2015年11月7日
から CodeLab
viエディタでカーソルキーを押すとABCDが出る問題 はコメントを受け付けていません。

viエディタでカーソルキーを押すとABCDが出る問題

RaspberryPiでviでテキスト入力をしていたら、なぜかカーソルキーが効かずABCDが出てしまった。 どうも、”Vi互換モード”というので動いていることが原因らしい。 設定を変えるには以下の … 続きを読む